Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 06c3136566 | |||
| abaf55e9b1 | |||
| 3a2dd0b0aa | |||
| 9486b37300 | |||
| 0fed1acfd8 | |||
| d7c2300021 | |||
| fca333299d | |||
| a13b03a136 | |||
| 48054f5bf1 | |||
| 51f2897a33 | |||
| 7c3cfca86c | |||
| 352af15984 | |||
| 2c42933d58 | |||
| 2e68362836 | |||
| c6736db7ea | |||
| c005f03af8 | |||
| 459aabcc86 | |||
| ad33097d5e | |||
| 8d7735735e | |||
| 25bbc46925 | |||
| 5a26b0ee35 | |||
| 09a397bed2 | |||
| a33039bcae | |||
| 0ebd125266 | |||
| fd16a6b6c3 | |||
| cf19f764c7 | |||
| 88850d6c25 | |||
| b173c61575 | |||
| 3b866f0952 | |||
| 94db524a11 | |||
| f27616ce1f | |||
| 7f75af7119 | |||
| 38e42723af | |||
| f4ec60c9e0 | |||
| 01394b1978 | |||
| 9b7db08fcf | |||
| 6d7cdef223 | |||
| d9c35fe02a | |||
| 250b3fa406 | |||
| a5a3f16177 | |||
| ffa7e21c18 | |||
| 4608c05df0 | |||
| 56ff5a0213 | |||
| 014fde301c | |||
| 0080a42423 | |||
| 2035a4c855 | |||
| 4dc6a190fa | |||
| e0db322262 | |||
| 8f1bb45e42 | |||
| f39aefd28f | |||
| 2cfc43dbfd | |||
| 768fcc4f05 | |||
| 727491f99b | |||
| c5f1c3a340 | |||
| a78311104a | |||
| 45e78ef184 | |||
| 7f0d39b684 |
@@ -179,6 +179,7 @@
|
||||
<Content Include="fmtall\CPL_00all.xml" />
|
||||
<Content Include="fmtall\CPL_01all.xml" />
|
||||
<Content Include="fmtall\CPL_02all.xml" />
|
||||
<Content Include="fmtall\CPL_04all.xml" />
|
||||
<Content Include="fmtall\CPL_03all.xml" />
|
||||
<Content Include="fmtall\CPSAMGDataall.xml" />
|
||||
<Content Include="fmtall\CPSAMGDEVall.xml" />
|
||||
|
||||
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.
@@ -844,6 +844,10 @@ namespace ROEditor
|
||||
AccPageID = " ";
|
||||
WriteString(AccPageID);
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
string moddt = ROdatabase.RODB_GetModDateTime(elem.GetAttribute("RecID"), elem.GetAttribute("Table"));
|
||||
if (!string.IsNullOrEmpty(moddt)) WriteString(moddt);
|
||||
|
||||
// Save the ID and offset entry for the current ID
|
||||
IdsAndOffsets.Add(RORecID, startFST);
|
||||
|
||||
|
||||
@@ -355,6 +355,7 @@ namespace RODBInterface
|
||||
public abstract string RODB_GetDBServerForAbout();
|
||||
public abstract string RODB_HasBeenConverted();
|
||||
public abstract bool RODB_WriteSqlConnectToAccess(string newConectStr);
|
||||
public abstract string RODB_GetModDateTime(string Recid, string table);
|
||||
#endregion
|
||||
|
||||
public RODB()
|
||||
@@ -3082,6 +3083,27 @@ namespace RODBInterface
|
||||
return GrpCnt;
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//Get the Modification Date / Time for the RO
|
||||
public override string RODB_GetModDateTime(string Recid, string table)
|
||||
{
|
||||
using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(strDatabaseConnectionCommand))
|
||||
{
|
||||
connection.Open();
|
||||
using (System.Data.OleDb.OleDbCommand command = connection.CreateCommand())
|
||||
{
|
||||
//Unfortunately Access wont let you paramaterize the table name
|
||||
command.CommandText = $"SELECT ModDateTime FROM {Regex.Replace(table, "[^a-zA-Z0-9]", "")} WHERE RecID = @Value";
|
||||
command.Parameters.Add(new System.Data.OleDb.OleDbParameter
|
||||
{
|
||||
OleDbType = System.Data.OleDb.OleDbType.VarChar,
|
||||
ParameterName = "@Value",
|
||||
Value = Recid
|
||||
});
|
||||
return command.ExecuteScalar().ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2653,6 +2653,34 @@ namespace RODBInterface
|
||||
}
|
||||
return GrpCnt;
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//Get the Modification Date / Time for the RO
|
||||
public override string RODB_GetModDateTime(string Recid, string table)
|
||||
{
|
||||
using (SqlConnection connection = new SqlConnection(strDatabaseConnectionCommand))
|
||||
{
|
||||
connection.Open();
|
||||
using (SqlCommand command = connection.CreateCommand())
|
||||
{
|
||||
command.CommandText = $"SELECT ModDateTime FROM ROALL WHERE RecID = @Value AND ROTable = @table";
|
||||
command.Parameters.Add(new SqlParameter
|
||||
{
|
||||
SqlDbType = SqlDbType.VarChar,
|
||||
ParameterName = "@Value",
|
||||
Value = Recid
|
||||
});
|
||||
command.Parameters.Add(new SqlParameter
|
||||
{
|
||||
SqlDbType = SqlDbType.VarChar,
|
||||
ParameterName = "@table",
|
||||
Value = table
|
||||
});
|
||||
|
||||
return command.ExecuteScalar().ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
public static bool TestConnect(string constring)
|
||||
{
|
||||
|
||||
@@ -1817,7 +1817,7 @@ ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete a
|
||||
select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
where ii.DeleteStatus > 0
|
||||
update ga set ga.contentauditid = (select max(auditid) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
update ga set ga.contentauditid = (select ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0
|
||||
end
|
||||
go
|
||||
|
||||
@@ -5227,7 +5227,7 @@ CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
declare @RevisionID int
|
||||
set @RevisionID = (select revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID)
|
||||
set @RevisionID = (select top 1 revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID order by revisionid desc)
|
||||
SELECT
|
||||
[RevisionID],
|
||||
[ItemID],
|
||||
@@ -5547,6 +5547,12 @@ ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation'
|
||||
GO
|
||||
|
||||
-------
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Modify date: 07/14/2026
|
||||
-- Description: Reworked ve_GetParentItem for Performance improvement
|
||||
-- =============================================
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_GetParentItem] Script Date: 03/28/2012 17:58:48 ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParentItem]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||
DROP FUNCTION [ve_GetParentItem];
|
||||
@@ -5555,35 +5561,46 @@ GO
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
CREATE OR ALTER FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @ParentID int;
|
||||
WITH Itemz([ItemID],[IsFound]) as
|
||||
WITH Itemz([ItemID]) as
|
||||
(
|
||||
select ii.itemid,0 from items ii where ii.itemid = @ItemID
|
||||
select ii.itemid from items ii WITH (NOLOCK) where ii.itemid = @ItemID
|
||||
union all
|
||||
select ii.previousid,0 from items ii
|
||||
select ii.previousid from items ii WITH (NOLOCK)
|
||||
join itemz zz on ii.itemid = zz.itemid
|
||||
where ii.previousid is not null
|
||||
and zz.isfound = 0
|
||||
union all
|
||||
select ii.itemid,1
|
||||
from parts pp
|
||||
join itemz zz on pp.itemid = zz.itemid
|
||||
join items ii on ii.contentid = pp.contentid
|
||||
)
|
||||
select top 1 @ParentID = itemid from itemz
|
||||
where isfound = 1 OPTION (MAXRECURSION 10000)
|
||||
select top 1 @ParentID = ii.itemid
|
||||
from itemz
|
||||
inner join parts pp WITH (NOLOCK) on pp.itemid = itemz.itemid
|
||||
inner join items ii WITH (NOLOCK) on ii.contentid = pp.contentid
|
||||
OPTION (MAXRECURSION 10000)
|
||||
|
||||
RETURN @ParentID
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetParentItem] Succeeded'
|
||||
ELSE PRINT 'ScalerFunction [vefn_GetParentItem] Error on Creation'
|
||||
go
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_PartsItemID')
|
||||
DROP INDEX [IX_PartsItemID] ON [dbo].[tblParts];
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX IX_PartsItemID
|
||||
ON [dbo].[tblParts] ([ItemID] ASC)
|
||||
INCLUDE([ContentID],[DeleteStatus],[FromType]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
PRINT 'Added IX_PartsItemID Index. Speeds up Getting Parent Items'
|
||||
GO
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_CanTransitionBeCreated] Script Date: 10/14/2012 02:03:30 ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||
DROP FUNCTION [vefn_CanTransitionBeCreated];
|
||||
@@ -13541,34 +13558,6 @@ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAllDocVers
|
||||
DROP PROCEDURE [deleteAllDocVersionPdfs];
|
||||
GO
|
||||
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2017 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE PROCEDURE [dbo].[deleteAllDocVersionPdfs]
|
||||
|
||||
(
|
||||
@VersionID int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN TRY -- Try Block
|
||||
BEGIN TRANSACTION
|
||||
DELETE [Pdfs]
|
||||
WHERE [DocID] IN(select EE.DocID from vefn_GetVersionItems(cast(@VersionID as varchar(20))) VI
|
||||
Join Entries EE ON EE.ContentID= VI.ContentID)
|
||||
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
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: deleteAllDocVersionPdfs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: deleteAllDocVersionPdfs Error on Creation'
|
||||
GO
|
||||
/****** Object: StoredProcedure [addFiguresByROFstIDandImageIDs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFiguresByROFstIDandImageIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [addFiguresByROFstIDandImageIDs];
|
||||
@@ -17169,6 +17158,7 @@ GO
|
||||
[roid] [varchar](50) NOT NULL,
|
||||
[appid] [varchar](max) NULL,
|
||||
[value] [varchar](max) NULL,
|
||||
[moddatetime] [datetime] NULL,
|
||||
CONSTRAINT [PK_RofstChild] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[RofstChildID] ASC
|
||||
@@ -17303,6 +17293,23 @@ GO
|
||||
End -- Rofst Tables
|
||||
Go
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 03/30/2026
|
||||
-- Description: Store RO Modification date/time
|
||||
-- =============================================
|
||||
|
||||
--- Add Column to store RO Modification date/time if it does not already exist
|
||||
IF NOT EXISTS(SELECT *
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'RofstChild'
|
||||
AND COLUMN_NAME = 'moddatetime')
|
||||
ALTER TABLE RofstChild ADD moddatetime datetime NULL;
|
||||
go
|
||||
-- Display the status
|
||||
IF (@@Error = 0) PRINT 'Altered table [RofstChild] Succeeded for moddatetime'
|
||||
ELSE PRINT 'Altered table [RofstChild] Error on Alter for moddatetime'
|
||||
go
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------------------
|
||||
@@ -19705,6 +19712,7 @@ GO
|
||||
@roid VarChar(50),
|
||||
@appid VarChar(Max) = null,
|
||||
@value VarChar(Max) = null,
|
||||
@ModDateTime DateTime = null,
|
||||
@missingDefaultValue VarChar(Max) = null
|
||||
)
|
||||
With Execute as Owner
|
||||
@@ -19722,8 +19730,8 @@ GO
|
||||
Set @missingDefaultValue = '[TBD]';
|
||||
|
||||
-- Create Rofst Child/Group Record --> [Roid = (12) Digits]
|
||||
Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value])
|
||||
Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, REPLACE(REPLACE(@value, '&123;', '{'), '&125;', '}'));
|
||||
Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, moddatetime, [value])
|
||||
Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @ModDateTime, REPLACE(REPLACE(@value, '&123;', '{'), '&125;', '}'));
|
||||
|
||||
|
||||
-- Check for appid, if exists, then insert the default value for each return type if multi-value
|
||||
@@ -24777,6 +24785,256 @@ IF (@@Error = 0) PRINT 'Procedure Creation: [GetMissingDocsByUnit] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [GetMissingDocsByUnit] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ROFST_changes]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
|
||||
DROP FUNCTION [vefn_ROFST_changes];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 03/31/2026
|
||||
Description: Function for ROs that updated in latest RO FST Load
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE FUNCTION [dbo].[vefn_ROFST_changes](@OrigFSTID int, @NewFSTid int, @VersionID int)
|
||||
RETURNS @ROIDs TABLE
|
||||
(
|
||||
[roid] varchar(50)
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
insert into @ROIDs
|
||||
SELECT DISTINCT ISNULL(RofstChild.roid,previous.roid)
|
||||
FROM
|
||||
(SELECT * FROM RofstChild where RofstChild.RofstID = @NewFSTid) RofstChild
|
||||
FULL OUTER JOIN
|
||||
(SELECT * FROM RofstChild previous where previous.RofstID = @OrigFSTID) previous
|
||||
ON previous.dbiID = RofstChild.dbiID AND previous.ID = RofstChild.ID
|
||||
where
|
||||
ISNULL(previous.RofstID,'') != ISNULL(RofstChild.RofstID,'')
|
||||
AND
|
||||
(
|
||||
(RofstChild.RofstID = @NewFSTid OR RofstChild.RofstID IS NULL)
|
||||
AND
|
||||
(previous.RofstID = @OrigFSTID OR previous.RofstID IS NULL)
|
||||
)
|
||||
AND
|
||||
(previous.moddatetime IS NULL
|
||||
OR RofstChild.moddatetime IS NULL
|
||||
OR RofstChild.moddatetime != previous.moddatetime
|
||||
OR RofstChild.title != previous.title
|
||||
OR RofstChild.value != previous.value
|
||||
)
|
||||
|
||||
RETURN
|
||||
END
|
||||
go
|
||||
|
||||
IF (@@Error = 0) PRINT 'TableFunction [vefn_ROFST_changes] Succeeded'
|
||||
ELSE PRINT 'TableFunction [vefn_ROFST_changes] Error on Creation'
|
||||
go
|
||||
|
||||
/****** Object: StoredProcedure [deleteDocVersionPdfsWithNewROs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteDocVersionPdfsWithNewROs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [deleteDocVersionPdfsWithNewROs];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 03/31/2026
|
||||
Description: Delete all PDFs with ROs that will need re-resolved
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[deleteDocVersionPdfsWithNewROs]
|
||||
|
||||
(
|
||||
@VersionID int,
|
||||
@OrigFSTid int,
|
||||
@NewFSTid int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
DELETE [Pdfs]
|
||||
WHERE [DocID] IN
|
||||
(
|
||||
select EE.DocID from vefn_GetVersionItems(cast(@VersionID as varchar(20))) VI
|
||||
Join Entries EE ON EE.ContentID= VI.ContentID
|
||||
Join DRoUsages ON DRoUsages.DocID = EE.DocID
|
||||
Join dbo.vefn_ROFST_changes(@OrigFSTID, @NewFSTid, @VersionID) ROFST_changes on LEFT(DRoUsages.ROID,12) = ROFST_changes.roid
|
||||
)
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: deleteDocVersionPdfsWithNewROs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: deleteDocVersionPdfsWithNewROs Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
/****** Object: StoredProcedure [getItemsWithNewROs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemsWithNewROs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getItemsWithNewROs];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 03/31/2026
|
||||
Description: Get Items with New ROs that will need resolved
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[getItemsWithNewROs]
|
||||
|
||||
(
|
||||
@VersionID int,
|
||||
@OrigFSTid int,
|
||||
@NewFSTid int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
select DISTINCT tblItems.ItemID FROM
|
||||
dbo.vefn_ROFST_changes(@OrigFSTID, @NewFSTid, @VersionID) ROFST_changes
|
||||
INNER JOIN RoUsages ON LEFT(RoUsages.ROID,12) = ROFST_changes.roid
|
||||
INNER JOIN tblItems ON RoUsages.ContentID = tblItems.ContentID
|
||||
OUTER APPLY (Select VersionID = dbo.vefn_GetVersionIDByItemID(tblItems.ItemID)) ver
|
||||
INNER JOIN DocVersions DV ON DV.VersionID = ver.VersionID
|
||||
INNER JOIN Associations ON Associations.VersionID = DV.VersionID
|
||||
where ver.VersionID = @VersionID
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getItemsWithNewROs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getItemsWithNewROs Error on Creation'
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumber] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionByItemIDandRevisionNumber]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumber];
|
||||
GO
|
||||
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumber]
|
||||
|
||||
(
|
||||
@ItemID int,
|
||||
@RevisionNumber nvarchar(50)
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
declare @RevisionID int
|
||||
set @RevisionID = (select top 1 revisionid from revisions where itemid = @itemid and revisionnumber = @RevisionNumber order by revisionid desc)
|
||||
SELECT
|
||||
[RevisionID],
|
||||
[ItemID],
|
||||
[TypeID],
|
||||
[RevisionNumber],
|
||||
[RevisionDate],
|
||||
[Notes],
|
||||
[Config],
|
||||
[DTS],
|
||||
[UserID],
|
||||
[LastChanged],
|
||||
(SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount],
|
||||
(SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount]
|
||||
FROM [Revisions]
|
||||
WHERE [RevisionID]=@RevisionID
|
||||
|
||||
SELECT
|
||||
[Checks].[CheckID],
|
||||
[Checks].[RevisionID],
|
||||
[Checks].[StageID],
|
||||
[Checks].[ConsistencyChecks],
|
||||
[Checks].[DTS],
|
||||
[Checks].[UserID],
|
||||
[Checks].[LastChanged],
|
||||
[Stages].[Name] [Stage_Name],
|
||||
[Stages].[Description] [Stage_Description],
|
||||
[Stages].[IsApproved] [Stage_IsApproved],
|
||||
[Stages].[DTS] [Stage_DTS],
|
||||
[Stages].[UserID] [Stage_UserID]
|
||||
FROM [Checks]
|
||||
JOIN [Stages] ON
|
||||
[Stages].[StageID]=[Checks].[StageID]
|
||||
WHERE
|
||||
[Checks].[RevisionID]=@RevisionID
|
||||
|
||||
|
||||
SELECT
|
||||
[Versions].[VersionID],
|
||||
[Versions].[RevisionID],
|
||||
[Versions].[StageID],
|
||||
[Versions].[DTS],
|
||||
[Versions].[UserID],
|
||||
[Versions].[LastChanged],
|
||||
[Versions].[PDF],
|
||||
[Versions].[SummaryPDF],
|
||||
[Stages].[Name] [Stage_Name],
|
||||
[Stages].[Description] [Stage_Description],
|
||||
[Stages].[IsApproved] [Stage_IsApproved],
|
||||
[Stages].[DTS] [Stage_DTS],
|
||||
[Stages].[UserID] [Stage_UserID]
|
||||
FROM [Versions]
|
||||
JOIN [Stages] ON
|
||||
[Stages].[StageID]=[Versions].[StageID]
|
||||
WHERE
|
||||
[Versions].[RevisionID]=@RevisionID
|
||||
|
||||
RETURN
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 06/29/2026
|
||||
Description: Added an ISNULL check when setting GridAudits.contentauditid.
|
||||
Was Causing Deletion of some Grids to fail.
|
||||
==========================================================================================================
|
||||
*/
|
||||
/****** Object: Trigger [tr_Contents_Delete] ******/
|
||||
ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete as
|
||||
begin
|
||||
update ii set DeleteStatus = (select max(DeleteID) from DeleteLog where SPID = @@spid), ActionDTS = getdate(),
|
||||
UserID = (select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc)
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS)
|
||||
select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
where ii.DeleteStatus > 0
|
||||
update ga set ga.contentauditid = (select ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0
|
||||
end
|
||||
go
|
||||
|
||||
-- Display the status of Trigger alter
|
||||
IF (@@Error = 0) PRINT 'Trigger Alteration: tr_Contents_Delete Succeeded'
|
||||
ELSE PRINT 'Trigger Alteration: tr_Contents_Delete Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
| ADD New Code Before this Block |
|
||||
@@ -24810,8 +25068,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '03/13/2026 7:00 AM'
|
||||
set @RevDescription = 'Added Get Missing Docs by Unit for Generating Pdf table'
|
||||
set @RevDate = '07/16/2026 8:30 AM'
|
||||
set @RevDescription = 'Reworked ve_GetParentItem for Performance improvement'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
||||
@@ -67,6 +67,7 @@ namespace VEPROMS
|
||||
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
|
||||
_MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing
|
||||
ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave;
|
||||
_MyApproval.SavedSlave = ApplicabilityIndex;
|
||||
this.ConsistencyPrintRequest -= new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
||||
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
||||
_MyDocVersion = myDocVersion;
|
||||
@@ -292,6 +293,7 @@ namespace VEPROMS
|
||||
expAddProcConChk.Expanded = true;
|
||||
_initializing = true;
|
||||
ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave;
|
||||
_MyApproval.SavedSlave = ApplicabilityIndex;
|
||||
InitializePanelApprove();
|
||||
InitializePanelSelect();
|
||||
_initializing = false;
|
||||
@@ -306,6 +308,7 @@ namespace VEPROMS
|
||||
_MyDocVersion = myProcedure.MyDocVersion;
|
||||
_MyDocVersion.ResetProcedures(); // B2021-035: Pasted, modified number and deleted procedures not refreshed so missing from list
|
||||
ApplicabilityIndex = _MyDocVersion.DocVersionConfig.SelectedSlave; // B2022-033 set the child being approved or workflow so other procedure list can populate
|
||||
_MyApproval.SavedSlave = ApplicabilityIndex;
|
||||
InitializeComponent();
|
||||
FlexGridAddEvents();
|
||||
SetupComboBoxes();
|
||||
@@ -914,6 +917,11 @@ namespace VEPROMS
|
||||
get { return _MyProcedures; }
|
||||
//set { _MyProcedures = value; }
|
||||
}
|
||||
|
||||
//B2026-058 - If approving multiple procedures at the same time with a multiunit set and one of the procedures is open, PROMS sometimes loses that it is set for an individual unit.
|
||||
// this will save the SectedSlave in case a refresh causes it to get lost
|
||||
public int SavedSlave { get; set; } = 0;
|
||||
|
||||
public ApprovalInfo(frmVEPROMS myFrmVEPROMS)
|
||||
{
|
||||
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
|
||||
@@ -1173,6 +1181,11 @@ namespace VEPROMS
|
||||
string pdfPath = string.Format(@"{0}\{1}", VlnSettings.TemporaryFolder, pdfTmp);
|
||||
if (!TryToDelete(summaryPDF, "Change Summary")) break;
|
||||
if (!TryToDelete(pdfPath,revisionStage)) break;
|
||||
if (SavedSlave > 0 && ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave < 1)
|
||||
{
|
||||
//B2026-058 - If approving multiple procedures at the same time with a multiunit set and one of the procedures is open, PROMS sometimes loses that it is set for an individual unit.
|
||||
ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave = SavedSlave;
|
||||
}
|
||||
procsApproved.Add(ap.ProcInfo.DisplayNumber + " " + ap.ProcInfo.DisplayText);
|
||||
RevisionInfo ric = pi.MyDocVersion.DocVersionConfig.SelectedSlave > 0 ? RevisionInfo.GetCurrentByItemIDandUnitID(pi.ItemID, pi.MyDocVersion.DocVersionConfig.SelectedSlave) : RevisionInfo.GetCurrentByItemID(pi.ItemID);
|
||||
// RevisionInfo rip = RevisionInfo.GetPreviousByItemID(pi.ItemID);
|
||||
|
||||
@@ -1036,6 +1036,9 @@ namespace VEPROMS
|
||||
ROFstInfo roFstInfo = dq.DocVersionAssociations[0].MyROFst;
|
||||
string rofstPath = roFstInfo.MyRODb.FolderPath + @"\ro.fst";
|
||||
|
||||
//must get id before ROFST gets updated so know what to refresh later
|
||||
int origfstid = roFstInfo.ROFstID;
|
||||
|
||||
//if (!pathExists(rofstPath))
|
||||
if (!File.Exists(rofstPath))
|
||||
{
|
||||
@@ -1063,8 +1066,28 @@ namespace VEPROMS
|
||||
ROFstInfo.UpdateRoFst(roFstInfo.MyRODb, dv, roFstInfo, DoProgressBarRefresh);
|
||||
roFstInfo = dq.DocVersionAssociations[0].MyROFst;
|
||||
}
|
||||
else if (!dv.ROfstLastCompleted && origfstid == roFstInfo.ROFstID)
|
||||
{
|
||||
//Handle issue where load failed without completing update
|
||||
//previous RO FST did not load, get last loaded ID
|
||||
//if none, use -1 which will check all ROs in the Working Draft
|
||||
string cfg = dv.DocVersionAssociations[0].Config;
|
||||
AssociationConfig ac = new AssociationConfig((cfg == null || cfg.Length == 0) ? "<Config />" : cfg);
|
||||
if (dv.DocVersionAssociations[0]?.MyROFst != null)
|
||||
{
|
||||
if (!int.TryParse(ac.ROUpdate_PrevROFSTID, out origfstid))
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
|
||||
roFstInfo.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
ROFst newrofst = ROFstInfo.RefreshROFst(dv, roFstInfo, DoProgressBarRefresh, txtProcess);
|
||||
ROFstInfo.RefreshROFstAtItemLevel(DocVersionInfo.Get(dv.VersionID), DoProgressBarRefresh, txtProcess, roFstInfo, origfstid, roFstInfo.ROFstID);
|
||||
roFstInfo.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
}
|
||||
|
||||
@@ -1316,9 +1339,9 @@ namespace VEPROMS
|
||||
{
|
||||
if (ProgressBar == null) return;
|
||||
|
||||
ProgressBar.Value = 100;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Text = value;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Value = 100;
|
||||
txtProcess.AppendText(value);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
|
||||
@@ -246,6 +246,10 @@ namespace VEPROMS
|
||||
|
||||
tc.MyCopyStep = myParent.tc.MyCopyStep; // copy the copystep info to the child window
|
||||
|
||||
//B2026 - 048 View Only Mode freezes PROMS if last tab closed
|
||||
tc.EnableDisableStepProperties -= EnableDisableStepProperties;
|
||||
tc.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
|
||||
|
||||
(tv.Nodes[0] as VETreeNode).InChildWindow = true; // tells us this folder's tree nodes are in the child window
|
||||
}
|
||||
|
||||
@@ -352,6 +356,7 @@ namespace VEPROMS
|
||||
|
||||
displayRO.TabControl = tc; // B2019-043 this was being passed in as a parameter for DisplayRO which caused issues with the Visual Studio designer
|
||||
bottomProgBar.ValueChanged += new EventHandler(bottomProgBar_ValueChanged);
|
||||
tc.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
|
||||
|
||||
// When creating an XY Plot, a System.Drawing.Graphics is needed and it requires a form. Use the main form.
|
||||
if (VlnSettings.DebugMode)
|
||||
@@ -964,7 +969,18 @@ namespace VEPROMS
|
||||
{
|
||||
pnl.ApplDisplayMode = displayApplicability.ViewMode;
|
||||
displayHistory.ApplDisplayMode = pnl.ApplDisplayMode;
|
||||
|
||||
//C2026-021 Expand Functionality of Viewing Mode
|
||||
if (pnl.ApplDisplayMode > 0 && pnl.VwMode != E_ViewMode.View)
|
||||
{
|
||||
pnl.VwMode = E_ViewMode.View;
|
||||
EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(tc.SelectedDisplayTabItem.MyItemInfo, 0, pnl.VwMode));
|
||||
MessageBox.Show("Changing to View Only Mode. Applicability Viewing Mode must be Master to return to Edit Mode. View Mode can be toggled off via the Ribbon->View tab.", "Changing to View Mode", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.RefreshProcedure();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void tv_ViewPDF(object sender, vlnTreeViewPdfArgs args)
|
||||
@@ -1594,7 +1610,7 @@ namespace VEPROMS
|
||||
displayRO.MyROFST = SelectedROFst;
|
||||
// B2023-021: force Load of Step Prop/RO panel RO tree by passing in
|
||||
// true to LoadTree
|
||||
displayRO.LoadTree(true);
|
||||
if (!_WeAreExitingPROMS) displayRO.LoadTree(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2395,6 +2411,7 @@ namespace VEPROMS
|
||||
tv.MySessionInfo = MySessionInfo;
|
||||
tv.MyUserInfo = MyUserInfo;
|
||||
StepTabRibbon.MySessionInfo = MySessionInfo;
|
||||
displayRO.MySessionInfo = MySessionInfo;
|
||||
|
||||
// Initialize Caption with Server name and Database name.
|
||||
SetCaption(tv.TopNode as VETreeNode);
|
||||
@@ -4482,7 +4499,6 @@ namespace VEPROMS
|
||||
{
|
||||
infoPanel.Expanded = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
displayTags.HighlightChangeStep();
|
||||
}
|
||||
else if (args.PanelTabName == "Change Image Size")
|
||||
{
|
||||
@@ -4553,6 +4569,15 @@ namespace VEPROMS
|
||||
SetCaption(tv.SelectedNode as VETreeNode);
|
||||
displayApplicability.MyDisplayTabItem = tc.SelectedDisplayTabItem;
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// DisplayTab was changed
|
||||
// need to clear the RTB selected
|
||||
// without resetting the DVI or FST
|
||||
// (those will be set manually / individually)
|
||||
// this will prevent DVI and FST from changing to null then back again
|
||||
// which will trigger reloads
|
||||
displayRO.ClearRTB();
|
||||
|
||||
if (tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociationCount > 0)
|
||||
{
|
||||
displayRO.MyROFST = tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst;
|
||||
@@ -4562,9 +4587,24 @@ namespace VEPROMS
|
||||
displayRO.MyROFST = null;
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// set the DocVersionInfo so that the FST and docversion are in sync
|
||||
SelectedDVI = tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion;
|
||||
if (displayRO.MyDvi != SelectedDVI)
|
||||
{
|
||||
displayRO.MyDvi = SelectedDVI;
|
||||
}
|
||||
Application.DoEvents();
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
// B2022-123: RO Tab Treeview not showing correct RO values when switching between procedures. (Added True for the forceLoad parameter)
|
||||
displayRO.LoadTree(true);
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// if ROFST got updated,
|
||||
// set the Selected FST so it is in sync
|
||||
if (!_WeAreExitingPROMS && displayRO.LoadTree(true))
|
||||
{
|
||||
SelectedROFst = displayRO.MyROFST;
|
||||
}
|
||||
|
||||
lblUser.Text = tc.SelectedDisplayTabItem.MyUserRole;
|
||||
|
||||
@@ -4579,7 +4619,7 @@ namespace VEPROMS
|
||||
// also change the text on the buttons to read either Find or Find/Replace
|
||||
// also toggle the Replace tab on the dialog based on the user's accessibility to the procedure
|
||||
bool isReviewer = !MyUserInfo.IsAllowedToEdit(tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion);
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling(true);
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling();
|
||||
this.dlgFindReplace.ToggleReplaceTab(isReviewer ? E_ViewMode.View : E_ViewMode.Edit);
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.ToggleFindReplaceToolTip(isReviewer);
|
||||
}
|
||||
@@ -4765,7 +4805,13 @@ namespace VEPROMS
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.ProgressBar = bottomProgBar;
|
||||
displayRO.MyRTB = args.MyEditItem.MyStepRTB;
|
||||
displayRO.LoadTree();
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// if ROFST got updated,
|
||||
// set the Selected FST so it is in sync
|
||||
if (!_WeAreExitingPROMS && displayRO.LoadTree())
|
||||
{
|
||||
SelectedROFst = displayRO.MyROFST;
|
||||
}
|
||||
|
||||
displayBookMarks.MyEditItem = args.MyEditItem;
|
||||
displayHistory.MyEditItem = args.MyEditItem;
|
||||
@@ -4795,7 +4841,7 @@ namespace VEPROMS
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.SetFindDocROButton(false);
|
||||
displayRO.LoadTree();
|
||||
if (!_WeAreExitingPROMS) displayRO.LoadTree();
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
@@ -4836,15 +4882,31 @@ namespace VEPROMS
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
public void EnableDisableStepProperties(object sender, StepTabRibbonEventArgs args)
|
||||
{
|
||||
if (args.ViewMode == E_ViewMode.View && (infoTabs.Enabled || infoTabs.SelectedTab != infotabTags))
|
||||
//C2026 - 021 Expand Functionality of Viewing Mode
|
||||
//B2026 - 048 View Only Mode freezes PROMS if last tab closed
|
||||
if (args.ViewMode == E_ViewMode.View && (infotabControlPanelTags.Enabled || (infoTabs.SelectedTab != infotabTags && infoTabs.SelectedTab != infotabApplicability)))
|
||||
{
|
||||
if (infoTabs.SelectedTab != infotabApplicability)
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
infoTabs.Enabled = false;
|
||||
}
|
||||
else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled)
|
||||
|
||||
infotabControlPanelTags.Enabled = false;
|
||||
infotabControlPanelRO.Enabled = false;
|
||||
infotabControlPanelTransitions.Enabled = false;
|
||||
tabControlPanel1.Enabled = false;
|
||||
displayApplicability.SetEnableDisableItemSelection(false);
|
||||
tcpFoldoutMaint.Enabled = false;
|
||||
|
||||
}
|
||||
else if (args.ViewMode != E_ViewMode.View && !infotabControlPanelTags.Enabled)
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
infotabControlPanelTags.Enabled = true;
|
||||
infotabControlPanelRO.Enabled = true;
|
||||
infotabControlPanelTransitions.Enabled = true;
|
||||
tabControlPanel1.Enabled = true;
|
||||
displayApplicability.SetEnableDisableItemSelection(true);
|
||||
tcpFoldoutMaint.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4929,7 +4991,13 @@ namespace VEPROMS
|
||||
displayRO.CurROLink = args.MyLinkText.MyRoUsageInfo;
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.LoadTree();
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// if ROFST got updated,
|
||||
// set the Selected FST so it is in sync
|
||||
if (displayRO.LoadTree())
|
||||
{
|
||||
SelectedROFst = displayRO.MyROFST;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -5197,8 +5265,8 @@ namespace VEPROMS
|
||||
{
|
||||
if (SelectedDVI != null)
|
||||
displayReports.Mydocversion = SelectedDVI;
|
||||
displayReports.advTreeProcSetsFillIn(reportFocus);
|
||||
displayReports.advTreeROFillIn(reportFocus);
|
||||
displayReports.advTreeProcSetsFillIn();
|
||||
displayReports.advTreeROFillIn();
|
||||
displayReports.SelectReferencedObjectTab(); // to enable RO selection
|
||||
}
|
||||
}
|
||||
|
||||
@@ -899,9 +899,9 @@ namespace VEPROMS
|
||||
set
|
||||
{
|
||||
if (ProgressBar == null) return;
|
||||
ProgressBar.Text = value;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Value = 100;
|
||||
ProgressBar.Text = value;
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
@@ -1527,6 +1527,9 @@ namespace VEPROMS
|
||||
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
//must get id before ROFST gets updated so know what to refresh later
|
||||
int origfstid = SelectedROFst.ROFstID;
|
||||
|
||||
// RO changes placed in file in the Documents\VEPROMS folder
|
||||
swROUpdate = new System.IO.StreamWriter(ROFstInfo.ROUpdateResultsPath(_DocVersionConfig.MyDocVersion.MyDocVersionInfo));
|
||||
DocVersion dv = _DocVersionConfig.MyDocVersion;
|
||||
@@ -1536,11 +1539,30 @@ namespace VEPROMS
|
||||
ROFstInfo.UpdateRoFst(SelectedROFst.MyRODb, dv, SelectedROFst, DoProgressBarRefresh);
|
||||
SelectedROFst = null; // set to null to force getting the updated ROfst
|
||||
}
|
||||
else if (!dv.ROfstLastCompleted && origfstid == SelectedROFst.ROFstID)
|
||||
{
|
||||
//Handle issue where load failed without completing update
|
||||
//previous RO FST did not load, get last loaded ID
|
||||
//if none, use -1 which will check all ROs in the Working Draft
|
||||
string cfg = dv.DocVersionAssociations[0].Config;
|
||||
AssociationConfig ac = new AssociationConfig((cfg == null || cfg.Length == 0) ? "<Config />" : cfg);
|
||||
if (dv.DocVersionAssociations[0]?.MyROFst != null)
|
||||
{
|
||||
if (!int.TryParse(ac.ROUpdate_PrevROFSTID, out origfstid))
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
|
||||
ContentInfo.StaticContentInfoChange += ContentInfo_StaticContentInfoChange; // write changes to a text file
|
||||
SelectedROFst.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
|
||||
ROFst newrofst = ROFstInfo.RefreshROFst(_DocVersionConfig.MyDocVersion, SelectedROFst, DoProgressBarRefresh, null);
|
||||
ROFstInfo.RefreshROFstAtItemLevel(DocVersionInfo.Get(dv.VersionID), DoProgressBarRefresh, null, SelectedROFst, origfstid, SelectedROFst.ROFstID);
|
||||
|
||||
ContentInfo.StaticContentInfoChange -= ContentInfo_StaticContentInfoChange;
|
||||
SelectedROFst.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
|
||||
@@ -124,6 +124,23 @@ namespace VEPROMS.CSLA.Library
|
||||
_Xp["ROUpdate", "LoadingFigures"] = value; // save selected value
|
||||
}
|
||||
}
|
||||
|
||||
[Category("RO Update")]
|
||||
[DisplayName("Previous ROFSTID")]
|
||||
[RefreshProperties(RefreshProperties.All)]
|
||||
[Description("Previous ROFSTID")]
|
||||
public string ROUpdate_PrevROFSTID
|
||||
{
|
||||
get
|
||||
{
|
||||
string s = _Xp["ROUpdate", "PrevROFSTID"];// get the saved value
|
||||
return s;
|
||||
}
|
||||
set
|
||||
{
|
||||
_Xp["ROUpdate", "PrevROFSTID"] = value; // save selected value
|
||||
}
|
||||
}
|
||||
#endregion // ROUpdate
|
||||
#region ToString
|
||||
public override string ToString()
|
||||
|
||||
@@ -8,7 +8,6 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
@@ -61,6 +60,7 @@ namespace VEPROMS.CSLA.Library
|
||||
#region Structs / Internal Classes
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct roHdr
|
||||
{
|
||||
public int hSize;
|
||||
@@ -78,6 +78,7 @@ namespace VEPROMS.CSLA.Library
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct rodbi
|
||||
{
|
||||
public int dbiID;
|
||||
@@ -91,16 +92,19 @@ namespace VEPROMS.CSLA.Library
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct rogrp
|
||||
{
|
||||
public string value;
|
||||
public string appid;
|
||||
public int ID;
|
||||
public int ParentID;
|
||||
public DateTime? ModDateTime; //C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
public rochild[] children;
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct rochild
|
||||
{
|
||||
public int ID;
|
||||
@@ -110,6 +114,7 @@ namespace VEPROMS.CSLA.Library
|
||||
public string roid; // roid unique identifier
|
||||
public string appid; // accessory page id - user specified unique id
|
||||
public string value; // return value, can be multiple values
|
||||
public DateTime? ModDateTime; //C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
public rochild[] children;
|
||||
};
|
||||
|
||||
@@ -131,7 +136,7 @@ namespace VEPROMS.CSLA.Library
|
||||
private List<string> _baseAccPageKeys;
|
||||
|
||||
// RofstLookup/Conversion Variables
|
||||
private int _rofstID;
|
||||
private readonly int _rofstID;
|
||||
private DocVersionInfo _myDocVersionInfo;
|
||||
private int _selectedSlave;
|
||||
private string _otherChild = string.Empty;
|
||||
@@ -147,7 +152,7 @@ namespace VEPROMS.CSLA.Library
|
||||
// B2022-107: Display Progress Bar Messages/Statuses when a new ROFST binary file is loaded into the database
|
||||
private frmRofstLoadStatus _frmRofstLoadStatus = null;
|
||||
private Dictionary<int, int> _dicRoCounts = null;
|
||||
private bool _showLoadingStatus = true;
|
||||
private readonly bool _showLoadingStatus = true;
|
||||
|
||||
private int _curRoCnt = 0;
|
||||
private int _dbRoCnt = 0;
|
||||
@@ -412,7 +417,6 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
ROFSTLookup.rochild rc = RofstDataGetChildByAccPageID(_rofstID, accPageBase);
|
||||
|
||||
//if (rc.ID >=0 && rc.roid.Length < 16 && Regex.IsMatch(accPageKey, @".*\.[A-Z]") && rc.children != null && rc.children.Count() > 0)
|
||||
if (rc.ID >= 0 && rc.roid.Length < 16 && !string.IsNullOrEmpty(accPageExt) && rc.children != null && rc.children.Count() > 0)
|
||||
{
|
||||
// Check if AccPageID/Key has a return value specific extension. Try to find the RoChild record with the specific return value type,
|
||||
@@ -505,8 +509,6 @@ namespace VEPROMS.CSLA.Library
|
||||
// B2023-037: Handle <=, >=, +-, -> and <- symbols. Convert to unicode for output, i.e. print and edit/view (when editing
|
||||
// step, will show as 2 characters, not unicode, unless ro inserted when code replaced link text with unicode.
|
||||
|
||||
//(_MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseDashGreaterLessThenForArrowsInROValue ||
|
||||
// _MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertGTELTEPMinROValue))
|
||||
bool arrows1 = myiteminfo.ActiveFormat.PlantFormat.FormatData.SectData.UseDashGreaterLessThenForArrowsInROValue;
|
||||
bool arrows2 = myiteminfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertGTELTEPMinROValue;
|
||||
|
||||
@@ -679,13 +681,16 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
if (minutes > 0) duration = string.Format("{0} min(s) ", minutes.ToString("n0"));
|
||||
if (secs < 0) secs = 0.00;
|
||||
duration = duration + string.Format("{0,10:#####0.00} sec(s)", secs).Trim();
|
||||
duration += string.Format("{0,10:#####0.00} sec(s)", secs).Trim();
|
||||
|
||||
return duration;
|
||||
|
||||
//return string.Format("{0,10:#####0.00}", TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalSeconds);
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//return new ROFstID if there is a newer ID that matches the same ROFSTDB
|
||||
public int GetNewerFSTID() => RofstGetLatestID(RofstID);
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
@@ -888,7 +893,7 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
private void RofstChildInsert(int rofstID, int id, int parentID, int dbiID, int type, string title, string roid, string appid, string value)
|
||||
private void RofstChildInsert(int rofstID, int id, int parentID, int dbiID, int type, string title, string roid, string appid, string value, DateTime? dt = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -917,6 +922,9 @@ namespace VEPROMS.CSLA.Library
|
||||
if (!string.IsNullOrEmpty(this.RoMissingDefaultValue))
|
||||
cmd.Parameters.Add(new SqlParameter("@missingDefaultValue", SqlDbType.VarChar)).Value = this.RoMissingDefaultValue;
|
||||
|
||||
if (dt != null)
|
||||
cmd.Parameters.Add(new SqlParameter("@ModDateTime", SqlDbType.DateTime)).Value = dt;
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
@@ -1299,6 +1307,32 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//return new ROFstID if there is a newer ID that matches the same ROFSTDB
|
||||
private int RofstGetLatestID(int rofstID)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cmd = cn.CreateCommand())
|
||||
{
|
||||
cmd.CommandTimeout = 0;
|
||||
cmd.CommandType = CommandType.Text;
|
||||
cmd.CommandText = "SELECT ISNULL((SELECT TOP 1 ROFsts.ROFstID FROM ROFsts INNER JOIN ROFsts curFST ON curFST.RODbID = ROFsts.RODbID WHERE curFST.ROFstID = @FSTid order by ROFsts.DTS desc),-1)";
|
||||
|
||||
cmd.Parameters.Add(new SqlParameter("@FSTid", SqlDbType.Int)).Value = rofstID;
|
||||
|
||||
return (int) cmd.ExecuteScalar();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new DbCslaException("RofstData.RofstGetLatestID", ex);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region (Core/Base logic for RO Values & UnitInfo RO Values)
|
||||
@@ -1440,19 +1474,20 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.roHdr ConvertFst2Objects(byte[] ab)
|
||||
{
|
||||
ROFSTLookup.roHdr roh = new ROFSTLookup.roHdr();
|
||||
|
||||
roh.hSize = BitConverter.ToInt32(ab, 0);
|
||||
roh.hYear = BitConverter.ToInt16(ab, 4);
|
||||
roh.hMonth = ab[6];
|
||||
roh.hDay = ab[7];
|
||||
roh.hcYear = BitConverter.ToInt16(ab, 8);
|
||||
roh.hcMonth = ab[10];
|
||||
roh.hcDay = ab[11];
|
||||
roh.hcHour = ab[12];
|
||||
roh.hcMin = ab[13];
|
||||
roh.hcSec = ab[14];
|
||||
roh.hcHund = ab[15];
|
||||
ROFSTLookup.roHdr roh = new ROFSTLookup.roHdr
|
||||
{
|
||||
hSize = BitConverter.ToInt32(ab, 0),
|
||||
hYear = BitConverter.ToInt16(ab, 4),
|
||||
hMonth = ab[6],
|
||||
hDay = ab[7],
|
||||
hcYear = BitConverter.ToInt16(ab, 8),
|
||||
hcMonth = ab[10],
|
||||
hcDay = ab[11],
|
||||
hcHour = ab[12],
|
||||
hcMin = ab[13],
|
||||
hcSec = ab[14],
|
||||
hcHund = ab[15]
|
||||
};
|
||||
|
||||
int hdrOffset = BitConverter.ToInt32(ab, 16);
|
||||
int dbs = BitConverter.ToInt16(ab, hdrOffset + 4);
|
||||
@@ -1490,10 +1525,11 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rogrp LoadGroup(byte[] ab, int offset, int tableID)
|
||||
{
|
||||
ROFSTLookup.rogrp myGrp = new ROFSTLookup.rogrp();
|
||||
|
||||
myGrp.ID = BitConverter.ToInt32(ab, offset);
|
||||
myGrp.ParentID = BitConverter.ToInt32(ab, offset + 4);
|
||||
ROFSTLookup.rogrp myGrp = new ROFSTLookup.rogrp
|
||||
{
|
||||
ID = BitConverter.ToInt32(ab, offset),
|
||||
ParentID = BitConverter.ToInt32(ab, offset + 4)
|
||||
};
|
||||
|
||||
int numChildren = BitConverter.ToInt16(ab, offset + 8);
|
||||
|
||||
@@ -1523,6 +1559,10 @@ namespace VEPROMS.CSLA.Library
|
||||
tmp.appid = tmpg.appid;
|
||||
tmp.roid = tableID.ToString("X4") + tmp.ID.ToString("X8");
|
||||
tmp.children = tmpg.children;
|
||||
if (tmpg.ModDateTime != null)
|
||||
{
|
||||
tmp.ModDateTime = tmpg.ModDateTime;
|
||||
}
|
||||
|
||||
int j;
|
||||
|
||||
@@ -1542,6 +1582,12 @@ namespace VEPROMS.CSLA.Library
|
||||
int slen2 = StringLength(ab, offset + 13 + slen);
|
||||
myGrp.appid = Encoding.Default.GetString(ab, offset + 13 + slen, slen2);
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
if (myGrp.value != "" && DateTime.TryParseExact(Encoding.Default.GetString(ab, offset + 14 + slen + slen2, 14), "yyyyMMddHHmmss", null, System.Globalization.DateTimeStyles.None, out DateTime dt))
|
||||
{
|
||||
myGrp.ModDateTime = dt;
|
||||
}
|
||||
|
||||
_dbRoCnt++;
|
||||
}
|
||||
|
||||
@@ -1615,7 +1661,7 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
|
||||
// Update Progress Bar Accordingly
|
||||
if (_totalRoCnt > 0) _pctComplete = _pctComplete + ((Convert.ToDouble(_dbRoCnt) / Convert.ToDouble(_totalRoCnt)) * 80.0);
|
||||
if (_totalRoCnt > 0) _pctComplete += ((Convert.ToDouble(_dbRoCnt) / Convert.ToDouble(_totalRoCnt)) * 80.0);
|
||||
|
||||
OnProgressChanged(displayText, Convert.ToInt32(_pctComplete), 100);
|
||||
}
|
||||
@@ -1655,7 +1701,7 @@ namespace VEPROMS.CSLA.Library
|
||||
private void LoadChild(int rofstID, int dbiID, ROFSTLookup.rochild child)
|
||||
{
|
||||
//Insert Rofst Child
|
||||
RofstChildInsert(rofstID, child.ID, child.ParentID, dbiID, child.type, child.title, child.roid, child.appid, child.value);
|
||||
RofstChildInsert(rofstID, child.ID, child.ParentID, dbiID, child.type, child.title, child.roid, child.appid, child.value, child.ModDateTime);
|
||||
|
||||
//Increment RO Count if RoChild has a return value
|
||||
if (!string.IsNullOrEmpty(child.value)) _curRoCnt++;
|
||||
@@ -1675,15 +1721,13 @@ namespace VEPROMS.CSLA.Library
|
||||
protected virtual void OnProgressChanged(string title, string displayText, int curVal = 0, int maxVal = 100)
|
||||
{
|
||||
// If frmRofstLoadStatus is not null then call Update Progress Method
|
||||
if (_frmRofstLoadStatus != null)
|
||||
_frmRofstLoadStatus.UpdateProgress(title, displayText, curVal, maxVal);
|
||||
_frmRofstLoadStatus?.UpdateProgress(title, displayText, curVal, maxVal);
|
||||
}
|
||||
|
||||
protected virtual void OnProgressChanged(string displayText, int curVal = 0, int maxVal = 100)
|
||||
{
|
||||
// If frmRofstLoadStatus is not null then call Update Progress Method
|
||||
if (_frmRofstLoadStatus != null)
|
||||
_frmRofstLoadStatus.UpdateProgress(_frmRofstLoadStatus.Title, displayText, curVal, maxVal);
|
||||
_frmRofstLoadStatus?.UpdateProgress(_frmRofstLoadStatus.Title, displayText, curVal, maxVal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1694,19 +1738,20 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.roHdr ConvertToRoHdrObject(SafeDataReader dr, bool loadChildren)
|
||||
{
|
||||
ROFSTLookup.roHdr rh = new ROFSTLookup.roHdr();
|
||||
|
||||
rh.hSize = (int)dr.GetValue("hSize");
|
||||
rh.hYear = (int)dr.GetValue("hYear");
|
||||
rh.hMonth = (byte)dr.GetValue("hMonth");
|
||||
rh.hDay = (byte)dr.GetValue("hDay");
|
||||
rh.hcYear = (int)dr.GetValue("hcYear");
|
||||
rh.hcMonth = (byte)dr.GetValue("hcMonth");
|
||||
rh.hcDay = (byte)dr.GetValue("hcDay");
|
||||
rh.hcHour = (byte)dr.GetValue("hcHour");
|
||||
rh.hcMin = (byte)dr.GetValue("hcMin");
|
||||
rh.hcSec = (byte)dr.GetValue("hcSec");
|
||||
rh.hcHund = (byte)dr.GetValue("hcHund");
|
||||
ROFSTLookup.roHdr rh = new ROFSTLookup.roHdr
|
||||
{
|
||||
hSize = (int)dr.GetValue("hSize"),
|
||||
hYear = (int)dr.GetValue("hYear"),
|
||||
hMonth = (byte)dr.GetValue("hMonth"),
|
||||
hDay = (byte)dr.GetValue("hDay"),
|
||||
hcYear = (int)dr.GetValue("hcYear"),
|
||||
hcMonth = (byte)dr.GetValue("hcMonth"),
|
||||
hcDay = (byte)dr.GetValue("hcDay"),
|
||||
hcHour = (byte)dr.GetValue("hcHour"),
|
||||
hcMin = (byte)dr.GetValue("hcMin"),
|
||||
hcSec = (byte)dr.GetValue("hcSec"),
|
||||
hcHund = (byte)dr.GetValue("hcHund")
|
||||
};
|
||||
|
||||
if (loadChildren)
|
||||
{
|
||||
@@ -1718,15 +1763,16 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rodbi ConvertToRodbiObject(SafeDataReader dr, bool loadChildren, bool loadAllChildren)
|
||||
{
|
||||
ROFSTLookup.rodbi rd = new ROFSTLookup.rodbi();
|
||||
|
||||
rd.dbiID = (int)dr.GetValue("dbiID");
|
||||
rd.dbiType = (int)dr.GetValue("dbiType");
|
||||
rd.dbiAW = (int)dr.GetValue("dbiAW");
|
||||
rd.dbiAP = (string)dr.GetValue("dbiAP");
|
||||
rd.dbiTitle = (string)dr.GetValue("dbiTitle");
|
||||
rd.ID = (int)dr.GetValue("ID");
|
||||
rd.ParentID = (int)dr.GetValue("ParentID");
|
||||
ROFSTLookup.rodbi rd = new ROFSTLookup.rodbi
|
||||
{
|
||||
dbiID = (int)dr.GetValue("dbiID"),
|
||||
dbiType = (int)dr.GetValue("dbiType"),
|
||||
dbiAW = (int)dr.GetValue("dbiAW"),
|
||||
dbiAP = (string)dr.GetValue("dbiAP"),
|
||||
dbiTitle = (string)dr.GetValue("dbiTitle"),
|
||||
ID = (int)dr.GetValue("ID"),
|
||||
ParentID = (int)dr.GetValue("ParentID")
|
||||
};
|
||||
|
||||
if (loadChildren || loadAllChildren)
|
||||
{
|
||||
@@ -1738,13 +1784,14 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rochild ConvertToRochildObject(SafeDataReader dr, bool loadChildren, bool loadAllChildren)
|
||||
{
|
||||
ROFSTLookup.rochild rc = new ROFSTLookup.rochild();
|
||||
|
||||
rc.ID = (int)dr.GetValue("ID");
|
||||
rc.ParentID = (int)dr.GetValue("ParentID");
|
||||
rc.type = (int)dr.GetValue("type");
|
||||
rc.title = (string)dr.GetValue("title");
|
||||
rc.roid = (string)dr.GetValue("roid");
|
||||
ROFSTLookup.rochild rc = new ROFSTLookup.rochild
|
||||
{
|
||||
ID = (int)dr.GetValue("ID"),
|
||||
ParentID = (int)dr.GetValue("ParentID"),
|
||||
type = (int)dr.GetValue("type"),
|
||||
title = (string)dr.GetValue("title"),
|
||||
roid = (string)dr.GetValue("roid")
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty((string)dr.GetValue("appid")))
|
||||
{
|
||||
@@ -1766,11 +1813,12 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.RoExtension ConvertToRoExtensionObject(SafeDataReader dr)
|
||||
{
|
||||
ROFSTLookup.RoExtension re = new ROFSTLookup.RoExtension();
|
||||
|
||||
re.Offset = (int)dr.GetValue("Offset");
|
||||
re.RoidExt = (string)dr.GetValue("RoidExt");
|
||||
re.AccPageExt = (string)dr.GetValue("AccPageExt");
|
||||
ROFSTLookup.RoExtension re = new ROFSTLookup.RoExtension
|
||||
{
|
||||
Offset = (int)dr.GetValue("Offset"),
|
||||
RoidExt = (string)dr.GetValue("RoidExt"),
|
||||
AccPageExt = (string)dr.GetValue("AccPageExt")
|
||||
};
|
||||
|
||||
return re;
|
||||
}
|
||||
@@ -1830,7 +1878,6 @@ namespace VEPROMS.CSLA.Library
|
||||
// Instead of returning the RoChildBase object with a single RoReturnVal object attached, just return the single Ro ReturnValue object.
|
||||
var roRetVal = child.children.First();
|
||||
|
||||
//child.title = roRetVal.title;
|
||||
child.appid = roRetVal.appid;
|
||||
child.roid = roRetVal.roid;
|
||||
child.value = roRetVal.value;
|
||||
@@ -2084,41 +2131,68 @@ namespace VEPROMS.CSLA.Library
|
||||
return ProcessRO(match, multiRtnVal);
|
||||
}
|
||||
|
||||
private string ProcessMacros(string str)
|
||||
{
|
||||
// Takes the RO text value and sees if a macro has been used.
|
||||
// If so it will perform the macro operation on the substring in the text value
|
||||
// Note** Right now the only macro is @HSP(), where every space between the "(" and ")" will be replaced with a hard space
|
||||
private static string ProcessMacros(string str)
|
||||
{
|
||||
|
||||
if (string.IsNullOrEmpty(str))
|
||||
if (string.IsNullOrEmpty(str) || str.ToUpper().IndexOf("@HSP(") < 0)
|
||||
return str;
|
||||
|
||||
string rtnstr = str;
|
||||
int indx;
|
||||
|
||||
while ((indx = rtnstr.ToUpper().IndexOf("@HSP(")) > -1)
|
||||
{
|
||||
string resstr = rtnstr.Substring(0, indx);
|
||||
int endHsp = rtnstr.IndexOf(")", indx);
|
||||
string processingstr = str; //holds current string being processed
|
||||
int indx; //current position of @HSP( in string
|
||||
int endpos = 0; //end of last parens
|
||||
|
||||
//B2026 - 002 handle if parens inside a HSP
|
||||
int startpos = indx + 5;
|
||||
while (rtnstr.Substring(startpos, endHsp - startpos).Contains("("))
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Stack<char> endparens = new Stack<char>();
|
||||
|
||||
while ((indx = processingstr.ToUpper().IndexOf("@HSP(")) > -1)
|
||||
{
|
||||
startpos = rtnstr.IndexOf("(", startpos + 1, endHsp - startpos) + 1;
|
||||
endHsp = rtnstr.IndexOf(")", endHsp + 1);
|
||||
sb.Append(processingstr.Substring(0, indx)); // initial string before @HSP(
|
||||
|
||||
for (int i = indx + 5; i < processingstr.Length; i++)
|
||||
{
|
||||
char ch = processingstr[i];
|
||||
|
||||
if (ch == '(')
|
||||
{
|
||||
//if opening paren inside HSP add it to the stack to look for a closing parens
|
||||
endparens.Push(ch);
|
||||
}
|
||||
else if (ch == ')' && endparens.Count > 0)
|
||||
{
|
||||
//if cloing parens and it matches an opening parens inside of HSP, remove a level
|
||||
_ = endparens.Pop();
|
||||
}
|
||||
else if (ch == ')' && endparens.Count == 0)
|
||||
{
|
||||
//if closing parens and at same level as HSP, break out since found correct closing parens
|
||||
endpos = i;
|
||||
break;
|
||||
}
|
||||
else if (i == processingstr.Length - 1)
|
||||
{
|
||||
//if hit the end of the string and no matching closing parens found, take to the end of the string
|
||||
endpos = processingstr.Length;
|
||||
}
|
||||
}
|
||||
|
||||
string tmpstr = rtnstr.Substring(indx + 5, endHsp - indx - 5);
|
||||
|
||||
//Add the text inside the @HSP(...)
|
||||
string tmpstr = processingstr.Substring(indx + 5, endpos - indx - 5);
|
||||
// B2017-012 Don't convert space to hard spaces for XY Plots.
|
||||
if (!tmpstr.Contains("<<G")) tmpstr = tmpstr.Replace(" ", @"\u160?");
|
||||
sb.Append(tmpstr);
|
||||
|
||||
resstr = resstr + tmpstr;
|
||||
rtnstr = resstr + rtnstr.Substring(endHsp + 1);
|
||||
//Set the processing string to after the ending parens found in case multiple @HSP
|
||||
processingstr = endpos + 1 >= processingstr.Length ? "" : processingstr.Substring(endpos + 1);
|
||||
}
|
||||
|
||||
return rtnstr;
|
||||
//add text after last end parens
|
||||
sb.Append(processingstr);
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private int StringLength(byte[] ab, int offset)
|
||||
@@ -2230,7 +2304,7 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
rc.roid = FormatRoidKey(roid).Substring(0, 12);
|
||||
|
||||
DocVersionConfig dvc = (_myDocVersionInfo != null) ? _myDocVersionInfo.DocVersionConfig : null;
|
||||
DocVersionConfig dvc = _myDocVersionInfo?.DocVersionConfig;
|
||||
if (dvc != null) dvc.SelectedSlave = this.SelectedSlave;
|
||||
|
||||
switch (rc.roid)
|
||||
@@ -2238,49 +2312,49 @@ namespace VEPROMS.CSLA.Library
|
||||
case "FFFF00000001":
|
||||
rc.title = "Number";
|
||||
rc.appid = "U-NUMBER";
|
||||
rc.value = (dvc != null) ? dvc.Unit_Number : null;
|
||||
rc.value = dvc?.Unit_Number;
|
||||
break;
|
||||
|
||||
case "FFFF00000002":
|
||||
rc.title = "Other Number";
|
||||
rc.appid = "U-OTHERNUMBER";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Number : null;
|
||||
rc.value = dvc?.Other_Unit_Number;
|
||||
break;
|
||||
|
||||
case "FFFF00000003":
|
||||
rc.title = "Text";
|
||||
rc.appid = "U-TEXT";
|
||||
rc.value = (dvc != null) ? dvc.Unit_Text : null;
|
||||
rc.value = dvc?.Unit_Text;
|
||||
break;
|
||||
|
||||
case "FFFF00000004":
|
||||
rc.title = "Other Text";
|
||||
rc.appid = "U-OTHERTEXT";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Text : null;
|
||||
rc.value = dvc?.Other_Unit_Text;
|
||||
break;
|
||||
|
||||
case "FFFF00000005":
|
||||
rc.title = "ID";
|
||||
rc.appid = "U-ID";
|
||||
rc.value = (dvc != null) ? dvc.Unit_ID : null;
|
||||
rc.value = dvc?.Unit_ID;
|
||||
break;
|
||||
|
||||
case "FFFF00000006":
|
||||
rc.title = "Other ID";
|
||||
rc.appid = "U-OTHERID";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_ID : null;
|
||||
rc.value = dvc?.Other_Unit_ID;
|
||||
break;
|
||||
|
||||
case "FFFF00000007":
|
||||
rc.title = "Name";
|
||||
rc.appid = "U-NAME";
|
||||
rc.value = (dvc != null) ? dvc.Unit_Name : null;
|
||||
rc.value = dvc?.Unit_Name;
|
||||
break;
|
||||
|
||||
case "FFFF00000008":
|
||||
rc.title = "Other Name";
|
||||
rc.appid = "U-OTHERNAME";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Name : null;
|
||||
rc.value = dvc?.Other_Unit_Name;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
string itemTitle = Regex.Replace(this.Path, "^..+?\\u0007", "");
|
||||
itemTitle = itemTitle.Replace("\x11", itemTitle[0] == '\x11' ? "" : " - ").Replace("\\u8209?", "-").Replace(@"\u9586?",@"\");
|
||||
return string.Format("{4} item {0} by {1} on {2} @ {3}", this.ActionWhat, this.UserID, this.ActionWhen == DateTime.MinValue ? this.DTS.ToShortDateString() : this.ActionWhen.ToShortDateString(), this.ActionWhen == DateTime.MinValue ? this.DTS.ToShortTimeString() : this.ActionWhen.ToShortTimeString(), itemTitle);
|
||||
return string.Format("{4} item {0} by {1} on {2} @ {3}", this.ActionWhat, this.UserID, this.ActionWhen == DateTime.MinValue ? this.DTS.ToShortDateString() : this.ActionWhen.ToShortDateString(), this.ActionWhen == DateTime.MinValue ? this.DTS.ToString("HH:mm:ss") : this.ActionWhen.ToString("HH:mm:ss"), itemTitle);
|
||||
//return string.Format("{0} by {1} on {2}", this.DeleteStatus == 0 ? "Changed" : "Deleted", this.UserID, this.DTS.ToString("MM/dd/yyyy @ HH:mm:ss"));
|
||||
//return string.Format("{0} - {1} {2}", this.UserID, this.DTS, this.DeleteStatus == 0 ? "" : "Deleted");
|
||||
}
|
||||
@@ -177,7 +177,7 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0}{1} deleted by {2} on {3} @ {4}", this.Level == 0 ? "Previous " : this.Level == 1 ? "Next " : "", this.ItemType, this.UserID, this.DTS.ToShortDateString(), this.DTS.ToShortTimeString());
|
||||
return string.Format("{0}{1} deleted by {2} on {3}", this.Level == 0 ? "Previous " : this.Level == 1 ? "Next " : "", this.ItemType, this.UserID, this.DTS.ToString("MM/dd/yyyy @ HH:mm:ss"));
|
||||
// return string.Format("Deleted by {0} on {1} @ {2}", this.UserID, this.DTS.ToShortDateString(), this.DTS.ToShortTimeString());
|
||||
// return string.Format("(ItemID: {4}, DeleteID: {5}, {0} by {1} on {2} Level: {3}", this.DeleteStatus == 0 ? "Changed" : "Deleted", this.UserID, this.DTS.ToString("MM/dd/yyyy @ HH:mm:ss"), Level.ToString(), this.ItemID.ToString(), this.DeleteStatus.ToString());
|
||||
// return string.Format("Level: {3}, {0} - {1} {2}", this.UserID, this.DTS, this.DeleteStatus == 0 ? "" : "Deleted", this.Level.ToString());
|
||||
|
||||
@@ -1093,6 +1093,15 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//Refresh at item level
|
||||
public static void RefreshReferenceObjects(ItemInfo tmp, ROFstInfo origROFst)
|
||||
{
|
||||
if (tmp.MyDocVersion.DocVersionConfig.SelectedSlave <= 0)
|
||||
MyRefreshReferenceObjects(tmp, null, tmp.GetSectionInfo(), tmp.MyDocVersion, origROFst);
|
||||
}
|
||||
|
||||
// B2022-026 RO Memory Reduction code - pass in ROFstInfo
|
||||
internal static void MyRefreshReferenceObjects(ItemInfo itemInfo, IVEDrillDownReadOnly itemParent, SectionInfo sectionInfo, DocVersionInfo docVersionInfo, ROFstInfo origROFst)
|
||||
{
|
||||
@@ -1219,6 +1228,22 @@ namespace VEPROMS.CSLA.Library
|
||||
return true;
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
public static List<ItemInfo> GetItemInfoWithChangedROs(int docversionid, int origfstid, int newfstid)
|
||||
{
|
||||
List<ItemInfo> lst = new List<ItemInfo>();
|
||||
|
||||
foreach (DataRow r in Data_GetItemsWithChangedROs(docversionid, origfstid, newfstid).Rows)
|
||||
{
|
||||
using (ItemInfo itm = Get((int)r["ItemID"]))
|
||||
{
|
||||
lst.Add(itm);
|
||||
}
|
||||
}
|
||||
|
||||
return lst;
|
||||
}
|
||||
|
||||
#region Debug Code
|
||||
|
||||
//private static void ShowDifference(string oldText, string newText)
|
||||
@@ -1890,6 +1915,40 @@ namespace VEPROMS.CSLA.Library
|
||||
foreach (ItemInfo itemInfo in partInfo.MyItems)
|
||||
itemInfo.SpinThroughChildren();
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
private static DataTable Data_GetItemsWithChangedROs(int docversionid, int origfstid, int newfstid)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getItemsWithNewROs";
|
||||
cm.Parameters.AddWithValue("@VersionID", docversionid);
|
||||
cm.Parameters.AddWithValue("@OrigFSTid", origfstid);
|
||||
cm.Parameters.AddWithValue("@NewFSTid", newfstid);
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
|
||||
using (SqlDataAdapter da = new SqlDataAdapter(cm))
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
da.Fill(dt);
|
||||
return dt;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Database.LogException("ItemInfoList.Data_GetItemsWithChangedROs", ex);
|
||||
throw new DbCslaException("ItemInfoList.Data_GetItemsWithChangedROs", ex);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
#region LoadAtOnce
|
||||
// Method to Get Item and children
|
||||
@@ -4054,7 +4113,10 @@ namespace VEPROMS.CSLA.Library
|
||||
// date). Print_ViewableAfterChangeBarDate was created to get only that user specified date, if it exists. If it does exist, we compare
|
||||
// that with the Content datetime, otherwise we proceed as before.
|
||||
DateTime? viewableStartingDateTime = (MyProcedure.MyConfig as ProcedureConfig).Print_ViewableStartingChangeBarDate;
|
||||
if (viewableStartingDateTime != null && viewableStartingDateTime > MyProcedure.ChangeBarDate && (MyProcedure.MyConfig as ProcedureConfig).SelectedSlave == 0)
|
||||
// B2026-060 & B2026-061 removed the check of SelectedSlave (aka the selected child) from the IF statement,
|
||||
// This was causing some step to print with change bars when there should not have been - because of the use of
|
||||
// the Show Change Bars After date. The logic we need is built into the get of ChangeBarDate and Print_ViewableStartingChangeBarDate.
|
||||
if (viewableStartingDateTime != null && viewableStartingDateTime > MyProcedure.ChangeBarDate)
|
||||
return (MyContent.DTS > viewableStartingDateTime);
|
||||
return (MyContent.DTS > MyProcedure.ChangeBarDate);
|
||||
}
|
||||
@@ -8064,6 +8126,10 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
set { _ChangeBarDate = value; }
|
||||
}
|
||||
|
||||
//C2026-021 Expand Functionality of Viewing Mode
|
||||
public void ResetChangeBar() => _ChangeBarDate = null;
|
||||
|
||||
public Dictionary<int, ItemInfo> MyLookup = null;
|
||||
public override void SetupTags()
|
||||
{
|
||||
|
||||
@@ -61,35 +61,25 @@ namespace VEPROMS.CSLA.Library
|
||||
throw new DbCslaException("Pdf.DataPortal_Delete", ex);
|
||||
}
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// used to remove word section PDFs to force ROs to be updated when printed or saved
|
||||
public static void DeleteAllDocVersion(int versionID)
|
||||
public static void DeleteDocVersionPDFsWithNewROs(int versionID, int origfstid, int newfstid)
|
||||
{
|
||||
if (!CanDeleteObject())
|
||||
throw new System.Security.SecurityException("User not authorized to remove a Pdf");
|
||||
try
|
||||
{
|
||||
DataPortal.Delete(new VersionIDCriteria(versionID));
|
||||
DeleteWithNewROs(versionID, origfstid, newfstid);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new DbCslaException("Error on Pdf.DeleteAllDocVersion", ex);
|
||||
}
|
||||
}
|
||||
[Serializable()]
|
||||
protected class VersionIDCriteria
|
||||
|
||||
static private void DeleteWithNewROs(int docversionID, int origfstid, int newfstid)
|
||||
{
|
||||
private int _VersionID;
|
||||
public int VersionID
|
||||
{ get { return _VersionID; } }
|
||||
public VersionIDCriteria(int versionID)
|
||||
{
|
||||
_VersionID = versionID;
|
||||
}
|
||||
}
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
private void DataPortal_Delete(VersionIDCriteria criteria)
|
||||
{
|
||||
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Pdf.DataPortal_Delete", GetHashCode());
|
||||
try
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
@@ -98,20 +88,20 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandTimeout = Database.SQLTimeout;
|
||||
cm.CommandText = "deleteAllDocVersionPdfs";
|
||||
cm.Parameters.AddWithValue("@VersionID", criteria.VersionID);
|
||||
cm.CommandText = "deleteDocVersionPdfsWithNewROs";
|
||||
cm.Parameters.AddWithValue("@VersionID", docversionID);
|
||||
cm.Parameters.AddWithValue("@OrigFSTid", origfstid);
|
||||
cm.Parameters.AddWithValue("@NewFSTid", newfstid);
|
||||
cm.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("Pdf.DataPortal_Delete", ex);
|
||||
_ErrorMessage = ex.Message;
|
||||
throw new DbCslaException("Pdf.DataPortal_Delete", ex);
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("Pdf.DeleteWithNewROs", ex);
|
||||
throw new DbCslaException("Pdf.DeleteWithNewROs", ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
public partial class PdfInfo
|
||||
{
|
||||
|
||||
@@ -225,38 +225,59 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
// B2022-026 RO Memory Reduction code - pass in the ROFstInfo
|
||||
public static int RefreshROFst(DocVersionInfo dvi, ROFstInfoProgressBarRefresh myProgressBarRefresh, System.Windows.Forms.TextBox tbStatus, ROFstInfo origROFst)
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// Refresh at item level
|
||||
public static int RefreshROFstAtItemLevel(DocVersionInfo dvi, ROFstInfoProgressBarRefresh myProgressBarRefresh, System.Windows.Forms.TextBox tbStatus, ROFstInfo localROFst, int origfstid, int newfstid)
|
||||
{
|
||||
int fixedROs = 0;
|
||||
|
||||
if (dvi.DocVersionConfig.SelectedSlave <= 0)
|
||||
{
|
||||
myProgressBarRefresh(1, 100, "Update MS Word ROs");
|
||||
// remove word section PDFs to force update of RO values when printed
|
||||
myProgressBarRefresh(1, 100, "Updating MS Word ROs In Progress");
|
||||
Pdf.DeleteDocVersionPDFsWithNewROs(dvi.VersionID, origfstid, newfstid);
|
||||
|
||||
Pdf.DeleteAllDocVersion(dvi.VersionID); // remove word section PDFs to force update of RO values when printed
|
||||
//Loop Through ROs in this docversion that are different than the previous fst
|
||||
myProgressBarRefresh(50, 100, "Updating ROs In PROMS Steps In Progress");
|
||||
int i = 0;
|
||||
|
||||
foreach (ProcedureInfo proc in dvi.Procedures)
|
||||
List<ItemInfo> list = ItemInfo.GetItemInfoWithChangedROs(dvi.VersionID, origfstid, newfstid);
|
||||
foreach (ItemInfo itm in list)
|
||||
{
|
||||
DateTime start = DateTime.Now;
|
||||
|
||||
ProcedureInfo.ResetROCounters();
|
||||
myProgressBarRefresh(++i, dvi.Procedures.Count, string.Format("{0} ({1}/{2} ROs {3})", proc.DisplayNumber, i, dvi.Procedures.Count, fixedROs));
|
||||
ProcedureInfo.RefreshReferenceObjects(proc, origROFst);
|
||||
fixedROs += ProcedureInfo.ROFixCount;
|
||||
ItemInfo.ResetROCounters();
|
||||
myProgressBarRefresh(++i, list.Count, string.Format("{0} ({1}/{2} ROs {3})", itm.MyProcedure.DisplayNumber, i, list.Count, fixedROs));
|
||||
ItemInfo.RefreshReferenceObjects(itm, localROFst);
|
||||
fixedROs += ItemInfo.ROFixCount;
|
||||
|
||||
TimeSpan ts = DateTime.Now - start;
|
||||
|
||||
if (tbStatus != null)
|
||||
tbStatus.AppendText(string.Format("Procedure: {1}{0}, Checked {2} Referenced Objects{0}, Fixed {3} Referenced Objects{0}, Elapsed Seconds:{4}{0}{0}", Environment.NewLine, proc.DisplayNumber, ProcedureInfo.ROCheckCount, ProcedureInfo.ROFixCount, ts.TotalSeconds));
|
||||
tbStatus.AppendText(string.Format("Procedure: {1}{0}, Checked {2} Referenced Objects{0}, Fixed {3} Referenced Objects{0}, Elapsed Seconds:{4}{0}{0}", Environment.NewLine, itm.MyProcedure.DisplayNumber, ItemInfo.ROCheckCount, ItemInfo.ROFixCount, ts.TotalSeconds));
|
||||
}
|
||||
|
||||
//Update the DocVersion Associations to link to the new RO FST id and current date/time
|
||||
using (DocVersion dv = DocVersion.Get(dvi.VersionID))
|
||||
{
|
||||
if (dvi.DocVersionAssociations[0].MyROFst.ROFstID != newfstid)
|
||||
{
|
||||
dv.DocVersionAssociations[0].MyROFst = localROFst.GetJustROFst();
|
||||
SetAssociationLastCompleted(dv, DateTime.Now.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// pop up a message window telling the user the RO Update has completed and how many ROs were updated
|
||||
// If we are updating RO from the Admin Tools (from the V button) and we are updating more than on procedure set, then just append the "RO Update Complete" text
|
||||
// To the MessageList. Once completed will all procedure sets, Admin Tools will display one message box with all the results in it.
|
||||
if (MessageList == null)
|
||||
FlexibleMessageBox.Show(fixedROs == 0 ? "No ROs Required Updating" : string.Format("{0} ROs Updated for {1}", fixedROs, dvi.MyFolder.Name), "RO Update Complete");
|
||||
else
|
||||
MessageList.AppendLine((fixedROs == 0 ? "No ROs Required Updating for " : string.Format("{0} ROs Updated for ", fixedROs)) + dvi.MyFolder.Name);
|
||||
|
||||
return fixedROs;
|
||||
}
|
||||
|
||||
|
||||
//C2022-028 for Admin tool to check for bad RO links
|
||||
//B2022-144 we now loop through checked procedures list from Admin Tools and call this method for each procedure we want to process
|
||||
public static int CheckROLinksInThisProcedure(ProcedureInfo proc, System.Windows.Forms.TextBox tbStatus)
|
||||
@@ -291,34 +312,6 @@ namespace VEPROMS.CSLA.Library
|
||||
return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\ROUpdateReport_" + ValidFileName.FixFileName(dvi.MyFolder.Name.Replace(" ", "_") + "_" + DateTime.Now.ToString("MM-dd-yyyy_HH-mm-ss") + ".txt");
|
||||
}
|
||||
|
||||
// B2022-026 RO Memory Reduction code - moved the call to UpdateROFst() to before we call RefreshROFst
|
||||
// so that we used the correct ROFstInfo which as the needed event methods set when updated RO Table types
|
||||
public static ROFst RefreshROFst(DocVersion docver, ROFstInfo origROFst, ROFstInfoProgressBarRefresh myProgressBarRefresh, System.Windows.Forms.TextBox tbStatus)
|
||||
{
|
||||
ROFst rofst = null;
|
||||
|
||||
rofst = docver.DocVersionAssociations[0].MyROFst;
|
||||
|
||||
DocVersionInfo dvi = DocVersionInfo.Get(docver.VersionID);
|
||||
|
||||
SetAssociationLastCompleted(docver, string.Empty);
|
||||
int fixedROs = RefreshROFst(dvi, myProgressBarRefresh, tbStatus, origROFst);
|
||||
SetAssociationLastCompleted(docver, DateTime.Now.ToString()); // RO Update completed successfully and un-interrupted, save the date/time to the Doc Version Association config
|
||||
|
||||
myProgressBarRefresh(100, 100, "RO Update Complete"); // update the progress bar
|
||||
System.Windows.Forms.Application.DoEvents();
|
||||
|
||||
// pop up a message window telling the user the RO Update has completed and how many ROs were updated
|
||||
// If we are updating RO from the Admin Tools (from the V button) and we are updating more than on procedure set, then just append the "RO Update Complete" text
|
||||
// To the MessageList. Once completed will all procedure sets, Admin Tools will display one message box with all the results in it.
|
||||
if (MessageList == null)
|
||||
FlexibleMessageBox.Show(fixedROs == 0 ? "No ROs Required Updating" : string.Format("{0} ROs Updated for {1}", fixedROs, dvi.MyFolder.Name), "RO Update Complete");
|
||||
else
|
||||
MessageList.AppendLine((fixedROs == 0 ? "No ROs Required Updating for " : string.Format("{0} ROs Updated for ", fixedROs)) + dvi.MyFolder.Name);
|
||||
|
||||
return rofst;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates an ro.fst into a sql database.
|
||||
/// </summary>
|
||||
@@ -333,8 +326,12 @@ namespace VEPROMS.CSLA.Library
|
||||
// all of the calls aways set the flags to not update the RO values
|
||||
public static ROFst UpdateRoFst(RODbInfo rdi, DocVersion docver, ROFstInfo origROFst, ROFstInfoProgressBarRefresh myProgressBarRefresh)
|
||||
{
|
||||
ROWorkingDraftAsk.ClearWorkingDrafts();
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, 100, "Starting Update");
|
||||
|
||||
int origFSTid = origROFst.ROFstID;
|
||||
|
||||
DirectoryInfo di = new DirectoryInfo(rdi.FolderPath);
|
||||
string rofstfilepath = rdi.FolderPath + @"\ro.fst";
|
||||
FileStream fsIn = new FileStream(rofstfilepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
@@ -361,6 +358,7 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
docver.DocVersionAssociations[0].MyROFst = rofst;
|
||||
SetAssociationLastCompleted(docver, string.Empty);
|
||||
SetPrevFSTID(docver, origFSTid); // //C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
|
||||
return rofst;
|
||||
}
|
||||
@@ -384,6 +382,9 @@ namespace VEPROMS.CSLA.Library
|
||||
// Keep a list of ROIDs for Images that have changed.
|
||||
List<string> MyChangedFigureROIDs = UpdateROFigures(rdi, myProgressBarRefresh, rofst, rodb, myLookup, docver);
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
SetPrevFSTID(docver, origFSTid);
|
||||
|
||||
return rofst;
|
||||
}
|
||||
}
|
||||
@@ -484,6 +485,20 @@ namespace VEPROMS.CSLA.Library
|
||||
docver.Save();
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// Place the previous ROFSTID in the config in case network error or computer crashes while updating RO Values
|
||||
private static void SetPrevFSTID(DocVersion docver, int value)
|
||||
{
|
||||
if (docver.DocVersionAssociations[0]?.MyROFst != null && value != -1)
|
||||
{
|
||||
string cfg = docver.DocVersionAssociations[0].Config;
|
||||
AssociationConfig ac = new AssociationConfig((cfg == null || cfg.Length == 0) ? "<Config />" : cfg);
|
||||
ac.ROUpdate_PrevROFSTID = value.ToString();
|
||||
docver.DocVersionAssociations[0].Config = ac.ToString();
|
||||
docver.Save();
|
||||
}
|
||||
}
|
||||
|
||||
// Place the status of loading the RO Figures when updating RO Values
|
||||
private static void SetAssociationROFiguresLoading(DocVersion docver, string value)
|
||||
{
|
||||
@@ -670,187 +685,6 @@ namespace VEPROMS.CSLA.Library
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private static void UpdateROValuesText(ROFstInfo origROFstInfo, ROFst newROFst, DocVersionInfo dvi, ROFstInfoProgressBarRefresh myProgressBarRefresh, List<string> MyChangedFigureROIDs)
|
||||
{
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, 100, "Update Ro Values");
|
||||
|
||||
string versionList = dvi.VersionID.ToString();
|
||||
|
||||
ROFSTLookup origLookup = new ROFSTLookup(origROFstInfo.ROFstID, dvi);
|
||||
ROFSTLookup newLookup = new ROFSTLookup(newROFst.ROFstID, dvi);
|
||||
|
||||
List<string> delList = new List<string>();
|
||||
List<string> chgList = newLookup.GetValueDifferences(origROFstInfo.ROFstID, ref delList);
|
||||
|
||||
// Any figures which have been changed will be included in the list of values that have changed.
|
||||
if (MyChangedFigureROIDs != null)
|
||||
{
|
||||
foreach (string roid in MyChangedFigureROIDs)
|
||||
{
|
||||
if (!chgList.Contains(roid)) chgList.Add(roid);
|
||||
}
|
||||
}
|
||||
|
||||
string RoidList = GetRoidList(newROFst.RODbID, chgList);
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, chgList.Count, "Getting List of ROs Used");
|
||||
List<string> activeRoids = BuildActiveROIDsForRoUsages12(RoidList, versionList);
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, chgList.Count, "Updating RO Values");
|
||||
int iCount = 0;
|
||||
|
||||
if (activeRoids.Count > 0)
|
||||
{
|
||||
foreach (string chg in chgList)
|
||||
{
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(++iCount, chgList.Count, "Updating RO Values");
|
||||
if (activeRoids.Contains(chg.Substring(0, 12)))
|
||||
{
|
||||
ROFSTLookup.rochild roch = newLookup.GetRoChild(chg);
|
||||
string desc = string.Format("Change in RO Values: Old value = {0}, New value = {1}", origLookup.GetRoChild(chg).value, roch.value);
|
||||
|
||||
// roid's are stored in database as 16 characters long in the RoUsages table. They may be stored as 12 characters in the ro.fst.
|
||||
// string padroid = chg.Length <= 12 ? chg + "0000" : chg;
|
||||
// B2022-088: Find Doc Ro button not working in Word Sections
|
||||
string padroid = ROFSTLookup.FormatRoidKey(chg, true);
|
||||
|
||||
using (RoUsageInfoList affected = RoUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroid, desc, "Changed", versionList))
|
||||
{
|
||||
foreach (RoUsageInfo roUsg in affected)
|
||||
{
|
||||
using (Content content = Content.Get(roUsg.MyContent.ContentID))
|
||||
{
|
||||
foreach (ItemInfo ii in roUsg.MyContent.ContentItems)
|
||||
{
|
||||
string val = newLookup.GetTranslatedRoValue(padroid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, ii.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, ii);
|
||||
content.FixContentText(roUsg, val, roch.type, origROFstInfo, true);
|
||||
|
||||
if (content.IsDirty)
|
||||
{
|
||||
// Update UserID and DTS when RO Value is updated.
|
||||
content.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
content.DTS = DateTime.Now;
|
||||
content.Save();
|
||||
|
||||
if (content.MyGrid != null)
|
||||
{
|
||||
GridInfo.Refresh(content.MyGrid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, chgList.Count, "Getting List of ROs Used");
|
||||
List<string> activeDRoids = BuildActiveROIDsForDRoUsages12(RoidList, versionList);
|
||||
iCount = 0;
|
||||
|
||||
if (activeDRoids.Count > 0)
|
||||
{
|
||||
foreach (string chg in chgList)
|
||||
{
|
||||
// B2022-088: Find Doc Ro button not working in Word Sections
|
||||
// string padroid = chg.Length <= 12 ? chg + "0000" : chg;
|
||||
string padroid = ROFSTLookup.FormatRoidKey(chg, true);
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(++iCount, chgList.Count, "Updating RO Values");
|
||||
|
||||
if (activeDRoids.Contains(chg.Substring(0, 12)))
|
||||
{
|
||||
ROFSTLookup.rochild roch = newLookup.GetRoChild(chg);
|
||||
|
||||
string desc = string.Format("Change in RO Values: Old value = {0}, New value = {1}", origLookup.GetRoChild(chg).value, roch.value);
|
||||
|
||||
// roid's are stored in database as 16 characters long in the rousages table. They may be stored as 12 characters in the ro.fst.
|
||||
using (DROUsageInfoList affected = DROUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroid, desc, "Changed", versionList))
|
||||
{
|
||||
foreach (DROUsageInfo droUsg in affected)
|
||||
{
|
||||
Pdf.DeleteAll(droUsg.DocID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
iCount = 0;
|
||||
string RoidDelList = GetRoidList(newROFst.RODbID, delList);
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, chgList.Count, "Getting List of ROs Used");
|
||||
activeRoids = BuildActiveROIDsForRoUsages12(RoidDelList, versionList);
|
||||
|
||||
if (activeRoids.Count > 0)
|
||||
{
|
||||
foreach (string del in delList)
|
||||
{
|
||||
// B2022-088: Find Doc Ro button not working in Word Sections
|
||||
//string padroiddel = del.Length <= 12 ? del + "0000" : del;
|
||||
string padroiddel = ROFSTLookup.FormatRoidKey(del, true);
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(++iCount, chgList.Count, "Removing Old RO Values");
|
||||
string desc = string.Format("Deleted RO: Value = {0}", origLookup.GetRoChild(del).value);
|
||||
|
||||
if (activeRoids.Contains(del.Substring(0, 12).ToUpper()))
|
||||
{
|
||||
using (RoUsageInfoList affected = RoUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroiddel, desc, "Deleted", versionList))
|
||||
{
|
||||
foreach (RoUsageInfo roUsg in affected)
|
||||
{
|
||||
using (Content content = Content.Get(roUsg.MyContent.ContentID))
|
||||
{
|
||||
content.FixContentText(roUsg, "?", 0, origROFstInfo);
|
||||
if (content.IsDirty)
|
||||
{
|
||||
// Update UserID and DTS when RO Value is updated.
|
||||
content.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
content.DTS = DateTime.Now;
|
||||
content.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, chgList.Count, "Getting List of ROs Used");
|
||||
activeDRoids = BuildActiveROIDsForDRoUsages12(RoidDelList, versionList);
|
||||
iCount = 0;
|
||||
|
||||
if (activeDRoids.Count > 0)
|
||||
{
|
||||
foreach (string del in delList)
|
||||
{
|
||||
|
||||
// B2022-088: Find Doc Ro button not working in Word Sections
|
||||
string padroiddel = ROFSTLookup.FormatRoidKey(del, true);
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(++iCount, chgList.Count, "Removing Old RO Values");
|
||||
|
||||
string desc = string.Format("Deleted RO: Value = {0}", origLookup.GetRoChild(del).value);
|
||||
|
||||
// If there's an issue then maybe try getting the RoChild with the Padded roid instead
|
||||
//string desc = string.Format("Deleted RO: Value = {0}", origLookup.GetRoChild(padroiddel).value);
|
||||
|
||||
if (activeDRoids.Contains(del.Substring(0, 12).ToUpper()))
|
||||
{
|
||||
using (DROUsageInfoList Daffected = DROUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroiddel, desc, "Deleted", versionList))
|
||||
{
|
||||
foreach (DROUsageInfo droUsg in Daffected)
|
||||
{
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(++iCount, chgList.Count, "Removing Old RO Values");
|
||||
Pdf.DeleteAll(droUsg.DocID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(100, 100, "RO Values Updated");
|
||||
}
|
||||
|
||||
private static DateTime ShowDuration(DateTime dtLast, string message)
|
||||
{
|
||||
DateTime dtNext = DateTime.Now;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
public static class ROWorkingDraftAsk
|
||||
{
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private static List<int> WorkingDrafts = new List<int>();
|
||||
|
||||
public static void AddWorkingDrafts(int wd) => WorkingDrafts.Add(wd);
|
||||
|
||||
public static void ClearWorkingDrafts() => WorkingDrafts.Clear();
|
||||
|
||||
public static bool ContainsWorkingDraft(int wd) => WorkingDrafts.Contains(wd);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -396,6 +396,7 @@
|
||||
<Compile Include="Minimal\UserReports.cs" />
|
||||
<Compile Include="Minimal\UserSettings.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Session\ROWorkingDraftAsk.cs" />
|
||||
<Compile Include="VEObjects\VEDrillDown.cs" />
|
||||
<Compile Include="VEObjects\VETreeNode.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
class AlphabeticalNumbering
|
||||
{
|
||||
//private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static string Letter(int number)
|
||||
{
|
||||
char c = (char)(number + 64);
|
||||
return c.ToString();
|
||||
}
|
||||
public static string Convert(int number)
|
||||
{
|
||||
string retval=string.Empty;
|
||||
if (number > 26) retval += Letter((number-1) / 26);
|
||||
retval += Letter(1 + ((number-1) % 26));
|
||||
return retval;
|
||||
}
|
||||
//private static int[] _TestLetters = new int[] {
|
||||
// 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,
|
||||
// 52,53,78,79,104,105
|
||||
// };
|
||||
//public static void ShowLetters()
|
||||
//{
|
||||
// for (int i = 0; i < _TestLetters.Length; i++)
|
||||
// {
|
||||
// if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", _TestLetters[i], Convert(_TestLetters[i]));
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,11 @@
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Base.Library;
|
||||
using Volian.Pipe.Library;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
@@ -64,14 +59,14 @@ namespace Volian.Controls.Library
|
||||
AddAttribute(xe, "Text", myItemInfo.DisplayText);
|
||||
_ProcList.DocumentElement.AppendChild(xe);
|
||||
|
||||
if (myItemInfo.Cautions != null) foreach (StepInfo caui in myItemInfo.Cautions) AddItem(myItemInfo.ItemID, caui);
|
||||
if (myItemInfo.Notes != null) foreach (StepInfo noti in myItemInfo.Notes) AddItem(myItemInfo.ItemID, noti);
|
||||
if (myItemInfo.RNOs != null) foreach (StepInfo rnoi in myItemInfo.RNOs) AddItem(myItemInfo.ItemID, rnoi);
|
||||
if (myItemInfo.Sections != null) foreach (SectionInfo seci in myItemInfo.Sections) AddItem(myItemInfo.ItemID, seci);
|
||||
if (myItemInfo.Cautions != null) foreach (StepInfo caui in myItemInfo.Cautions.OfType<StepInfo>()) AddItem(myItemInfo.ItemID, caui);
|
||||
if (myItemInfo.Notes != null) foreach (StepInfo noti in myItemInfo.Notes.OfType<StepInfo>()) AddItem(myItemInfo.ItemID, noti);
|
||||
if (myItemInfo.RNOs != null) foreach (StepInfo rnoi in myItemInfo.RNOs.OfType<StepInfo>()) AddItem(myItemInfo.ItemID, rnoi);
|
||||
if (myItemInfo.Sections != null) foreach (SectionInfo seci in myItemInfo.Sections.OfType<SectionInfo>()) AddItem(myItemInfo.ItemID, seci);
|
||||
if (myItemInfo.Steps != null)
|
||||
{
|
||||
if(myItemInfo.IsSection || (myItemInfo.IsHigh && SubStepHasRNOs(myItemInfo.Steps)))
|
||||
foreach (StepInfo stpi in myItemInfo.Steps) AddItem(myItemInfo.ItemID, stpi);
|
||||
foreach (StepInfo stpi in myItemInfo.Steps.OfType<StepInfo>()) AddItem(myItemInfo.ItemID, stpi);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -102,7 +97,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
_CurrentItem = value;
|
||||
SetupCurrentItemValues();
|
||||
SetupConfigEdit();
|
||||
// B2017-126 Only turn-on NamedPipe if Command Line parameter /NamedPipe is used.
|
||||
// This eliminates waiting for the Pipe if the command line parameter is not used.
|
||||
if (ExeType > 0 && Volian.Base.Library.VlnSettings.GetCommandFlag("NamedPipe")) SendPromsAnnotationData();
|
||||
@@ -130,10 +124,7 @@ namespace Volian.Controls.Library
|
||||
if (ai.TypeID == ExeType) return ai;
|
||||
return null;
|
||||
}
|
||||
private void SetupConfigEdit()
|
||||
{
|
||||
//if (ExeType == 0) ; // initialize ExeType
|
||||
}
|
||||
|
||||
private string _ExePath;
|
||||
private string _PipeOut;
|
||||
private string _PipeIn;
|
||||
@@ -256,9 +247,6 @@ namespace Volian.Controls.Library
|
||||
public AnnotationDetails()
|
||||
{
|
||||
InitializeComponent();
|
||||
//#if(DEBUG)
|
||||
//Resize+=new EventHandler(AnnotationDetails_Resize); // Debug the resize event
|
||||
//#endif
|
||||
Resize += AnnotationDetails_Resize;
|
||||
}
|
||||
|
||||
@@ -284,17 +272,12 @@ namespace Volian.Controls.Library
|
||||
// CSM B2024-068 / B2024-069 - check if current annotation is not selected before removal of annotation
|
||||
if (CurrentAnnotation != null)
|
||||
{
|
||||
//using (Annotation annotation = CurrentAnnotation.Get())
|
||||
//{
|
||||
// annotation.Delete();
|
||||
_AnnotationSearch.LoadingList = true;
|
||||
Annotation.DeleteAnnotation(CurrentAnnotation);
|
||||
// annotation.Save();
|
||||
_AnnotationSearch.LoadingList = false;
|
||||
CurrentAnnotation = null;
|
||||
UpdateAnnotationGrid();
|
||||
_AnnotationSearch.UpdateAnnotationSearchResults(); // B2019-004: update search results list when an annotation is removed.
|
||||
//}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -425,14 +408,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckClientProcess()
|
||||
{
|
||||
if (ClientProcess.HasExited)
|
||||
{
|
||||
ClientProcess = null;
|
||||
StartClientProcess();
|
||||
}
|
||||
}
|
||||
void ClientProcess_Exited(object sender, EventArgs e)
|
||||
{
|
||||
ClientProcess = null;
|
||||
@@ -477,7 +452,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
XmlDocument xdConfig = new XmlDocument();
|
||||
xdConfig.LoadXml(ai.Config);
|
||||
ProcedureInfo currentProc = CurrentItem.MyProcedure;
|
||||
XmlNode nd = xdMessage.DocumentElement.SelectSingleNode("//PromsAnnotationConfig");
|
||||
nd.AppendChild(xdMessage.ImportNode(xdConfig.DocumentElement, true));
|
||||
}
|
||||
@@ -595,7 +569,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private XmlNode GetNode(XmlDocument xd, string nodeName)
|
||||
{
|
||||
return xd.DocumentElement.SelectSingleNode("//" + nodeName);
|
||||
return xd.DocumentElement.SelectSingleNode($"//{nodeName}");
|
||||
}
|
||||
private string GetAttribute(XmlDocument xd, string nodeName, string attrName)
|
||||
{
|
||||
@@ -670,7 +644,7 @@ namespace Volian.Controls.Library
|
||||
if (!_LoadingGrid && (dgAnnotations.FirstDisplayedScrollingRowIndex != -1))
|
||||
dgAnnotations.FirstDisplayedScrollingRowIndex = row;
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
_MyLog.InfoFormat("Trying to open an annotation which has been removed");
|
||||
}
|
||||
@@ -692,8 +666,6 @@ namespace Volian.Controls.Library
|
||||
using (Annotation annotation = Annotation.MakeAnnotation(myItem, annotationType, rtxbComment.Rtf, rtxbComment.Text, ""))
|
||||
{
|
||||
CurrentAnnotation = AnnotationInfo.Get(annotation.AnnotationID);
|
||||
//annotation.DTS = DateTime.Now;
|
||||
//annotation.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -724,7 +696,7 @@ namespace Volian.Controls.Library
|
||||
private void btnEPAnnotation_Click(object sender, EventArgs e)
|
||||
{
|
||||
frmEPAnnotationDetails EPfrm = new frmEPAnnotationDetails(CurrentAnnotation);
|
||||
DialogResult dr = EPfrm.ShowDialog(this);
|
||||
_ = EPfrm.ShowDialog(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -11,17 +8,9 @@ namespace Volian.Controls.Library
|
||||
public partial class BorderListBox : ListBox
|
||||
{
|
||||
#region Properties
|
||||
public GridLinePattern SelectedLinePattern
|
||||
{
|
||||
get { return (Items[SelectedIndex] as GridLBItem).LinePattern; }
|
||||
}
|
||||
public GridLinePattern SelectedLinePattern => (Items[SelectedIndex] as GridLBItem).LinePattern;
|
||||
#endregion
|
||||
#region ctor
|
||||
public BorderListBox()
|
||||
{
|
||||
InitializeComponent();
|
||||
SetupOptions();
|
||||
}
|
||||
public BorderListBox(IContainer container)
|
||||
{
|
||||
container.Add(this);
|
||||
@@ -31,9 +20,7 @@ namespace Volian.Controls.Library
|
||||
private void SetupOptions()
|
||||
{
|
||||
this.DrawMode = DrawMode.OwnerDrawFixed;
|
||||
//this.Font.Size;
|
||||
DrawItem += new DrawItemEventHandler(BorderListBox_DrawItem);
|
||||
//MeasureItem += new MeasureItemEventHandler(BorderListBox_MeasureItem);
|
||||
Items.Add(new GridLBItem(GridLinePattern.None));
|
||||
Items.Add(new GridLBItem(GridLinePattern.Single));
|
||||
Items.Add(new GridLBItem(GridLinePattern.Double));
|
||||
@@ -55,10 +42,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Event Handlers
|
||||
//void BorderListBox_MeasureItem(object sender, MeasureItemEventArgs e)
|
||||
//{
|
||||
// e.ItemHeight = 22;
|
||||
//}
|
||||
private int _MaxLabelWidth = 0;
|
||||
private int MaxLabelWidth(Graphics gr)
|
||||
{
|
||||
@@ -103,24 +86,13 @@ namespace Volian.Controls.Library
|
||||
public class GridLBItem
|
||||
{
|
||||
#region Properties
|
||||
private GridLinePattern _LinePattern;
|
||||
public GridLinePattern LinePattern
|
||||
{
|
||||
get { return _LinePattern; }
|
||||
set { _LinePattern = value; }
|
||||
}
|
||||
public GridLinePattern LinePattern { get; set; }
|
||||
#endregion
|
||||
#region ctor
|
||||
public GridLBItem(GridLinePattern linePattern)
|
||||
{
|
||||
LinePattern = linePattern;
|
||||
}
|
||||
public GridLBItem(GridLinePattern linePattern) => LinePattern = linePattern;
|
||||
#endregion
|
||||
#region Public Methods
|
||||
public override string ToString()
|
||||
{
|
||||
return LinePattern.ToString();
|
||||
}
|
||||
public override string ToString() => LinePattern.ToString();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using C1.Win.C1FlexGrid;
|
||||
@@ -16,7 +13,7 @@ namespace Volian.Controls.Library
|
||||
public event BorderSelectionPanelEvent BordersChanged;
|
||||
private void OnBordersChanged(object sender, EventArgs args)
|
||||
{
|
||||
if (BordersChanged != null) BordersChanged(sender, args);
|
||||
BordersChanged?.Invoke(sender, args);
|
||||
}
|
||||
#endregion
|
||||
#region Properties
|
||||
@@ -155,8 +152,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public void InitializeBorder(VlnFlexGrid myFlexGrid, CellRange myRange)
|
||||
{
|
||||
//if (myRange.r1 == 0 && myRange.c1 == 0 && myRange.r2 == 2 && myRange.c2 == 2)
|
||||
//Console.WriteLine("here");
|
||||
_TopBorder = GridLinePattern.Unknown;
|
||||
_InsideHorizontalBorder = GridLinePattern.Unknown;
|
||||
_BottomBorder = GridLinePattern.Unknown;
|
||||
@@ -249,18 +244,11 @@ namespace Volian.Controls.Library
|
||||
DrawBackground(e, x1, y1, x2, y2, w1, h1, w2, h2, offset, HasRows, HasColumns);
|
||||
DrawBorder(e, x1, y1, x2, y2);
|
||||
}
|
||||
#pragma warning disable IDE0060 // Remove unused parameter
|
||||
private static void DrawBackground(PaintEventArgs e, int x1, int y1, int x2, int y2, int w1, int h1, int w2, int h2, int offset,bool hasRows, bool hasColumns)
|
||||
#pragma warning restore IDE0060 // Remove unused parameter
|
||||
{
|
||||
e.Graphics.FillRectangle(Brushes.White, offset, offset, w2 - 2* offset, h2 - 2* offset);
|
||||
// Old Backgound - Shows corners
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, x1, offset, x1, y1);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, x2, offset, x2, y1);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, x1, y2, x1, h2 - offset);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, x2, y2, x2, h2 - offset);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, offset, y1, x1, y1);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, x2, y1, w2 - offset, y1);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, offset, y2, x1, y2);
|
||||
//e.Graphics.DrawLine(Pens.LightBlue, x2, y2, w2 - offset, y2);
|
||||
// Horizontal Lines
|
||||
e.Graphics.DrawLine(Pens.LightBlue, offset, y1, w2 - offset, y1);
|
||||
if (hasRows) e.Graphics.DrawLine(Pens.LightBlue, x1 + offset, (y1 + y2) / 2, x2 - offset , (y1 + y2) / 2);
|
||||
@@ -287,8 +275,8 @@ namespace Volian.Controls.Library
|
||||
if (LineWidth(linePattern) == 3)
|
||||
{
|
||||
dxo2 = dxo1 = -1;
|
||||
dyi2 = dyo1 = LineWidth(startPattern) == 3 ? -1 : 0;
|
||||
dyi1 =dyo2 = LineWidth(endPattern) == 3 ? 1 : 0;
|
||||
dyo1 = LineWidth(startPattern) == 3 ? -1 : 0;
|
||||
dyo2 = LineWidth(endPattern) == 3 ? 1 : 0;
|
||||
dxi1 = -dxo1; dxi2 = -dxo2; dyi1 = -dyo1; dyi2 = -dyo2;
|
||||
if (linePattern == GridLinePattern.Thick) dyo2++; // Fix for bug in Graphics. Seems to happen when line is thick.
|
||||
}
|
||||
@@ -303,8 +291,8 @@ namespace Volian.Controls.Library
|
||||
if (LineWidth(linePattern) == 3)
|
||||
{
|
||||
dyo2 = dyo1 = 1;
|
||||
dxi2 = dxo1 = LineWidth(startPattern) == 3 ? -1 : 0;
|
||||
dxi1 = dxo2 = LineWidth(endPattern) == 3 ? 1 : 0;
|
||||
dxo1 = LineWidth(startPattern) == 3 ? -1 : 0;
|
||||
dxo2 = LineWidth(endPattern) == 3 ? 1 : 0;
|
||||
dxi1 = -dxo1;dxi2 = -dxo2;dyi1 = -dyo1;dyi2 = -dyo2;
|
||||
if (linePattern == GridLinePattern.Thick) dxo2++; // Fix for bug in Graphics. Seems to happen when line is thick.
|
||||
}
|
||||
@@ -347,7 +335,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (linePattern == GridLinePattern.None) return;
|
||||
int dyi1 = 0; int dyi2 = 0; int dxi1 = 0; int dxi2 = 0;
|
||||
int dyo1 = 0; int dyo2 = 0; int dxo1 = 0; int dxo2 = 0;
|
||||
int dyo1; int dyo2; int dxo1 = 0; int dxo2 = 0;
|
||||
if (LineWidth(linePattern) == 3)
|
||||
{
|
||||
dxo2 = dxo1 = 1;
|
||||
@@ -368,7 +356,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (linePattern == GridLinePattern.None) return;
|
||||
int dyi1 = 0; int dyi2 = 0; int dxi1 = 0; int dxi2 = 0;
|
||||
int dyo1 = 0; int dyo2 = 0; int dxo1 = 0; int dxo2 = 0;
|
||||
int dyo1 = 0; int dyo2 = 0; int dxo1; int dxo2;
|
||||
if (LineWidth(linePattern) == 3)
|
||||
{
|
||||
dyo2 = dyo1 = -1;
|
||||
|
||||
@@ -1,33 +1,24 @@
|
||||
using C1.Win.C1FlexGrid;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Controls.Library;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
public partial class frmImportWordContents : Form
|
||||
{
|
||||
private static string GetTableText()
|
||||
{
|
||||
return TblFlexGrid.GetSearchableText();
|
||||
}
|
||||
private static VlnFlexGrid _TblFlexGrid = null;
|
||||
|
||||
public static VlnFlexGrid TblFlexGrid
|
||||
{
|
||||
get {
|
||||
if (_TblFlexGrid == null) _TblFlexGrid = new VlnFlexGrid();
|
||||
return frmImportWordContents._TblFlexGrid;
|
||||
return _TblFlexGrid;
|
||||
}
|
||||
set { frmImportWordContents._TblFlexGrid = value; }
|
||||
set { _TblFlexGrid = value; }
|
||||
}
|
||||
|
||||
private static void LoadTable2(XmlNode xn)
|
||||
@@ -54,15 +45,7 @@ namespace Volian.Controls.Library
|
||||
fg.BringToFront();
|
||||
fg.Invalidate();
|
||||
Application.DoEvents();
|
||||
//ShowColumnWidths(fg);
|
||||
fg.MakeRTFcells(false);
|
||||
//ShowMergedCells(fg);
|
||||
//ShowColumnWidths(fg);
|
||||
//Well, Can I save the table
|
||||
//using (Step step = MakeCSLAStep(mySteps, mySteps.Count, null, {TableContent}, 20008, E_FromType.Table))
|
||||
//{
|
||||
// Grid.MakeGrid(step.MyContent, fg.GetXMLData(), "");
|
||||
//}
|
||||
}
|
||||
public static VlnFlexGrid _MyFlexGrid = null;
|
||||
private static void AddTableRow(XmlNode xr, VlnFlexGrid fg, int rows)
|
||||
@@ -73,14 +56,7 @@ namespace Volian.Controls.Library
|
||||
foreach (XmlNode xc in xr.ChildNodes)
|
||||
{
|
||||
++cols;
|
||||
//if (xc.InnerText.Contains("RC-V200"))
|
||||
// Console.WriteLine(xc.InnerText);
|
||||
//if (xc.InnerText.Contains("RC-V121"))
|
||||
// Console.WriteLine(xc.InnerText);
|
||||
//if (xc.InnerXml.Contains("AB 137") || xc.InnerXml.Contains("3013N01"))
|
||||
// Console.WriteLine("here");
|
||||
CellRange cr2 = GetMyMergedRange(fg, rows - 1, cols - 1);
|
||||
//Console.WriteLine("Check {0}", cr2);
|
||||
while (cr2.c1 != cols - 1 || cr2.r1 != rows - 1)
|
||||
{
|
||||
cols++;
|
||||
@@ -123,7 +99,6 @@ namespace Volian.Controls.Library
|
||||
break;
|
||||
}
|
||||
}
|
||||
//ShowMergedCells(fg);
|
||||
if (xc.Name == "td")
|
||||
{
|
||||
AddTableColumn(xc, fg, rows, cols);
|
||||
@@ -131,26 +106,9 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
//private static void ShowColumnWidths(VlnFlexGrid fg)
|
||||
//{
|
||||
// foreach (Column c in fg.Cols)
|
||||
// Console.WriteLine("Width[{0}]={1}", c.Index, c.Width);
|
||||
//}
|
||||
private static void ShowMergedCells(VlnFlexGrid fg)
|
||||
{
|
||||
for (int r = 0; r < fg.Rows.Count; r++)
|
||||
{
|
||||
for (int c = 0; c < fg.Cols.Count; c++)
|
||||
{
|
||||
CellRange cr3 = GetMyMergedRange(fg, r, c);
|
||||
if (fg.MergedRanges.Contains(cr3))
|
||||
Console.WriteLine("cr3 r={0},c={1},rng={2}", r, c, cr3);
|
||||
}
|
||||
}
|
||||
}
|
||||
private static int GetSpan(string span)
|
||||
{
|
||||
int retval = int.Parse("0" + (span ?? ""));
|
||||
int retval = int.Parse($"0{span ?? ""}");
|
||||
if (retval == 0) return 0;
|
||||
return retval - 1;
|
||||
}
|
||||
@@ -175,11 +133,13 @@ namespace Volian.Controls.Library
|
||||
if (r2 > fg.Rows.Count) fg.Rows.Count = r2;
|
||||
int c2 = c1 + GetSpan(colspan);
|
||||
if (c2 > fg.Cols.Count) fg.Cols.Count = c2;
|
||||
CellRange cr = new CellRange();
|
||||
cr.r1 = r1 - 1;
|
||||
cr.r2 = r2 - 1;
|
||||
cr.c1 = c1 - 1;
|
||||
cr.c2 = c2 - 1;
|
||||
CellRange cr = new CellRange
|
||||
{
|
||||
r1 = r1 - 1,
|
||||
r2 = r2 - 1,
|
||||
c1 = c1 - 1,
|
||||
c2 = c2 - 1
|
||||
};
|
||||
fg.MergedRanges.Add(cr);
|
||||
//Console.WriteLine("Merged {0}", cr);
|
||||
}
|
||||
@@ -194,7 +154,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
return fg.GetMergedRange(r, c);
|
||||
}
|
||||
private static Regex regNumber = new Regex("^[0-9]+$", RegexOptions.Compiled);
|
||||
private static readonly Regex regNumber = new Regex("^[0-9]+$", RegexOptions.Compiled);
|
||||
private static void AddTableColumn(XmlNode xc, VlnFlexGrid fg, int rows, int cols)
|
||||
{
|
||||
//Console.WriteLine("Rows {0}, Cols {1}", rows, cols);
|
||||
@@ -218,7 +178,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (xn.Name == "p")
|
||||
{
|
||||
sb.Append(prefix + xn.InnerText);
|
||||
sb.Append($"{prefix}{xn.InnerText}");
|
||||
}
|
||||
if (xn.Name == "ul")
|
||||
{
|
||||
@@ -226,11 +186,11 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (xn2.Name == "li")
|
||||
{
|
||||
sb.Append(prefix + "*" + xn.InnerText);
|
||||
sb.Append($"{prefix}*{xn.InnerText}");
|
||||
}
|
||||
if (xn2.Name == "p")
|
||||
{
|
||||
sb.Append(prefix + xn.InnerText);
|
||||
sb.Append($"{prefix}{xn.InnerText}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Controls.Library;
|
||||
using System.Reflection;
|
||||
using LBWordLibrary;
|
||||
using JR.Utils.GUI.Forms;
|
||||
@@ -17,7 +12,7 @@ namespace Volian.Controls.Library
|
||||
public partial class DSOTabPanel : DevComponents.DotNetBar.PanelDockContainer
|
||||
{
|
||||
#region Private Fields
|
||||
private DisplayTabControl _MyDisplayTabControl;
|
||||
private readonly DisplayTabControl _MyDisplayTabControl;
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private AxEDWordLib.AxEDWord _MyEdWord; // B2017-133 Edraw DSO Framer Replacement
|
||||
public AxEDWordLib.AxEDWord MyEdWord
|
||||
@@ -26,9 +21,7 @@ namespace Volian.Controls.Library
|
||||
set { _MyEdWord = value; }
|
||||
}
|
||||
private TransparentPanel _MyTransparentPanel;
|
||||
private static int _Count = 0;
|
||||
private DocumentInfo _MyDocumentInfo;
|
||||
private int _MyCount;
|
||||
private readonly DocumentInfo _MyDocumentInfo;
|
||||
private DisplayTabItem _MyDisplayTabItem;
|
||||
private DSOFile _DSOFile;
|
||||
public static int MSWordLimit = 10;
|
||||
@@ -43,11 +36,7 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Count of DSO Pages open. Limited to 18 in DisplayTabControl
|
||||
/// </summary>
|
||||
public static int Count
|
||||
{
|
||||
get { return _Count; }
|
||||
set { _Count = value; }
|
||||
}
|
||||
public static int Count { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Pointer to the related DisplayTabItem
|
||||
/// </summary>
|
||||
@@ -90,23 +79,17 @@ namespace Volian.Controls.Library
|
||||
if (_MyEdWord == null) return false; // B2017-133 Edraw Is Dirty Property
|
||||
// B2017-249 Recover Temporary File And AutoSave support for MSWord
|
||||
return _MyEdWord.IsDirty() || MyDSOFile.ContentIsDirty;
|
||||
//LBDocumentClass doc = new LBDocumentClass(_MyEdWord.ActiveDocument());
|
||||
//return !doc.Saved;
|
||||
}
|
||||
}
|
||||
private bool _OverrideClose = false;
|
||||
public bool OverrideClose
|
||||
{
|
||||
get { return _OverrideClose; }
|
||||
set { _OverrideClose = value; }
|
||||
}
|
||||
|
||||
public bool OverrideClose { get; set; } = false;
|
||||
public E_ViewMode PanelViewEditMode = E_ViewMode.Edit;
|
||||
#endregion
|
||||
//private frmPG _frm = null;
|
||||
#region Constructors
|
||||
private Timer _RefreshTimer;
|
||||
private ItemInfo _ItemInfo;
|
||||
private bool _AllowedToEdit;
|
||||
private readonly Timer _RefreshTimer;
|
||||
private readonly ItemInfo _ItemInfo;
|
||||
private readonly bool _AllowedToEdit;
|
||||
public DSOTabPanel(DocumentInfo documentInfo, DisplayTabControl myDisplayTabControl, ItemInfo itemInfo, bool allowedToEdit)
|
||||
{
|
||||
_MyDisplayTabControl = myDisplayTabControl;
|
||||
@@ -117,8 +100,10 @@ namespace Volian.Controls.Library
|
||||
_MyDocumentInfo = documentInfo;
|
||||
SetupDSO();
|
||||
if (_MyEdWord == null) return; //B2017-219 could not open the word attachment so just return
|
||||
_RefreshTimer = new Timer(); // Enabled is false and interval is 1/10th of second.
|
||||
_RefreshTimer.Interval = 500;// B2017-133 Edraw
|
||||
_RefreshTimer = new Timer
|
||||
{
|
||||
Interval = 500// B2017-133 Edraw
|
||||
}; // Enabled is false and interval is 1/10th of second.
|
||||
ClientSizeChanged += new EventHandler(DSOTabPanel_ClientSizeChanged);
|
||||
_RefreshTimer.Tick += new EventHandler(_RefreshTimer_Tick);
|
||||
// B2018-070 Activate MS Word Panel
|
||||
@@ -145,21 +130,14 @@ namespace Volian.Controls.Library
|
||||
_MyEdWord.DisablePrintHotKey(true);
|
||||
}
|
||||
// B2019-161 When tracking timing time this action
|
||||
private static VolianTimer _TimeActivity = new VolianTimer("DSOTabPanel.cs _RefreshTimer_Tick", 148);
|
||||
private static readonly VolianTimer _TimeActivity = new VolianTimer("DSOTabPanel.cs _RefreshTimer_Tick", 148);
|
||||
|
||||
void _RefreshTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
_TimeActivity.Open();
|
||||
_RefreshTimer.Enabled = false;
|
||||
if (_MyEdWord != null)// B2017-133 Edraw
|
||||
{
|
||||
// B2018-070 Activate MS Word Panel
|
||||
_MyEdWord.GotoItem(EDWordLib.WdGoToItem.wdGoToObject, EDWordLib.WdGoToDirection.wdGoToNext, 0, null);
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// _MyDisplayTabControl.CloseTabItem(_MyDisplayTabItem);
|
||||
//}
|
||||
_MyEdWord?.GotoItem(EDWordLib.WdGoToItem.wdGoToObject, EDWordLib.WdGoToDirection.wdGoToNext, 0, null);
|
||||
_TimeActivity.Close();
|
||||
}
|
||||
|
||||
@@ -180,8 +158,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private void SetupDSO()
|
||||
{
|
||||
_Count++; // Increment the count of open Word documents (Limit = MSWordLimit)
|
||||
_MyCount = _Count;
|
||||
Count++; // Increment the count of open Word documents (Limit = MSWordLimit)
|
||||
this._MyTransparentPanel = new TransparentPanel();
|
||||
this._MyEdWord = new AxEDWordLib.AxEDWord();// B2017-133 Edraw
|
||||
_MyEdWord.BeginInit();
|
||||
@@ -195,14 +172,8 @@ namespace Volian.Controls.Library
|
||||
this._MyTransparentPanel.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this._MyTransparentPanel.ForeColor = System.Drawing.Color.Brown; // This is the color used to show InActive on the right side on the Word
|
||||
// document menu line.
|
||||
//this._MyTransPanel.Location = new System.Drawing.Point(0, 0);
|
||||
//this._MyTransPanel.Name = "transPanel1";
|
||||
//this._MyTransPanel.Size = new System.Drawing.Size(370, 423);
|
||||
//this._MyTransPanel.TabIndex = 1;
|
||||
this._MyTransparentPanel.Click += new EventHandler(_MyTransparentPanel_Click);
|
||||
this._MyEdWord.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
//System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WordDSOTab));
|
||||
//this._DSOFramer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("_FC.OcxState")));
|
||||
_MyEdWord.EndInit();
|
||||
LBDocumentClass doc;
|
||||
try
|
||||
@@ -215,18 +186,13 @@ namespace Volian.Controls.Library
|
||||
this._MyEdWord.Open(MyDSOFile.MyFile.FullName);
|
||||
doc = new LBDocumentClass(_MyEdWord.ActiveDocument());
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
// B2017-137 Restore Previous valid version if the current version cannot be opened,
|
||||
using (DocumentAuditInfoList dail = DocumentAuditInfoList.Get(MyDocumentInfo.DocID))
|
||||
{
|
||||
if (dail.Count > 0)
|
||||
{
|
||||
//DocumentAuditInfo dai = dail[0];
|
||||
//foreach (DocumentAuditInfo tmpa in dail)
|
||||
//{
|
||||
// if (tmpa.DTS > dai.DTS) dai = tmpa;
|
||||
//}
|
||||
if (MessageBox.Show("Do you want to revert to a previous version?", "Error in MS Word section",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
@@ -242,12 +208,6 @@ namespace Volian.Controls.Library
|
||||
MyDSOFile.SaveFile(0, "", _ItemInfo, false, StatusChanged); // B2017-219 save the restored document to database
|
||||
this._MyEdWord = null; // B2017-219 Set MyEdWord to null - we will check for this in the calling functions
|
||||
return;
|
||||
//_MyDocumentInfo = DocumentInfo.Get(MyDocumentInfo.DocID);
|
||||
//DocumentInfo.Refresh(myDoc);
|
||||
////_DSOFile = null;
|
||||
//this._MyEdWord.Open(MyDSOFile.MyFile.FullName);
|
||||
//doc = new LBDocumentClass(_MyEdWord.ActiveDocument());
|
||||
//doc.Range(1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,19 +227,16 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
doc = new LBDocumentClass(_MyEdWord.ActiveDocument());
|
||||
//Console.WriteLine("Version {0}", doc.Application.Version);
|
||||
float ver;
|
||||
if (!float.TryParse(doc.Application.Version, out ver))
|
||||
if (!float.TryParse(doc.Application.Version, out float ver))
|
||||
ver = 12.0F;
|
||||
this.Enter += new EventHandler(DSOTabPanel_Enter);
|
||||
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
|
||||
this.Leave += DSOTabPanel_Leave;
|
||||
Application.DoEvents();
|
||||
// The following line corrects Symbol characters in MSWord Sections
|
||||
// CheckForSymbolCharacters(doc);
|
||||
InitializeWordDocument(doc);
|
||||
FindSearchString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
//string message = ShowException(ex);
|
||||
//Console.WriteLine("\r\n-------------\r\n{0}{1}{2}\r\n-------------\r\n", MyDSOFile.MyFile.FullName, ex.GetType().Name, message);
|
||||
@@ -301,8 +258,6 @@ namespace Volian.Controls.Library
|
||||
DocStyle ds = MyDocumentInfo.DocumentEntries[0].MyContent.ContentItems[0].MyDocStyle;
|
||||
// this will cause an error and goto the Catch if the family or size is null,
|
||||
// Westinghouse needs it to to this - at least for now
|
||||
//if (ds.Font.Family != null) doc.Application.Selection.Font.Name = ds.Font.Family;
|
||||
//if (ds.Font.Size != null) doc.Application.Selection.Font.Size = (float)ds.Font.Size;
|
||||
doc.Application.Selection.Font.Name = ds.Font.Family;
|
||||
doc.Application.Selection.Font.Size = (float)ds.Font.Size;
|
||||
doc.Application.Selection.ParagraphFormat.SpaceBefore = 0;
|
||||
@@ -314,12 +269,12 @@ namespace Volian.Controls.Library
|
||||
if (doc.ActiveWindow.ActivePane.View.Zoom.Percentage < 40)
|
||||
doc.ActiveWindow.ActivePane.View.Zoom.Percentage = 100;
|
||||
}
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "found set for debugging purposes")]
|
||||
public void FindSearchString()
|
||||
{
|
||||
if (SearchString == null) return;
|
||||
// Get the Document
|
||||
LBDocumentClass wordDoc = new LBDocumentClass(_MyEdWord.ActiveDocument());
|
||||
//LBSelection sel = wordDoc.Application.Selection;
|
||||
LBFind find = wordDoc.Application.Selection.Find;
|
||||
find.ClearFormatting();
|
||||
bool wildCards = SearchString.Contains("?") || SearchString.Contains("*");
|
||||
@@ -350,51 +305,10 @@ namespace Volian.Controls.Library
|
||||
if (sel.Start == sel.End) return null;
|
||||
return sel.Text;
|
||||
}
|
||||
|
||||
private string ShowException(Exception ex)
|
||||
{
|
||||
string sep = "\r\n ";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
do
|
||||
{
|
||||
sb.Append(sep + ex.Message);
|
||||
sep += " ";
|
||||
ex = ex.InnerException;
|
||||
} while (ex != null);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
//void _MyDSOFramer_Leave(object sender, EventArgs e)
|
||||
//{
|
||||
// vlnStackTrace.ShowStack("DSO Leave {0}", this.MyDocumentInfo.DocID);
|
||||
//}
|
||||
|
||||
//void _MyDSOFramer_Enter(object sender, EventArgs e)
|
||||
//{
|
||||
// vlnStackTrace.ShowStack("DSO Enter {0}", this.MyDocumentInfo.DocID);
|
||||
//}
|
||||
|
||||
//void _MyDSOFramer_GotFocus(object sender, EventArgs e)
|
||||
//{
|
||||
// vlnStackTrace.ShowStack("DSO Got Focus {0}",this.MyDocumentInfo.DocID);
|
||||
//}
|
||||
|
||||
//void _MyDSOFramer_LostFocus(object sender, EventArgs e)
|
||||
//{
|
||||
// vlnStackTrace.ShowStack("DSO Lost Focus {0}", this.MyDocumentInfo.DocID);
|
||||
//}
|
||||
public void EnterPanel()
|
||||
{
|
||||
DSOTabPanel_Enter(this, new EventArgs());
|
||||
}
|
||||
//void DSOTabPanel_LostFocus(object sender, EventArgs e)
|
||||
//{
|
||||
// vlnStackTrace.ShowStack("DSOTabPanel_LostFocus {0} DocID {1} Index {2} {3}", _In_DSOTabPanel_Enter, this._MyDocumentInfo.DocID, _MyDisplayTabControl.MyBar.SelectedDockTab, sender.GetType().FullName);
|
||||
//}
|
||||
//void DSOTabPanel_GotFocus(object sender, EventArgs e)
|
||||
//{
|
||||
// vlnStackTrace.ShowStack("DSOTabPanel_GotFocus {0} DocID {1} Index {2} {3}", _In_DSOTabPanel_Enter, this._MyDocumentInfo.DocID, _MyDisplayTabControl.MyBar.SelectedDockTab, sender.GetType().FullName);
|
||||
//}
|
||||
#endregion
|
||||
#region Event Handlers
|
||||
/// <summary>
|
||||
@@ -415,29 +329,16 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
this.Select();
|
||||
}
|
||||
///// <summary>
|
||||
///// If the user presses the save button, tell the file to save it's contents to the database
|
||||
///// </summary>
|
||||
///// <param name="sender"></param>
|
||||
///// <param name="e"></param>
|
||||
//void _MyDSOFramer_OnSaveCompleted(object sender, AxDSOFramer._DFramerCtlEvents_OnSaveCompletedEvent e)
|
||||
//{
|
||||
// _MyLog.WarnFormat("_MyDSOFramer_OnSaveCompleted");
|
||||
// Volian.Base.Library.vlnStackTrace.ShowStack("_MyDSOFramer_OnSaveCompleted");
|
||||
// SaveDSO_Phase2();
|
||||
//}
|
||||
|
||||
private void SaveDSO_Phase2()
|
||||
{
|
||||
// Unfortunately, the only way to handle view mode for DSO Framer is to not save.
|
||||
if (PanelViewEditMode == E_ViewMode.View)
|
||||
{
|
||||
MessageBox.Show("Currently in VIEW mode,\r\n cannot Save " + _MyDisplayTabItem.Tooltip);
|
||||
MessageBox.Show($"Currently in VIEW mode,\r\n cannot Save {_MyDisplayTabItem.Tooltip}");
|
||||
return;
|
||||
}
|
||||
LBDocumentClass doc = new LBDocumentClass(_MyEdWord.ActiveDocument());
|
||||
//while (doc.Saved = false)
|
||||
// Application.DoEvents();
|
||||
string tmp = GetReflectiveProperty(_MyEdWord.ActiveDocument(), "FullName");
|
||||
if (System.IO.File.Exists(tmp))
|
||||
MyDSOFile.FullName = tmp;
|
||||
@@ -451,10 +352,7 @@ namespace Volian.Controls.Library
|
||||
if (myei != null && myei.MyDocument != null && myei.MyDocument.LibTitle != null && myei.MyDocument.LibTitle != "")
|
||||
{
|
||||
// C2019-033 - make save options more clear with respect to library documents
|
||||
string msgstr = "Save to Library Document?" +
|
||||
"\n\n YES - Save for all usages of this Library Document." +
|
||||
"\n\n NO - Unlink this Section from the Library Document and Save in this Word Section.\n\n" +
|
||||
_MyDocumentInfo.LibraryDocumentUsageAll;
|
||||
string msgstr = $"Save to Library Document?\n\n YES - Save for all usages of this Library Document.\n\n NO - Unlink this Section from the Library Document and Save in this Word Section.\n\n{_MyDocumentInfo.LibraryDocumentUsageAll}";
|
||||
DialogResult ans = FlexibleMessageBox.Show(msgstr, "Document Save", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (ans == DialogResult.No) cvtLibDoc = true;
|
||||
}
|
||||
@@ -475,16 +373,6 @@ namespace Volian.Controls.Library
|
||||
tc.ONStatusChanged(this, new DisplayTabControlStatusEventArgs(type, count, text));
|
||||
}
|
||||
}
|
||||
///// <summary>
|
||||
///// Before a document closes check to see if it's contents should be saved.
|
||||
///// </summary>
|
||||
///// <param name="sender"></param>
|
||||
///// <param name="e"></param>
|
||||
//void _MyDSOFramer_BeforeDocumentClosed(object sender, AxDSOFramer._DFramerCtlEvents_BeforeDocumentClosedEvent e)
|
||||
//{
|
||||
// SaveDSOPhase1();
|
||||
//}
|
||||
|
||||
private void SaveDSO_Phase1()
|
||||
{
|
||||
try
|
||||
@@ -494,7 +382,6 @@ namespace Volian.Controls.Library
|
||||
this.Enter -= new EventHandler(DSOTabPanel_Enter);
|
||||
// B2018-070 Use InDSOTabPanel to determine if the word panel should be activated - Activate MS Word Panel
|
||||
this.Leave -= DSOTabPanel_Leave;
|
||||
// SaveDirty(); // SaveDirty happens in CloseDSO(bool)
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -514,11 +401,6 @@ namespace Volian.Controls.Library
|
||||
bool stat = _MyEdWord.Save();// B2017-133 Edraw
|
||||
//Console.WriteLine("Save = {0}", stat);
|
||||
SaveDSO_Phase2();
|
||||
//_MyDSOFramer_OnSaveCompleted(this, null);
|
||||
// These are handled in the method above
|
||||
//LBDocumentClass doc = new LBDocumentClass(_MyDSOFramer.ActiveDocument);
|
||||
//MyDSOFile.FullName = GetReflectiveProperty(_MyDSOFramer.ActiveDocument, "FullName");
|
||||
//MyDSOFile.SaveFile(doc.Length, doc.Ascii);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -543,13 +425,12 @@ namespace Volian.Controls.Library
|
||||
// Unfortunately, the only way to handle view mode for DSO Framer is to not save.
|
||||
if (PanelViewEditMode == E_ViewMode.View || !_AllowedToEdit)
|
||||
{
|
||||
MessageBox.Show("Currently in VIEW mode,\r\n cannot Save " + _MyDisplayTabItem.Tooltip);
|
||||
MessageBox.Show($"Currently in VIEW mode,\r\n cannot Save {_MyDisplayTabItem.Tooltip}");
|
||||
return false;
|
||||
}
|
||||
//if (MessageBox.Show("Save changes to " + _MyDisplayTabItem.MyItemInfo.TabTitle + "\r\n" + _MyDisplayTabItem.MyItemInfo.TabToolTip, "Document has Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
// B2017-249 Recover Temporary File And AutoSave support for MSWord
|
||||
// C2019-033 - make save options more clear with respect to library documents second dialog will appear if Yes is selected and it's a library document
|
||||
string msgstr = "Save changes to " + (MyDSOFile.MyDocument.ContentIsDirty ? "Recovered Version of " : "") + _MyDisplayTabItem.Text;
|
||||
string msgstr = $"Save changes to {(MyDSOFile.MyDocument.ContentIsDirty ? "Recovered Version of " : "")}{_MyDisplayTabItem.Text}";
|
||||
if (FlexibleMessageBox.Show(msgstr, (IsDirty ? "Document has Changed" : "Previous Changes were not Saved"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
return SaveDSO();
|
||||
//Console.WriteLine("Delete {0}", MyDSOFile.MyFile.Name);
|
||||
@@ -595,15 +476,6 @@ namespace Volian.Controls.Library
|
||||
StepTabPanel stpanel = _MyDisplayTabControl.GetProcedureTabPanel(MyDisplayTabItem.MyItemInfo);
|
||||
PanelViewEditMode = (stpanel == null) ? E_ViewMode.Edit : stpanel.MyStepPanel.VwMode;
|
||||
}
|
||||
try
|
||||
{
|
||||
//_MyDSOFramer.EventsEnabled = true;
|
||||
//_MyEdWord.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.ErrorFormat("DSOTabPage_Enter", ex);
|
||||
}
|
||||
if (_In_DSOTabPanel_Enter) return;
|
||||
//vlnStackTrace.ShowStack("DSOTabPanel_Enter {0} DocID {1} Index {2} {3}",_In_DSOTabPanel_Enter, this._MyDocumentInfo.DocID, _MyDisplayTabControl.MyBar.SelectedDockTab, sender.GetType().FullName);
|
||||
_In_DSOTabPanel_Enter = true;
|
||||
@@ -628,15 +500,6 @@ namespace Volian.Controls.Library
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool CloseDSO()
|
||||
{
|
||||
return CloseDSO(false);
|
||||
}
|
||||
/// <summary>
|
||||
/// Cleans-up the DSO Framer window
|
||||
/// </summary>
|
||||
/// <param name="force"></param>
|
||||
/// <returns></returns>
|
||||
public bool CloseDSO(bool force)
|
||||
{
|
||||
_MyLog.Debug("CloseDSO");
|
||||
bool result = true;
|
||||
@@ -652,38 +515,21 @@ namespace Volian.Controls.Library
|
||||
_MyEdWord = null;
|
||||
// B2017-249 Recover Temporary File And AutoSave support for MSWord
|
||||
if (DeleteOnClose) MyDSOFile.MyFile.Delete();
|
||||
_Count--;
|
||||
Count--;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("SaveDSO - " + this.Name, ex);
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error($"SaveDSO - {this.Name}", ex);
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// Activates the current DSO Framer window (Word)
|
||||
/// </summary>
|
||||
public void Activate()
|
||||
{
|
||||
try
|
||||
{
|
||||
//this._MyEdWord.Activate();
|
||||
//if (_MyCount <= MSWordLimit)
|
||||
// this._MyEdWord.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("Activate", ex);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region DocumentProperties
|
||||
|
||||
private string GetReflectiveProperty(object objectToInspect, string propertyName)
|
||||
{
|
||||
string returnString = "";
|
||||
//To use reflection on an object, you
|
||||
// first need to get an instance
|
||||
// of that object's type.
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
using JR.Utils.GUI.Forms;
|
||||
using log4net.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
@@ -18,8 +16,7 @@ namespace Volian.Controls.Library
|
||||
public event DisplayApplicabilityEvent ApplicabilityViewModeChanged;
|
||||
private void OnApplicabilityViewModeChanged()
|
||||
{
|
||||
if (ApplicabilityViewModeChanged != null)
|
||||
ApplicabilityViewModeChanged(this, new EventArgs());
|
||||
ApplicabilityViewModeChanged?.Invoke(this, new EventArgs());
|
||||
}
|
||||
|
||||
private DisplayTabItem _MyDisplayTabItem = null;
|
||||
@@ -46,7 +43,6 @@ namespace Volian.Controls.Library
|
||||
names.Add(dcfg.Unit_Name);
|
||||
}
|
||||
dcfg.SelectedSlave = 0;
|
||||
// string[] names = dcfg.Unit_Name.Split(',');
|
||||
int apple = -1;
|
||||
if(_MyDisplayTabItem.MyStepTabPanel != null)
|
||||
apple = _MyDisplayTabItem.MyStepTabPanel.MyStepPanel.ApplDisplayMode;
|
||||
@@ -55,7 +51,7 @@ namespace Volian.Controls.Library
|
||||
foreach (string name in names)
|
||||
{
|
||||
i++;
|
||||
AddViewMode(name.Trim(), i.ToString(), apple == i);
|
||||
AddViewMode($"{name.Trim()} (View Only)", i.ToString(), apple == i);
|
||||
}
|
||||
|
||||
AddItemMode("All", "-1", ref gpSubItem);
|
||||
@@ -96,9 +92,6 @@ namespace Volian.Controls.Library
|
||||
DevComponents.DotNetBar.Controls.GroupPanel gpSubItem;
|
||||
gpSubItem = new DevComponents.DotNetBar.Controls.GroupPanel
|
||||
{
|
||||
//
|
||||
// gpSubItem
|
||||
//
|
||||
AutoSize = true,
|
||||
AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink,
|
||||
CanvasColor = System.Drawing.SystemColors.Control,
|
||||
@@ -108,9 +101,9 @@ namespace Volian.Controls.Library
|
||||
Location = new System.Drawing.Point(0, 49),
|
||||
Margin = new System.Windows.Forms.Padding(4),
|
||||
Name = "gpSubItem",
|
||||
Padding = new System.Windows.Forms.Padding(13, 12, 13, 37)
|
||||
Padding = new System.Windows.Forms.Padding(13, 12, 13, 37),
|
||||
BackColor = Color.Transparent
|
||||
};
|
||||
gpSubItem.BackColor = Color.Transparent;
|
||||
gpSubItem.Style.TextAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Center;
|
||||
gpSubItem.Style.TextColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
gpSubItem.Style.TextLineAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Near;
|
||||
@@ -122,7 +115,9 @@ namespace Volian.Controls.Library
|
||||
gpSubItem.Size = new System.Drawing.Size(400, 250);
|
||||
return gpSubItem;
|
||||
}
|
||||
#pragma warning disable IDE0044 // Add readonly modifier
|
||||
private Dictionary<int, CheckBox> MyCheckBoxes = new Dictionary<int, CheckBox>();
|
||||
#pragma warning restore IDE0044 // Add readonly modifier
|
||||
private string _MyApplicability = string.Empty;
|
||||
public string MyApplicability
|
||||
{
|
||||
@@ -130,51 +125,22 @@ namespace Volian.Controls.Library
|
||||
set { _MyApplicability = value; }
|
||||
}
|
||||
|
||||
//private ProcedureInfo _MyProcedureInfo;
|
||||
//public ProcedureInfo MyProcedureInfo
|
||||
//{
|
||||
//get { return _MyProcedureInfo; }
|
||||
//set
|
||||
//{
|
||||
// _MyProcedureInfo = value;
|
||||
// if (_MyProcedureInfo != null && _MyProcedureInfo.IsProcedure)
|
||||
// {
|
||||
// DocVersionConfig cfg = new DocVersionConfig(_MyProcedureInfo.MyDocVersion);
|
||||
// if (cfg.Unit_Name == string.Empty)
|
||||
// this.Visible = false;
|
||||
// else
|
||||
// {
|
||||
// string[] names = cfg.Unit_Name.Split(',');
|
||||
// gpMode.Controls.Clear();
|
||||
// gpItem.Controls.Clear();
|
||||
// MyCheckBoxes.Clear();
|
||||
// AddViewMode("Master", "-1", true);
|
||||
// int i = 0;
|
||||
// foreach (string name in names)
|
||||
// {
|
||||
// AddViewMode(name.Trim(), (++i).ToString());
|
||||
// }
|
||||
// AddItemMode("All", "-1");
|
||||
// i = 0;
|
||||
// foreach (string name in names)
|
||||
// AddItemMode(name.Trim(), (++i).ToString());
|
||||
// AddItemMode("None", "0");
|
||||
// //if(!this.Visible)
|
||||
// // this.Visible = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//}
|
||||
//C2026-021 Expand Functionality of Viewing Mode
|
||||
public bool ShowItemSelection = true;
|
||||
public void SetEnableDisableItemSelection(bool value) => gpItem.Enabled = ShowItemSelection = value;
|
||||
|
||||
private void AddItemMode(string name, string value, ref DevComponents.DotNetBar.Controls.GroupPanel gpSubItem)
|
||||
{
|
||||
CheckBox cb = new CheckBox();
|
||||
cb.BackColor = Color.Transparent;
|
||||
cb.Height = 24;
|
||||
cb.Width = 75;
|
||||
cb.AutoSize = true;
|
||||
cb.Text = name;
|
||||
cb.Tag = value;
|
||||
cb.Dock = DockStyle.Top;
|
||||
CheckBox cb = new CheckBox
|
||||
{
|
||||
BackColor = Color.Transparent,
|
||||
Height = 24,
|
||||
Width = 75,
|
||||
AutoSize = true,
|
||||
Text = name,
|
||||
Tag = value,
|
||||
Dock = DockStyle.Top
|
||||
};
|
||||
gpSubItem.Controls.Add(cb);
|
||||
cb.BringToFront();
|
||||
cb.CheckedChanged += new EventHandler(cb_CheckedChanged);
|
||||
@@ -251,22 +217,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
//IItemConfig cfg = MyItemInfo.MyConfig as IItemConfig;
|
||||
//cfg.MasterSlave_Applicability.SetFlags(MyApplicability);
|
||||
//Content c = Content.Get(MyItemInfo.MyContent.ContentID);
|
||||
//c.Save();
|
||||
//foreach (TransitionInfo ti in MyItemInfo.ItemTransitions_ToID)
|
||||
//{
|
||||
// if (!ti.MyItemToID.IsApplicable(MyApplicability))
|
||||
// {
|
||||
// MessageBox.Show("you can't do this");
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
List<InvalidTransition> invalidTrans = WillTransitionsBeValidCommand.Execute(MyItemInfo.ItemID, MyApplicability);
|
||||
// B2021-149: for Procedure level PC/PC, continue processing if all 'invalid' transitions are internal (query used
|
||||
// return internal and external for the procedure level)
|
||||
if ((!MyItemInfo.IsProcedure && invalidTrans.Count == 0) || IsProcWithNoExternalTrans(MyItemInfo, invalidTrans))
|
||||
if ((!MyItemInfo.IsProcedure && invalidTrans.Count == 0) || IsProcWithNoExternalTrans(invalidTrans))
|
||||
{
|
||||
// C2021 - 027: Procedure level PC/PC
|
||||
if (MyItemInfo.IsProcedure && MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl)
|
||||
@@ -307,20 +261,6 @@ namespace Volian.Controls.Library
|
||||
// C2021 - 027: Procedure level PC/PC - checkbox for applicability changed, fix ribbon's menus
|
||||
if (MyItemInfo.IsProcedure) _MyDisplayTabItem.MyStepTabPanel.MyStepTabRibbon.SetParentChildCreatePDFButton(MyItemInfo.MyDocVersion.UnitNames, MyItemInfo);
|
||||
|
||||
//using (Content cnt = Content.Get(MyItemInfo.MyContent.ContentID))
|
||||
//{
|
||||
// cnt.DTS = DateTime.Now;
|
||||
// cnt.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
// //cnt.Save();
|
||||
//}
|
||||
|
||||
//using (Step s = Step.Get(MyItemInfo.ItemID))
|
||||
//{
|
||||
// IItemConfig cfg = new StepConfig(s);
|
||||
// cfg.MasterSlave_Applicability = new Volian.Base.Library.BigNum(MyApplicability);
|
||||
// s.MyContent.Config = cfg.ToString();
|
||||
// s.Save();
|
||||
//}
|
||||
}
|
||||
private void BtnApplicabilitychg_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
@@ -340,7 +280,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
// C2026-023: Check for Transitions when setting Applicability to all for a level
|
||||
List<InvalidTransition> invalidTrans = WillTransitionsBeValidCommand.Execute(startitm.ItemID, MasterSlave_ApplicabilityTmp.ToString());
|
||||
if (IsProcWithNoExternalTrans(startitm, invalidTrans))
|
||||
if (IsProcWithNoExternalTrans(invalidTrans))
|
||||
{
|
||||
StepConfig sc2 = startitm.MyConfig as StepConfig;
|
||||
using (Content cnt = Content.Get(startitm.MyContent.ContentID))
|
||||
@@ -380,7 +320,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
// B2021-149: for procedure, only consider external transitions as invalid
|
||||
private bool IsProcWithNoExternalTrans(ItemInfo ii, List<InvalidTransition> invalidTrans)
|
||||
private bool IsProcWithNoExternalTrans(List<InvalidTransition> invalidTrans)
|
||||
{
|
||||
if (invalidTrans.Count == 0) return true;
|
||||
foreach (InvalidTransition iT in invalidTrans)
|
||||
@@ -495,17 +435,16 @@ namespace Volian.Controls.Library
|
||||
foreach (CheckBox cb in MyCheckBoxes.Values)
|
||||
cb.Enabled = true;
|
||||
}
|
||||
private void AddViewMode(string name, string value)
|
||||
{
|
||||
AddViewMode(name, value, false);
|
||||
}
|
||||
|
||||
private void AddViewMode(string name, string value, bool selected)
|
||||
{
|
||||
RadioButton rb = new RadioButton();
|
||||
rb.BackColor = Color.Transparent;
|
||||
rb.Text = name;
|
||||
rb.Tag = value;
|
||||
rb.Dock = DockStyle.Top;
|
||||
RadioButton rb = new RadioButton
|
||||
{
|
||||
BackColor = Color.Transparent,
|
||||
Text = name,
|
||||
Tag = value,
|
||||
Dock = DockStyle.Top
|
||||
};
|
||||
gpMode.Controls.Add(rb);
|
||||
rb.BringToFront();
|
||||
rb.Checked = selected;
|
||||
@@ -530,7 +469,7 @@ namespace Volian.Controls.Library
|
||||
// C2021 - 027: Procedure level PC/PC - handle procedure level too for viewing in editor
|
||||
if (MyDisplayTabItem.MyStepTabPanel.SelectedItemInfo != null && MyDisplayTabItem.MyStepTabPanel.SelectedItemInfo.IsProcedure)
|
||||
ei = MyDisplayTabItem.MyStepTabPanel.SelectedEditItem;
|
||||
if (ei != null) ei.MyStepRTB.Focus();
|
||||
ei?.MyStepRTB.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -550,7 +489,7 @@ namespace Volian.Controls.Library
|
||||
void DisplayApplicability_VisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
MyItemInfo = MyItemInfo;
|
||||
gpItem.Enabled = UserInfo.CanEdit(MyUserInfo,(MyItemInfo == null) ? null : MyItemInfo.MyDocVersion); //Can Change Applicability
|
||||
gpItem.Enabled = ShowItemSelection && UserInfo.CanEdit(MyUserInfo,MyItemInfo?.MyDocVersion); //Can Change Applicability
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
@@ -18,8 +13,7 @@ namespace Volian.Controls.Library
|
||||
public event ResetBookMarksInPROMSWindowsEvent ResetBookMarksInPROMSWindows;
|
||||
private void OnResetBookMarksInPROMSWindows()
|
||||
{
|
||||
if (ResetBookMarksInPROMSWindows != null)
|
||||
ResetBookMarksInPROMSWindows(this, new EventArgs());
|
||||
ResetBookMarksInPROMSWindows?.Invoke(this, new EventArgs());
|
||||
}
|
||||
#endregion //delegates and Events
|
||||
#region Properties
|
||||
@@ -30,7 +24,6 @@ namespace Volian.Controls.Library
|
||||
set { _MyBookMarks = value; }
|
||||
}
|
||||
private ItemInfo _CurItemInfo = null;
|
||||
private bool _Initalizing = false;
|
||||
private DisplayTabControl _MyDisplayTabControl;
|
||||
public DisplayTabControl MyDisplayTabControl
|
||||
{
|
||||
@@ -53,24 +46,11 @@ namespace Volian.Controls.Library
|
||||
_CurItemInfo = MyEditItem.MyItemInfo;
|
||||
}
|
||||
}
|
||||
//private StepRTB _MyRTB;
|
||||
//public StepRTB MyRTB
|
||||
//{
|
||||
// get { return _MyRTB; }
|
||||
// set
|
||||
// {
|
||||
// if (value == null) return;
|
||||
// if (_CurItemInfo != null && _CurItemInfo.ItemID == value.MyItemInfo.ItemID) return;
|
||||
// _MyRTB = value;
|
||||
// _CurItemInfo = MyRTB.MyItemInfo;
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
#region Constructors
|
||||
public DisplayBookMarks()
|
||||
{
|
||||
InitializeComponent();
|
||||
//SetupBookMarks();
|
||||
}
|
||||
public void SetupBookMarks()
|
||||
{
|
||||
@@ -81,9 +61,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
lbxBookMarks.SelectedValueChanged += new EventHandler(lbxBookMarks_SelectedValueChanged);
|
||||
RefreshBookMarkData();
|
||||
//btnPrevPos.Enabled = false;
|
||||
//lbxBookMarks.Enabled = false;
|
||||
//_PrevBookMark = null;
|
||||
}
|
||||
|
||||
void _MyBookMarks_AfterRemove(object sender)
|
||||
@@ -148,8 +125,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private void lbxBookMarks_Click(object sender, EventArgs e)
|
||||
{
|
||||
MostRecentItem itm = lbxBookMarks.SelectedValue as MostRecentItem;
|
||||
if(itm != null)
|
||||
if (lbxBookMarks.SelectedValue is MostRecentItem itm)
|
||||
MyDisplayTabControl.OpenItem(itm.MyItemInfo);
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
@@ -30,7 +26,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (!DesignMode && _MainStepSection == null) // B2019-043 need to check if we are just saving changes to the user interface
|
||||
{
|
||||
foreach (SectionInfo si in MyItemInfo.MyProcedure.Sections)
|
||||
foreach (SectionInfo si in MyItemInfo.MyProcedure.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
SectionConfig sc = (SectionConfig)si.MyConfig;
|
||||
if (sc.Section_OriginalSteps == "Y") _MainStepSection = si;
|
||||
@@ -39,9 +35,6 @@ namespace Volian.Controls.Library
|
||||
return _MainStepSection;
|
||||
}
|
||||
}
|
||||
//private ItemInfo _firstStep;
|
||||
//private ItemInfo _lastStep;
|
||||
private bool _Initializing;
|
||||
|
||||
public DisplayFoldoutMaint()
|
||||
{
|
||||
@@ -56,11 +49,10 @@ namespace Volian.Controls.Library
|
||||
if (MyItemInfo != null)
|
||||
{
|
||||
if (MyItemInfo.MyProcedure.Sections == null || MyItemInfo.MyProcedure.Sections.Count == 0) return;
|
||||
_Initializing = true;
|
||||
ProcedureInfo pi = MyItemInfo.MyProcedure;
|
||||
listBoxFoldouts.Items.Clear();
|
||||
lstCBSteps.Items.Clear();
|
||||
foreach (SectionInfo si in pi.Sections)
|
||||
foreach (SectionInfo si in pi.Sections.OfType<SectionInfo>())
|
||||
if (si.DisplayText.ToUpper().StartsWith("FOLDOUT")) listBoxFoldouts.Items.Add(si);
|
||||
if (listBoxFoldouts.Items.Count > 0) listBoxFoldouts.SelectedIndex = 0;
|
||||
else
|
||||
@@ -71,7 +63,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
// find default step section & use its steps to fill in tree.
|
||||
FillInSteps();
|
||||
_Initializing = false;
|
||||
}
|
||||
}
|
||||
private void FillInSteps()
|
||||
@@ -80,8 +71,7 @@ namespace Volian.Controls.Library
|
||||
ItemInfo startitm = MainStepSection.Steps != null && MainStepSection.Steps.Count > 0 ? MainStepSection.Steps[0] : null;
|
||||
while (startitm != null)
|
||||
{
|
||||
StepConfig sc = startitm.MyConfig as StepConfig;
|
||||
if (sc != null)
|
||||
if (startitm.MyConfig is StepConfig sc)
|
||||
{
|
||||
if (sc.Step_FloatingFoldout == foldOutselected.ItemID)
|
||||
{
|
||||
@@ -102,8 +92,7 @@ namespace Volian.Controls.Library
|
||||
for (int i = 0; i < lstCBSteps.Items.Count; i++)
|
||||
{
|
||||
ItemInfo startitm = lstCBSteps.Items[i] as ItemInfo;
|
||||
StepConfig sc = startitm.MyConfig as StepConfig;
|
||||
if (sc != null)
|
||||
if (startitm.MyConfig is StepConfig sc)
|
||||
lstCBSteps.SetItemChecked(itemInList, sc.Step_FloatingFoldout == foldOutselected.ItemID);
|
||||
else
|
||||
lstCBSteps.SetItemChecked(itemInList, false);
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using System.IO;
|
||||
@@ -21,29 +19,21 @@ namespace Volian.Controls.Library
|
||||
public event DisplayHistoryReportEvent SummaryPrintRequest;
|
||||
private void OnChronologyPrintRequest(DisplayHistoryReportEventArgs args)
|
||||
{
|
||||
if (ChronologyPrintRequest != null)
|
||||
ChronologyPrintRequest(this, args);
|
||||
ChronologyPrintRequest?.Invoke(this, args);
|
||||
}
|
||||
private void OnSummaryPrintRequest(DisplayHistoryReportEventArgs args)
|
||||
{
|
||||
if (SummaryPrintRequest != null)
|
||||
SummaryPrintRequest(this, args);
|
||||
SummaryPrintRequest?.Invoke(this, args);
|
||||
}
|
||||
public event DisplayHistoryEvent HistorySelectionChanged;
|
||||
private void OnHistorySelectionChanged(DisplayHistoryEventArgs args)
|
||||
{
|
||||
if (HistorySelectionChanged != null)
|
||||
HistorySelectionChanged(this, args);
|
||||
}
|
||||
public event ItemRestoredHandler ItemRestored;
|
||||
private void OnItemRestored(ItemInfo restoredItemInfo)
|
||||
{
|
||||
if (ItemRestored != null) ItemRestored(restoredItemInfo);
|
||||
HistorySelectionChanged?.Invoke(this, args);
|
||||
}
|
||||
public event AnnotationRestoredHandler AnnotationRestored;
|
||||
private void OnAnnotationRestored(AnnotationInfo restoredAnnotationInfo, ItemInfo currentItem)
|
||||
{
|
||||
if (AnnotationRestored != null) AnnotationRestored(restoredAnnotationInfo, currentItem);
|
||||
AnnotationRestored?.Invoke(restoredAnnotationInfo, currentItem);
|
||||
}
|
||||
#endregion
|
||||
private ContentAuditInfoList _ChronologyAuditList;
|
||||
@@ -176,10 +166,8 @@ namespace Volian.Controls.Library
|
||||
SetRevDate(MyProcedureInfo.DTS);
|
||||
else
|
||||
{
|
||||
DateTime revDate;
|
||||
if (!DateTime.TryParse(cfg.Print_RevDate, out revDate)) revDate = MyProcedureInfo.ChangeBarDate; // DateTime.Now;
|
||||
if (!DateTime.TryParse(cfg.Print_RevDate, out DateTime revDate)) revDate = MyProcedureInfo.ChangeBarDate; // DateTime.Now;
|
||||
SetRevDate(revDate);
|
||||
//SetRevDate(DateTime.Parse(cfg.Print_RevDate));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,8 +210,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (lbChanges.SelectedIndex > -1)
|
||||
{
|
||||
ContentAuditInfo cai = lbChanges.SelectedItem as ContentAuditInfo;
|
||||
if (cai != null)
|
||||
if (lbChanges.SelectedItem is ContentAuditInfo cai)
|
||||
{
|
||||
// The following line was incorrectly showing a message stating that the item was deleted when it was not.
|
||||
//if (cai.DeleteStatus > 0 || (cai.DeleteStatus == 0 && cai.ActionWhen.Year == DateTime.MinValue.Year))
|
||||
@@ -236,7 +223,7 @@ namespace Volian.Controls.Library
|
||||
OnHistorySelectionChanged(new DisplayHistoryEventArgs(cai.ItemID));
|
||||
}
|
||||
// If the selected item is deleted display a message rather than crashing
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
FlexibleMessageBox.Show("This item has been deleted.", "Deleted Item", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
@@ -252,12 +239,10 @@ namespace Volian.Controls.Library
|
||||
private void UpdateHistory()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
//DateTime start = DateTime.Now;
|
||||
//Console.WriteLine(start);
|
||||
#region setup
|
||||
btnRestore.Enabled = false;
|
||||
myRTB.Clear();
|
||||
//myRTB.LastRtf = string.Empty;
|
||||
myVFG.Clear();
|
||||
myPicBox.Image = null;
|
||||
if (!tvAudits.IsDisposed) // fixes a crash that happend while debugging separate windows, have not been able to reproduce. left this IF check in just in case. - jsj 2-1-2018
|
||||
@@ -269,8 +254,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
MyItemInfo.RefreshItemAnnotations();
|
||||
#endregion
|
||||
//if (AnnotationOnly)
|
||||
//{
|
||||
#region annotation deleted
|
||||
//annotation deleted by itemid
|
||||
TreeNode annotationDeleted = null;
|
||||
@@ -319,14 +302,11 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
//end annotation change
|
||||
#endregion
|
||||
// return;
|
||||
//}
|
||||
#region content changes
|
||||
//content changes
|
||||
TreeNode contentHistory = null;
|
||||
if (MyItemInfo == null) return;
|
||||
ContentAuditInfoList cail = ContentAuditInfoList.Get(MyItemInfo.ContentID, MyItemInfo.MyProcedure.DTS);
|
||||
// ContentAuditInfoList cail = ContentAuditInfoList.GetChronology(MyItemInfo.MyProcedure.ItemID, MyItemInfo.ItemID, false);
|
||||
ContentInfo ci = ContentInfo.Get(MyItemInfo.ContentID);
|
||||
foreach (ContentAuditInfo cai in cail)
|
||||
{
|
||||
@@ -378,155 +358,10 @@ namespace Volian.Controls.Library
|
||||
#endregion
|
||||
#region items
|
||||
TreeNode deletedItems = null;
|
||||
TreeNode previousItem = null;
|
||||
TreeNode nextItem = null;
|
||||
TreeNode procedurePart = null;
|
||||
TreeNode sectionPart = null;
|
||||
TreeNode cautionPart = null;
|
||||
TreeNode notePart = null;
|
||||
TreeNode rnoPart = null;
|
||||
TreeNode stepPart = null;
|
||||
TreeNode tablePart = null;
|
||||
#endregion
|
||||
ItemAuditInfoList iail = ItemAuditInfoList.Get(MyItemInfo.ItemID);
|
||||
foreach (ItemAuditInfo iai in iail)
|
||||
{
|
||||
#region old style
|
||||
// switch (iai.Level)
|
||||
// {
|
||||
// #region previous item
|
||||
// case 0: //previous item
|
||||
// {
|
||||
// #region old style
|
||||
// //if (previousItem == null)
|
||||
// // previousItem = tvAudits.Nodes.Add("Deleted Previous Item"); //previousItem = tvAudits.Nodes.Add("Previous Item");
|
||||
// //TreeNode tn = previousItem.Nodes.Add(iai.ToString());
|
||||
// //tn.Tag = iai;
|
||||
// #endregion
|
||||
// #region new style
|
||||
// if (deletedItems == null)
|
||||
// deletedItems = tvAudits.Nodes.Add("Deleted Items");
|
||||
// TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
|
||||
// tnn.Tag = iai;
|
||||
// #endregion
|
||||
// break;
|
||||
// }
|
||||
// #endregion
|
||||
// #region next item
|
||||
// case 1: //next item
|
||||
// {
|
||||
// #region old style
|
||||
// //if (nextItem == null)
|
||||
// // nextItem = tvAudits.Nodes.Add("Deleted Next Item"); //nextItem = tvAudits.Nodes.Add("Next Item");
|
||||
// //TreeNode tn = nextItem.Nodes.Add(iai.ToString());
|
||||
// //tn.Tag = iai;
|
||||
// #endregion
|
||||
// #region new style
|
||||
// if (deletedItems == null)
|
||||
// deletedItems = tvAudits.Nodes.Add("Deleted Items");
|
||||
// TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
|
||||
// tnn.Tag = iai;
|
||||
// #endregion
|
||||
// break;
|
||||
// }
|
||||
// #endregion
|
||||
// case 2: //parts
|
||||
// {
|
||||
// #region old style
|
||||
// //PartAuditInfoList pail = null;
|
||||
// //pail = PartAuditInfoList.GetByDeleteStatus(iai.DeleteStatus);
|
||||
// //if (pail.Count == 0)
|
||||
// // pail = PartAuditInfoList.GetByItemID(iai.ItemID);
|
||||
// //foreach (PartAuditInfo pai in pail)
|
||||
// //{
|
||||
// // if (pai.ContentID == MyItemInfo.ContentID)
|
||||
// // {
|
||||
// // switch (pai.FromType)
|
||||
// // {
|
||||
// // #region procedure part
|
||||
// // case 1: //procedures
|
||||
// // {
|
||||
// // if (procedurePart == null)
|
||||
// // procedurePart = tvAudits.Nodes.Add("Deleted Procedures"); //procedurePart = tvAudits.Nodes.Add("Procedures");
|
||||
// // TreeNode tn = procedurePart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // #region section part
|
||||
// // case 2: //sections
|
||||
// // {
|
||||
// // if (sectionPart == null)
|
||||
// // sectionPart = tvAudits.Nodes.Add("Deleted Sections"); //sectionPart = tvAudits.Nodes.Add("Sections");
|
||||
// // TreeNode tn = sectionPart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // #region caution part
|
||||
// // case 3: //cautions
|
||||
// // {
|
||||
// // if (cautionPart == null)
|
||||
// // cautionPart = tvAudits.Nodes.Add("Deleted Cautions"); //cautionPart = tvAudits.Nodes.Add("Cautions");
|
||||
// // TreeNode tn = cautionPart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // #region note part
|
||||
// // case 4: //notes
|
||||
// // {
|
||||
// // if (notePart == null)
|
||||
// // notePart = tvAudits.Nodes.Add("Deleted Notes"); //notePart = tvAudits.Nodes.Add("Notes");
|
||||
// // TreeNode tn = notePart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // #region rno part
|
||||
// // case 5: //rnos
|
||||
// // {
|
||||
// // if (rnoPart == null)
|
||||
// // rnoPart = tvAudits.Nodes.Add("Deleted RNOs"); //rnoPart = tvAudits.Nodes.Add("RNOs");
|
||||
// // TreeNode tn = rnoPart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // #region step part
|
||||
// // case 6: //steps
|
||||
// // {
|
||||
// // if (stepPart == null)
|
||||
// // stepPart = tvAudits.Nodes.Add("Deleted Steps"); //stepPart = tvAudits.Nodes.Add("Steps");
|
||||
// // TreeNode tn = stepPart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // #region table part
|
||||
// // case 7: //tables
|
||||
// // {
|
||||
// // if (tablePart == null)
|
||||
// // tablePart = tvAudits.Nodes.Add("Deleted Tables"); //tablePart = tvAudits.Nodes.Add("Tables");
|
||||
// // TreeNode tn = tablePart.Nodes.Add(iai.ToString());
|
||||
// // tn.Tag = iai;
|
||||
// // break;
|
||||
// // }
|
||||
// // #endregion
|
||||
// // }
|
||||
// // }
|
||||
// //}
|
||||
// #endregion
|
||||
// #region new style
|
||||
// if (deletedItems == null)
|
||||
// deletedItems = tvAudits.Nodes.Add("Deleted Items");
|
||||
// TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
|
||||
// tnn.Tag = iai;
|
||||
// #endregion
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
#region new style
|
||||
// B2023-117 if DeleteStatus is zero,don't try to get Audit Info List
|
||||
if (iai.DeleteStatus == 0) continue;
|
||||
@@ -552,7 +387,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
TreeNode tnn = deletedItems.Nodes.Add(iai.ToString() + "; Reason: " + strR);
|
||||
TreeNode tnn = deletedItems.Nodes.Add($"{iai}; Reason: {strR}");
|
||||
tnn.Tag = iai;
|
||||
#endregion
|
||||
}
|
||||
@@ -572,10 +407,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private void WalkProcedure()
|
||||
{
|
||||
//return;
|
||||
this.ParentForm.Cursor = Cursors.WaitCursor;
|
||||
Application.DoEvents();
|
||||
//DateTime start = DateTime.Now;
|
||||
//Console.WriteLine(start);
|
||||
lbChanges.Items.Clear();
|
||||
if (MyProcedureInfo == null)
|
||||
@@ -611,7 +444,7 @@ namespace Volian.Controls.Library
|
||||
// in the list box and should not be because some MyRevDate's did not have time included.
|
||||
if (CompareDateOrDateTime(cai.DTS, MyRevDate) || cai.ActionWhen > MyRevDate)
|
||||
{
|
||||
string itemTitle = FixPath(cai.Path);
|
||||
_ = FixPath(cai.Path);
|
||||
lbChanges.Items.Add(cai);
|
||||
}
|
||||
}
|
||||
@@ -630,7 +463,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ItemInfo iii = aai.MyItemInfo;
|
||||
if (iii != null)
|
||||
stepnum = FixPath(iii.SearchPath);
|
||||
_ = FixPath(iii.SearchPath);
|
||||
}
|
||||
if (aai.DTS > MyRevDate)
|
||||
lbChanges.Items.Add(aai);
|
||||
@@ -650,25 +483,13 @@ namespace Volian.Controls.Library
|
||||
private void btnViewChronologyReport_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshList();
|
||||
//if (lbChanges.Items.Count > 0)
|
||||
//{
|
||||
//jcb added 20120425 to suppress annotations in report
|
||||
//jcb commented out 20130409 per bug C2012-022
|
||||
//_AnnotationList = AnnotationAuditInfoList.GetChronology(0, 0, MyProcedureInfo.ChangeBarDate);
|
||||
//added setting selected slave in order for reports to replace unit number,etc jcb 20101010
|
||||
MyItemInfo.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = ApplDisplayMode;
|
||||
// OnChronologyPrintRequest(new DisplayHistoryReportEventArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MyChronology.pdf", MyItemInfo.MyProcedure, _ChronologyAuditList, _AnnotationList));
|
||||
OnChronologyPrintRequest(new DisplayHistoryReportEventArgs(string.Format(@"{0}\{1} Chronology of Changes.pdf", Volian.Base.Library.VlnSettings.TemporaryFolder, MyItemInfo.MyProcedure.PDFNumber), MyItemInfo.MyProcedure, _ChronologyAuditList, _AnnotationList));
|
||||
//}
|
||||
}
|
||||
private void btnViewSummaryReport_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshList();
|
||||
//if (lbChanges.Items.Count > 0)
|
||||
//{
|
||||
//jcb added 20120425 to suppress annotations in report
|
||||
//jcb commented out 20130409 per bug C2012-022
|
||||
//_AnnotationList = AnnotationAuditInfoList.GetChronology(0, 0, MyProcedureInfo.ChangeBarDate);
|
||||
//added setting selected slave in order for reports to replace unit number,etc jcb 20101010
|
||||
MyItemInfo.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = ApplDisplayMode;
|
||||
|
||||
@@ -676,7 +497,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
//C2024- 038 - Summary of Changes report generation enhancements
|
||||
//check if need to modify
|
||||
// _SummaryAuditList
|
||||
if (DT_SumAsOf.Checked)
|
||||
dhr.AuditList = FilterSummaryByDate(_SummaryAuditList, DT_SumAsOf.Value);
|
||||
else
|
||||
@@ -685,7 +505,6 @@ namespace Volian.Controls.Library
|
||||
//C2024- 038 - Summary of Changes report generation enhancements
|
||||
// if Exclude Annotations Checked
|
||||
// send an empty list instead of
|
||||
//_AnnotationList
|
||||
if (cbSumExcludeAnn.Checked)
|
||||
dhr.AnnotationList = new AnnotationAuditInfoList(null);
|
||||
else if (DT_SumAsOf.Checked)
|
||||
@@ -799,11 +618,7 @@ namespace Volian.Controls.Library
|
||||
if (myRoFst != null) myRoFst.ROTableUpdate += new ROFstInfoROTableUpdateEvent(myRoFst_ROTableUpdate);
|
||||
ii = MyItemInfo.RestoreItem(iai, myRoFst);
|
||||
if (myRoFst != null) myRoFst.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(myRoFst_ROTableUpdate);
|
||||
//_MyEditItem.AddChild((E_FromType)fromtype, contenttype);
|
||||
//ii.ItemParts[0].FromType
|
||||
//ii.MyContent.Type
|
||||
EditItem nextItem = MyEditItem.GetNextItem((E_FromType)ii.ItemParts[0].FromType, ii);
|
||||
//MyEditItem.AddChild(ii.MyContent.Text, (E_FromType)ii.ItemParts[0].FromType, (int)ii.MyContent.Type, null);
|
||||
if (ii.IsStep)
|
||||
ii = StepInfo.Get(ii.ItemID);
|
||||
else if (ii.IsSection)
|
||||
@@ -1051,10 +866,6 @@ namespace Volian.Controls.Library
|
||||
myRTB.Visible = true;
|
||||
myRTB.BringToFront();
|
||||
myVFG.Visible = false;
|
||||
// myRTB.Font = new Font("Arial", 12, FontStyle.Regular);
|
||||
// myRTB.Text = cai.Text;
|
||||
//myRTB.SetupRichText("bozo", MyItemInfo.FormatStepData == null ? MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font : MyItemInfo.FormatStepData.Font);
|
||||
//myRTB.LastRtf = string.Empty;
|
||||
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData == null ? MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font : MyItemInfo.FormatStepData.Font);
|
||||
}
|
||||
}
|
||||
@@ -1067,8 +878,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (cai.DeleteStatus == iai.DeleteStatus)
|
||||
{
|
||||
//myRTB.Font = new Font("Arial", 12, FontStyle.Regular);
|
||||
//myRTB.Text = cai.Text;
|
||||
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData == null ? MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font : MyItemInfo.FormatStepData.Font);
|
||||
}
|
||||
}
|
||||
@@ -1079,7 +888,6 @@ namespace Volian.Controls.Library
|
||||
AnnotationAuditInfo iai = tn.Tag as AnnotationAuditInfo;
|
||||
myRTB.Font = new Font("Arial", 12, FontStyle.Regular);
|
||||
myRTB.Rtf = iai.RtfText;
|
||||
//myRTB.Rtf = iai.RtfText;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1121,7 +929,7 @@ namespace Volian.Controls.Library
|
||||
myTimer.Enabled = true;
|
||||
}
|
||||
// B2019-161 When tracking timing time this action
|
||||
private static VolianTimer _TimeActivity = new VolianTimer("DisplayHistory myTimer_Tick", 974);
|
||||
private static readonly VolianTimer _TimeActivity = new VolianTimer("DisplayHistory myTimer_Tick", 974);
|
||||
|
||||
private void myTimer_Tick(object sender, System.EventArgs e)
|
||||
{
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.IO;
|
||||
using AT.STO.UI.Win;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
@@ -30,7 +23,7 @@ namespace Volian.Controls.Library
|
||||
get { return _LibDocList; }
|
||||
set { _LibDocList = value; }
|
||||
}
|
||||
private Color saveGroupPanelUsages;
|
||||
private readonly Color saveGroupPanelUsages;
|
||||
#endregion
|
||||
#region Constructors
|
||||
public DisplayLibDocs()
|
||||
@@ -76,8 +69,7 @@ namespace Volian.Controls.Library
|
||||
public event DisplayLibDocEvent PrintRequest;
|
||||
private void OnPrintRequest(DisplayLibDocEventArgs args)
|
||||
{
|
||||
if (PrintRequest != null)
|
||||
PrintRequest(this, args);
|
||||
PrintRequest?.Invoke(this, args);
|
||||
}
|
||||
|
||||
private void listBoxLibDocs_Click(object sender, EventArgs e)
|
||||
@@ -125,9 +117,9 @@ namespace Volian.Controls.Library
|
||||
foreach (ItemInfo ii in dicnt.LibraryDocumentUsageList)
|
||||
{
|
||||
if (ii.MyDocVersion != null)
|
||||
listBoxUsages.Items.Add(ii.MyProcedure.ToString() + " - " + ii.DisplayNumber + " " + ii.DisplayText);
|
||||
listBoxUsages.Items.Add($"{ii.MyProcedure} - {ii.DisplayNumber} {ii.DisplayText}");
|
||||
}
|
||||
btnPrint.Enabled = listBoxLibDocs.Items.Count > 0 ? true : false;
|
||||
btnPrint.Enabled = listBoxLibDocs.Items.Count > 0;
|
||||
}
|
||||
private void btnDelLibDoc_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -139,7 +131,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("error deleting doc = " + ex.Message);
|
||||
Console.WriteLine($"error deleting doc = {ex.Message}");
|
||||
}
|
||||
LibDocListFillIn(_DisplayTabControl);
|
||||
}
|
||||
@@ -203,12 +195,13 @@ namespace Volian.Controls.Library
|
||||
|
||||
private void btnImpLibDoc_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog1 = new OpenFileDialog();
|
||||
|
||||
openFileDialog1.InitialDirectory = "c:\\";
|
||||
openFileDialog1.Filter = "Word files (*.doc;*.rtf;*.docx)|*.doc;*.rtf;*.docx|All files (*.*)|*.*";
|
||||
openFileDialog1.FilterIndex = 0;
|
||||
openFileDialog1.RestoreDirectory = true;
|
||||
OpenFileDialog openFileDialog1 = new OpenFileDialog
|
||||
{
|
||||
InitialDirectory = "c:\\",
|
||||
Filter = "Word files (*.doc;*.rtf;*.docx)|*.doc;*.rtf;*.docx|All files (*.*)|*.*",
|
||||
FilterIndex = 0,
|
||||
RestoreDirectory = true
|
||||
};
|
||||
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@@ -352,24 +345,6 @@ namespace Volian.Controls.Library
|
||||
get { return _PaperSize; }
|
||||
set { _PaperSize = value; }
|
||||
}
|
||||
//private string _SearchString = null;
|
||||
//public string SearchString
|
||||
//{
|
||||
// get { return _SearchString; }
|
||||
// set { _SearchString = value; }
|
||||
//}
|
||||
//private string _TypesSelected;
|
||||
//public string TypesSelected
|
||||
//{
|
||||
// get { return _TypesSelected; }
|
||||
// set { _TypesSelected = value; }
|
||||
//}
|
||||
//private ICollection<ItemInfo> _MyItemInfoList;
|
||||
//public ICollection<ItemInfo> MyItemInfoList
|
||||
//{
|
||||
// get { return _MyItemInfoList; }
|
||||
// set { _MyItemInfoList = value; }
|
||||
//}
|
||||
public DisplayLibDocEventArgs(string reportTitle, DocumentInfoList libDocList, string paperSize)
|
||||
{
|
||||
_ReportTitle = reportTitle;
|
||||
|
||||
@@ -2,12 +2,10 @@ using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
@@ -18,29 +16,22 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
public partial class DisplayRO : UserControl
|
||||
{
|
||||
#region Log4Net
|
||||
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Fields
|
||||
|
||||
private const string DummyNodeText = "VLN_DUMMY_NODE";
|
||||
private const int MaxNumSearchRecords = 1000;
|
||||
|
||||
// B2019-161 When tracking timing time this action
|
||||
private static VolianTimer _timeActivity = new VolianTimer("DisplayRO MyRTB_SelectionChanged", 117);
|
||||
private static Regex _regExGetNumber = new Regex(@"^ *[+-]?[.,0-9/]+(E[+-]?[0-9]+)?");
|
||||
private static readonly VolianTimer _timeActivity = new VolianTimer("DisplayRO MyRTB_SelectionChanged", 117);
|
||||
private static readonly Regex _regExGetNumber = new Regex(@"^ *[+-]?[.,0-9/]+(E[+-]?[0-9]+)?");
|
||||
private static UserInfo _myUserInfo = null;
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Timer Not ReadOnly")]
|
||||
private Timer _searchTimer = null;
|
||||
private string _lastSearchValue = string.Empty;
|
||||
|
||||
private ProgressBarItem _progressBar;
|
||||
private DisplayTabControl _tabControl;
|
||||
private StepRTB _myRTB;
|
||||
private string _selectedRoidBeforeRoEditor = null;
|
||||
|
||||
private ROFstInfo _myROFST;
|
||||
private DocVersionInfo _docVersionInfo;
|
||||
@@ -52,12 +43,9 @@ namespace Volian.Controls.Library
|
||||
private int? _currDocVersionID = null;
|
||||
|
||||
private RoUsageInfo _curROLink;
|
||||
private E_ROValueType _curROTypeFilter = E_ROValueType.All;
|
||||
|
||||
private ROFSTLookup.rochild selectedChld;
|
||||
|
||||
private DisplayTags displayTags;
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -89,6 +77,13 @@ namespace Volian.Controls.Library
|
||||
(_myRTB != null && (_myRTB.IsRoTable != lastRTBwasROTable || _myRTB.IsRoFigure != lastRTBwasROFigure)); }
|
||||
}
|
||||
|
||||
//This flag will be set when the docversion gets updated to let it know that the full tree needs a refresh
|
||||
private bool changedDocVersion = false;
|
||||
|
||||
//B2026-057 PROMS Crash when Closing Tabs
|
||||
// this flag will prevent multiple asking in a row if should updste ROs
|
||||
private static bool askedAboutchangedDocVersion = false;
|
||||
|
||||
public ROFstInfo MyROFST
|
||||
{
|
||||
get { return _myROFST; }
|
||||
@@ -128,6 +123,13 @@ namespace Volian.Controls.Library
|
||||
// B2022-135 Submitted for Admin Tools (Check RO Links tool)
|
||||
if (_docVersionInfo == null || _docVersionInfo != value || _docVersionInfo.VersionID != value.VersionID)
|
||||
{
|
||||
//Set flag for modified the docversion - should check for new ROs
|
||||
if (_docVersionInfo?.VersionID != value?.VersionID)
|
||||
{
|
||||
changedDocVersion = true;
|
||||
askedAboutchangedDocVersion = false;
|
||||
}
|
||||
|
||||
_docVersionInfo = value;
|
||||
|
||||
if (_myRTB != null && (_docVersionInfo == null || _docVersionInfo.VersionID != _myRTB.MyDVI.VersionID))
|
||||
@@ -201,6 +203,10 @@ namespace Volian.Controls.Library
|
||||
// B2022-098: [JPR] ROs not being resolved in Word Sections
|
||||
CurROLink = null;
|
||||
_savCurROLink = null;
|
||||
|
||||
//Clear flag for modified the docversion (if should check for new ROs)
|
||||
//clearing this flag here prevents it from checking twice
|
||||
changedDocVersion = false;
|
||||
}
|
||||
else if(_myRTB != value)
|
||||
{
|
||||
@@ -251,6 +257,8 @@ namespace Volian.Controls.Library
|
||||
set { _myUserInfo = value; }
|
||||
}
|
||||
|
||||
public SessionInfo MySessionInfo { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
@@ -267,57 +275,73 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (_searchTimer == null)
|
||||
{
|
||||
_searchTimer = new Timer();
|
||||
_searchTimer.Interval = 1000;
|
||||
_searchTimer = new Timer
|
||||
{
|
||||
Interval = 1000
|
||||
};
|
||||
_searchTimer.Tick += new EventHandler(SelectionTimer_Tick);
|
||||
_searchTimer.Stop();
|
||||
}
|
||||
|
||||
|
||||
// Initialize the DisplayTags object
|
||||
displayTags = new DisplayTags();
|
||||
_ = new DisplayTags();
|
||||
|
||||
_progressBar = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Event Handlers
|
||||
|
||||
#region (Progress Bar)
|
||||
|
||||
private void ProgressBar_Initialize(int max, string desc)
|
||||
private string InitialProgressBarMessage
|
||||
{
|
||||
if (_progressBar != null)
|
||||
set
|
||||
{
|
||||
_progressBar.Maximum = max;
|
||||
_progressBar.Text = desc;
|
||||
_progressBar.TextVisible = true;
|
||||
if (ProgressBar == null) return;
|
||||
ProgressBar.Value = 0;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Text = value;
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
|
||||
private void ProgressBar_SetValue(int curval)
|
||||
private string FinalProgressBarMessage
|
||||
{
|
||||
if (_progressBar != null)
|
||||
set
|
||||
{
|
||||
_progressBar.Value = curval;
|
||||
if (ProgressBar == null) return;
|
||||
ProgressBar.Text = value;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Value = 100;
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
|
||||
private void ProgressBar_Clear()
|
||||
private void DoProgressBarRefresh(int value, int max, string text)
|
||||
{
|
||||
if (_progressBar != null)
|
||||
{
|
||||
_progressBar.Text = string.Empty;
|
||||
_progressBar.Maximum = 0;
|
||||
_progressBar.Value = 0;
|
||||
}
|
||||
if (ProgressBar == null) return;
|
||||
ProgressBar.Maximum = max;
|
||||
ProgressBar.Value = value;
|
||||
ProgressBar.Text = text;
|
||||
Application.DoEvents();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region (RTB)
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// DisplayTab was changed
|
||||
// need to clear the RTB selected
|
||||
// without resetting the DVI or FST
|
||||
// (those will be set manually / individually)
|
||||
// this will prevent DVI and FST from changing to null then back again
|
||||
// which will trigger reloads
|
||||
public void ClearRTB()
|
||||
{
|
||||
_myRTB = null;
|
||||
CurROLink = null;
|
||||
_savCurROLink = null;
|
||||
}
|
||||
|
||||
public void MyRTB_LinkChanged(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
CurROLink = null;
|
||||
@@ -372,9 +396,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
// B2022-088: [JPR] Find Doc Ro button not working in Word Sections
|
||||
// B2022-098: [JPR] ROs not being resolved in Word Sections
|
||||
if (e.Node.Tag is ROFSTLookup.rochild)
|
||||
if (e.Node.Tag is ROFSTLookup.rochild chld)
|
||||
{
|
||||
ROFSTLookup.rochild chld = (ROFSTLookup.rochild)e.Node.Tag;
|
||||
selectedChld = chld;
|
||||
|
||||
if (chld.value != null)
|
||||
@@ -480,7 +503,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else if (selectedChld.type == 4) // x/y plot
|
||||
{
|
||||
frmXYPlot plot = new frmXYPlot(selectedChld.appid + " - " + selectedChld.title, selectedChld.value);
|
||||
frmXYPlot plot = new frmXYPlot($"{selectedChld.appid} - {selectedChld.title}", selectedChld.value);
|
||||
plot.Show();
|
||||
}
|
||||
}
|
||||
@@ -494,7 +517,7 @@ namespace Volian.Controls.Library
|
||||
private void btnFindDocRO_Click(object sender, EventArgs e)
|
||||
{
|
||||
// C2016-044: support click of the 'Find Doc RO' button:
|
||||
DisplayTabItem dti = (_tabControl == null) ? null : _tabControl.SelectedDisplayTabItem;
|
||||
DisplayTabItem dti = _tabControl?.SelectedDisplayTabItem;
|
||||
|
||||
if (dti != null && dti.MyDSOTabPanel != null)
|
||||
{
|
||||
@@ -534,15 +557,12 @@ namespace Volian.Controls.Library
|
||||
string roapp = Volian.Base.Library.ExeInfo.GetROEditorPath(); // get the path to the RO Editor Executable
|
||||
object obj = tvROFST.SelectedNode.Tag;
|
||||
|
||||
if (obj is ROFSTLookup.rochild)
|
||||
if (obj is ROFSTLookup.rochild roch)
|
||||
{
|
||||
ROFSTLookup.rochild roch = (ROFSTLookup.rochild)obj;
|
||||
|
||||
_selectedRoidBeforeRoEditor = roch.roid;
|
||||
string args = "\"" + MyROFST.MyRODb.FolderPath + "\" " + roch.roid.Substring(0,12).ToLower();
|
||||
string args = $"\"{MyROFST.MyRODb.FolderPath}\" {roch.roid.Substring(0, 12).ToLower()}";
|
||||
|
||||
// C2017-003: ro data in sql server, check for sql connection string
|
||||
if (MyROFST.MyRODb.DBConnectionString != "cstring") args = args + " \"" + MyROFST.MyRODb.DBConnectionString + "\"";
|
||||
if (MyROFST.MyRODb.DBConnectionString != "cstring") args = $"{args} \"{MyROFST.MyRODb.DBConnectionString}\"";
|
||||
|
||||
// C2021-026 pass in Parent/Child information (list of the children)
|
||||
// B2022-019 look at all DocVersions to find ParentChild information
|
||||
@@ -556,7 +576,7 @@ namespace Volian.Controls.Library
|
||||
DocVersionConfig dvc = dvi.DocVersionConfig;
|
||||
if (dvc != null && dvc.Unit_Name != "" && dvc.Unit_Count > 1) // B2021-089 only pass in applicability info if defined for more than one unit
|
||||
{
|
||||
args += " \"PC=" + dvc.Unit_Name + "\"";
|
||||
args += $" \"PC={dvc.Unit_Name}\"";
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -575,21 +595,81 @@ namespace Volian.Controls.Library
|
||||
|
||||
#endregion
|
||||
|
||||
#region (ROUpdate)
|
||||
public List<string> roFstInfo_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args)
|
||||
{
|
||||
return VlnFlexGrid.ROTableUpdate(sender, args);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void LoadTree(bool forceReload = false)
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// changed to return true if the RO FST got updated
|
||||
public bool LoadTree(bool forceReload = false)
|
||||
{
|
||||
bool updatedROs = false;
|
||||
|
||||
if (MyROFST == null)
|
||||
{
|
||||
tvROFST.Nodes.Clear();
|
||||
lbFound.Visible = false;
|
||||
return;
|
||||
return updatedROs;
|
||||
}
|
||||
|
||||
if (forceReload || RoTreeNeedsReloaded || tvROFST.Nodes == null || tvROFST.Nodes.Count <= 0)
|
||||
if (changedDocVersion || forceReload || RoTreeNeedsReloaded || tvROFST.Nodes == null || tvROFST.Nodes.Count <= 0)
|
||||
{
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//check if newer data - if there is, check if user wants to update data
|
||||
int fstid = MyROFSTLookup.GetNewerFSTID();
|
||||
int origfstid = MyROFSTLookup.RofstID;
|
||||
|
||||
if (_docVersionInfo != null && fstid != -1 && fstid != MyROFSTLookup.RofstID)
|
||||
{
|
||||
string message = string.Empty;
|
||||
if (_progressBar?.Text != "Cannot check-out Working Draft" && !MySessionInfo.CanCheckOutItem(_docVersionInfo.VersionID, CheckOutType.DocVersion, ref message))
|
||||
{
|
||||
FlexibleMessageBox.Show(this, message, "Working Draft Has Items Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
FinalProgressBarMessage = "Cannot check-out Working Draft";
|
||||
}
|
||||
else if (!MySessionInfo.CanCheckOutItem(_docVersionInfo.VersionID, CheckOutType.DocVersion, ref message))
|
||||
{
|
||||
//do nothing - is still checked out
|
||||
}
|
||||
else if (changedDocVersion && !askedAboutchangedDocVersion && !ROWorkingDraftAsk.ContainsWorkingDraft(_docVersionInfo.VersionID))
|
||||
{
|
||||
if (MessageBox.Show($"There exists a newer ROFST for this RO database that was loaded for other sets.\r\n\r\nDo you want to update this set's ROs to be consistent/use the latest loaded ROFST?", "Load ROs", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
InitialProgressBarMessage = "Updating ROs";
|
||||
|
||||
ROFstInfo roFstInfo = ROFstInfo.Get(fstid);
|
||||
roFstInfo.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
ROFstInfo.RefreshROFstAtItemLevel(_docVersionInfo, DoProgressBarRefresh, null, roFstInfo, origfstid, fstid);
|
||||
roFstInfo.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
|
||||
Application.DoEvents();
|
||||
|
||||
FinalProgressBarMessage = "ROs values updated";
|
||||
MyROFST = roFstInfo;
|
||||
|
||||
updatedROs = true;
|
||||
|
||||
askedAboutchangedDocVersion = false;
|
||||
ROWorkingDraftAsk.ClearWorkingDrafts();
|
||||
}
|
||||
else
|
||||
{
|
||||
askedAboutchangedDocVersion = true;
|
||||
if (!ROWorkingDraftAsk.ContainsWorkingDraft(_docVersionInfo.VersionID))
|
||||
ROWorkingDraftAsk.AddWorkingDrafts(_docVersionInfo.VersionID);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//B2025-008
|
||||
//in cases where a RO table is clicked on
|
||||
//it will refresh the list
|
||||
@@ -597,23 +677,28 @@ namespace Volian.Controls.Library
|
||||
//so can go to it after the refresh
|
||||
string tmpROID = CurROLink?.ROID;
|
||||
|
||||
ROFSTLookup.rodbi[] dbs = MyROFSTLookup.GetRODatabaseList(true);
|
||||
ROFSTLookup.rodbi[] dbs = MyROFSTLookup?.GetRODatabaseList(true);
|
||||
|
||||
// B2022-123: RO Tab Treeview not showing correct RO values when switching between procedures.
|
||||
// Added optional parameter "forceReload" and cleared out any existing nodes before reloading the tree
|
||||
// the clear nodes code below has to be after the GetRODatabaseList database call because of races conditions in the code
|
||||
tvROFST.Nodes.Clear();
|
||||
ResetSearch(); //B2023-050 need to reset the SaveRO, and any RO info that was selected last time the tree was loaded
|
||||
if (dbs != null)
|
||||
{
|
||||
for (int i = 0; i < dbs.Length; i++)
|
||||
{
|
||||
ROFSTLookup.rodbi db = dbs[i];
|
||||
|
||||
TreeNode tn = new TreeNode(db.dbiTitle);
|
||||
tn.Tag = db;
|
||||
TreeNode tn = new TreeNode(db.dbiTitle)
|
||||
{
|
||||
Tag = db
|
||||
};
|
||||
tvROFST.Nodes.Add(tn);
|
||||
|
||||
AddDummyGroup(db, tn);
|
||||
}
|
||||
}
|
||||
|
||||
_currRofstID = (IsRofstValid) ? (int?)_myROFST.ROFstID : null;
|
||||
_currDocVersionID = null;
|
||||
@@ -621,6 +706,12 @@ namespace Volian.Controls.Library
|
||||
if(_docVersionInfo != null) _currDocVersionID = (int?)_docVersionInfo.VersionID;
|
||||
|
||||
if (tmpROID != null) ExpandNode(ROFSTLookup.FormatRoidKey(tmpROID, true));
|
||||
|
||||
//doc version would have updated (if needed) so reset flag
|
||||
if (_progressBar?.Text != "Cannot check-out Working Draft")
|
||||
{
|
||||
changedDocVersion = false;
|
||||
}
|
||||
}
|
||||
|
||||
var unitInfoNode = tvROFST.Nodes.Cast<TreeNode>().Where(x => x.Text == "Unit Information").FirstOrDefault();
|
||||
@@ -628,7 +719,7 @@ namespace Volian.Controls.Library
|
||||
if ((ROTypeFilter == E_ROValueType.Text || ROTypeFilter == E_ROValueType.All) && this.MyDvi != null && this.MyDvi.MultiUnitCount > 1)
|
||||
{
|
||||
// Add Unit Information Database if it doesn't exist
|
||||
if (unitInfoNode == null)
|
||||
if (unitInfoNode == null && MyROFSTLookup != null)
|
||||
{
|
||||
TreeNode tnn = tvROFST.Nodes.Add("Unit Information");
|
||||
TreeNode cn = null;
|
||||
@@ -671,7 +762,7 @@ namespace Volian.Controls.Library
|
||||
tvROFST.Nodes.Remove(unitInfoNode);
|
||||
}
|
||||
|
||||
_curROTypeFilter = _roTypeFilter;
|
||||
return updatedROs;
|
||||
}
|
||||
|
||||
public void SetFindDocROButton(bool enabled)
|
||||
@@ -686,11 +777,9 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (match1.Success && !match1.Value.Contains("/") && match2.Success && !match2.Value.Contains("/")) // Compare the numeric value?
|
||||
{
|
||||
double dbl1;
|
||||
double dbl2;
|
||||
|
||||
//B2017-232 changed from Parse to TryParse. AEP had figure title that had a number containing two periods which caused Parse to error?
|
||||
if (double.TryParse(match1.ToString(), out dbl1) && double.TryParse(match2.ToString(), out dbl2))
|
||||
if (double.TryParse(match1.ToString(), out double dbl1) && double.TryParse(match2.ToString(), out double dbl2))
|
||||
{
|
||||
if (dbl1 != dbl2) //B2021-144 if the numerical is identical default to the string comparison?
|
||||
return dbl1 > dbl2;
|
||||
@@ -713,15 +802,13 @@ namespace Volian.Controls.Library
|
||||
//object tag = tn.Tag;
|
||||
ROFSTLookup.rochild[] children = null;
|
||||
|
||||
if (tn.Tag is ROFSTLookup.rodbi)
|
||||
if (tn.Tag is ROFSTLookup.rodbi db)
|
||||
{
|
||||
ROFSTLookup.rodbi db = (ROFSTLookup.rodbi)tn.Tag;
|
||||
MyROFSTLookup.LoadChildren(ref db);
|
||||
children = db.children;
|
||||
}
|
||||
else if (tn.Tag is ROFSTLookup.rochild)
|
||||
else if (tn.Tag is ROFSTLookup.rochild ch)
|
||||
{
|
||||
ROFSTLookup.rochild ch = (ROFSTLookup.rochild)tn.Tag;
|
||||
MyROFSTLookup.LoadChildren(ref ch);
|
||||
children = ch.children;
|
||||
}
|
||||
@@ -760,8 +847,10 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (roc.value == null)
|
||||
{
|
||||
tmp = new TreeNode(roc.title);
|
||||
tmp.Tag = roc;
|
||||
tmp = new TreeNode(roc.title)
|
||||
{
|
||||
Tag = roc
|
||||
};
|
||||
|
||||
int index = FindIndex(tn.Nodes, tmp.Text);
|
||||
tn.Nodes.Insert(index, tmp);
|
||||
@@ -772,8 +861,10 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
{
|
||||
|
||||
tmp = new TreeNode(roc.title);
|
||||
tmp.Tag = roc;
|
||||
tmp = new TreeNode(roc.title)
|
||||
{
|
||||
Tag = roc
|
||||
};
|
||||
|
||||
if (tmp.Text.IndexOf("\\u") > -1) // RO Editor add symbols C2022 - 003
|
||||
{
|
||||
@@ -808,7 +899,7 @@ namespace Volian.Controls.Library
|
||||
// Clean-up Roid if necessary
|
||||
roid = ROFSTLookup.FormatRoidKey(roid);
|
||||
|
||||
bool multValSel = (roid.Length == 16) ? true : false;
|
||||
bool multValSel = (roid.Length == 16);
|
||||
string db = roid.Substring(0, 4);
|
||||
int dbiID = MyROFSTLookup.GetRODatabaseTitleIndex(roid);
|
||||
|
||||
@@ -837,7 +928,7 @@ namespace Volian.Controls.Library
|
||||
if (roid.StartsWith("FFFF"))
|
||||
dbNode = tvROFST.Nodes.Cast<TreeNode>().Where(x => (x.Tag.Equals(null)) && (x.Text.Equals("Unit Information"))).FirstOrDefault();
|
||||
else
|
||||
dbNode = tvROFST.Nodes.Cast<TreeNode>().Where(x => (x.Tag is ROFSTLookup.rodbi) && ((ROFSTLookup.rodbi)x.Tag).dbiID == dbiID).FirstOrDefault();
|
||||
dbNode = tvROFST.Nodes.Cast<TreeNode>().Where(x => (x.Tag is ROFSTLookup.rodbi rodbi) && rodbi.dbiID == dbiID).FirstOrDefault();
|
||||
|
||||
if (dbNode != null)
|
||||
{
|
||||
@@ -853,7 +944,7 @@ namespace Volian.Controls.Library
|
||||
LoadChildren(tnExpand);
|
||||
tnExpand.Expand();
|
||||
|
||||
TreeNode chldNode = tnExpand.Nodes.Cast<TreeNode>().Where(x => (x.Tag is ROFSTLookup.rochild) && ((ROFSTLookup.rochild)x.Tag).ID == citm).FirstOrDefault();
|
||||
TreeNode chldNode = tnExpand.Nodes.Cast<TreeNode>().FirstOrDefault(x => (x.Tag is ROFSTLookup.rochild rochild) && rochild.ID == citm);
|
||||
if (chldNode != null)
|
||||
{
|
||||
tnExpand = chldNode;
|
||||
@@ -905,10 +996,9 @@ namespace Volian.Controls.Library
|
||||
|
||||
Object obj = tvROFST.SelectedNode.Tag;
|
||||
|
||||
if (obj is ROFSTLookup.rochild)
|
||||
if (obj is ROFSTLookup.rochild roc)
|
||||
{
|
||||
ROFSTLookup.rochild roc = (ROFSTLookup.rochild)obj;
|
||||
DisplayTabItem dti = TabControl.SelectedDisplayTabItem; //.OpenItem(_ItemInfo); // open the corresponding procedure text
|
||||
DisplayTabItem dti = TabControl.SelectedDisplayTabItem;
|
||||
|
||||
if (dti.MyDSOTabPanel != null) // A Word Document tab is the active tab
|
||||
{
|
||||
@@ -916,10 +1006,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
// Insert the RO text at the current cursor position in the word document
|
||||
// NOTE: assuming any type of RO can be put in an Accessory (MSWord) Document
|
||||
if (dti.MyDSOTabPanel != null)
|
||||
{
|
||||
dti.MyDSOTabPanel.InsertText(accPageID);
|
||||
}
|
||||
dti.MyDSOTabPanel?.InsertText(accPageID);
|
||||
}
|
||||
else if (MyRTB != null) // a Procedure Steps section tab is active
|
||||
{
|
||||
@@ -1021,12 +1108,9 @@ namespace Volian.Controls.Library
|
||||
string roapp = Volian.Base.Library.ExeInfo.GetROEditorPath(); // get the path to the RO Editor Executable
|
||||
Object obj = tvROFST.SelectedNode.Tag;
|
||||
|
||||
if (obj is ROFSTLookup.rochild)
|
||||
if (obj is ROFSTLookup.rochild roc)
|
||||
{
|
||||
ROFSTLookup.rochild roc = (ROFSTLookup.rochild)obj;
|
||||
_selectedRoidBeforeRoEditor = roc.roid;
|
||||
|
||||
string args = "\"" + _myROFST.MyRODb.FolderPath + "\" " + roc.roid.ToLower();
|
||||
string args = $"\"{_myROFST.MyRODb.FolderPath}\" {roc.roid.ToLower()}";
|
||||
|
||||
if (!Directory.Exists(_myROFST.MyRODb.FolderPath))
|
||||
{
|
||||
@@ -1035,7 +1119,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
// C2017-003: ro data in sql server, check for sql connection string
|
||||
if (_myROFST.MyRODb.DBConnectionString != "cstring") args = args + " \"" + _myROFST.MyRODb.DBConnectionString + "\"";
|
||||
if (_myROFST.MyRODb.DBConnectionString != "cstring") args = $"{args} \"{_myROFST.MyRODb.DBConnectionString}\"";
|
||||
|
||||
// C2021-026 pass in Parent/Child information (list of the children)
|
||||
// B2022-019 look at all DocVersions to find ParentChild information
|
||||
@@ -1049,7 +1133,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (jdvc != null && jdvc.Unit_Name != "" && jdvc.Unit_Count > 1) // B2021-089 only pass in applicability info if defined for more than one unit
|
||||
{
|
||||
args += " \"PC=" + jdvc.Unit_Name + "\"";
|
||||
args += $" \"PC={jdvc.Unit_Name}\"";
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1093,7 +1177,6 @@ namespace Volian.Controls.Library
|
||||
lbFound.DataSource = null;
|
||||
lbFound.Visible = false;
|
||||
|
||||
_lastSearchValue = searchValue;
|
||||
}
|
||||
else if (searchValue.Contains("#Link:ReferencedObject")) // RO Link (roid)
|
||||
{
|
||||
@@ -1115,7 +1198,6 @@ namespace Volian.Controls.Library
|
||||
lbFound.DataSource = null;
|
||||
lbFound.Visible = false;
|
||||
|
||||
_lastSearchValue = searchValue;
|
||||
}
|
||||
else // if (searchValue != _lastSearchValue)
|
||||
{
|
||||
@@ -1144,12 +1226,10 @@ namespace Volian.Controls.Library
|
||||
lbFound.Visible = false;
|
||||
}
|
||||
|
||||
_lastSearchValue = searchValue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_lastSearchValue = string.Empty;
|
||||
lbFound.DataSource = null;
|
||||
lbFound.Visible = false;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using DevComponents.DotNetBar;
|
||||
using DevComponents.AdvTree;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
|
||||
|
||||
@@ -23,8 +19,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
private void OnPrintRequest(DisplayReportsEventArgs args)
|
||||
{
|
||||
if (PrintRequest != null)
|
||||
PrintRequest(this, args);
|
||||
PrintRequest?.Invoke(this, args);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -34,16 +29,17 @@ namespace Volian.Controls.Library
|
||||
// B2022-026 RO Memeory reduction logic change - defined dummy node text variable to ensure consistancy
|
||||
private const string DummyNodeText = "VLN_DUMMY_NODE";
|
||||
|
||||
#pragma warning disable IDE0044 // Add readonly modifier
|
||||
private List<DocVersionInfo> lstCheckedDocVersions = new List<DocVersionInfo>();
|
||||
private List<object> lstCheckedROs = new List<object>();
|
||||
private List<ItemInfoList> lstReportResults = new List<ItemInfoList>();
|
||||
private List<string> ROList = new List<string>();
|
||||
private List<object> lstROObj = new List<object>();
|
||||
#pragma warning restore IDE0044 // Add readonly modifier
|
||||
private int _MyRODbID;
|
||||
|
||||
private DocVersionInfo _MyDocVersion;
|
||||
private ROFSTLookup _MyROFSTLookup;
|
||||
private ItemInfoList _ReportResult;
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private Dictionary<string, string> AccIDROIDdic = new Dictionary<string, string>();
|
||||
static int blankKeyCnt = 0;
|
||||
|
||||
@@ -104,10 +100,8 @@ namespace Volian.Controls.Library
|
||||
set
|
||||
{
|
||||
if (DesignMode) return; // B2019-043 need to check if we are just saving changes to the user interface
|
||||
//if (!Visible) return; // don't reset anything if the form is invisible.
|
||||
_MyROFSTLookup = value; // define the tree nodes based on this rofst
|
||||
advTreeROFillIn(true);
|
||||
//LoadROComboTree();
|
||||
advTreeROFillIn();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +148,7 @@ namespace Volian.Controls.Library
|
||||
tabROReports.PerformClick();
|
||||
}
|
||||
|
||||
public void advTreeROFillIn(bool blSeachTabClicked)
|
||||
public void advTreeROFillIn()
|
||||
{
|
||||
DevComponents.AdvTree.Node topnode = null;
|
||||
advTreeRO.Nodes.Clear();
|
||||
@@ -168,10 +162,12 @@ namespace Volian.Controls.Library
|
||||
advTreeRO.AfterCollapse -= new AdvTreeNodeEventHandler(advTreeRO_AfterExpandorCollapse);
|
||||
advTreeRO.AfterCollapse += new AdvTreeNodeEventHandler(advTreeRO_AfterExpandorCollapse);
|
||||
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = "All Referenced Objects";
|
||||
topnode.Tag = null;
|
||||
topnode.CheckBoxVisible = true;
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = "All Referenced Objects",
|
||||
Tag = null,
|
||||
CheckBoxVisible = true
|
||||
};
|
||||
|
||||
advTreeRO.Nodes.Add(topnode);
|
||||
|
||||
@@ -194,7 +190,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
public void advTreeProcSetsFillIn(bool blSeachTabClicked)
|
||||
public void advTreeProcSetsFillIn()
|
||||
{
|
||||
DevComponents.AdvTree.Node topnode = null;
|
||||
int cntnd = 0;
|
||||
@@ -203,40 +199,28 @@ namespace Volian.Controls.Library
|
||||
int fiCount = fi.ChildFolderCount;
|
||||
advTreeProcSets.Nodes.Clear();
|
||||
lstCheckedDocVersions.Clear();
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = "Available Procedure Sets";
|
||||
topnode.Tag = fi;
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = "Available Procedure Sets",
|
||||
Tag = fi
|
||||
};
|
||||
advTreeProcSets.Nodes.Add(topnode);
|
||||
//advTreeProcSets.AfterNodeInsert += new TreeNodeCollectionEventHandler(advTreeProcSets_AfterNodeInsert);
|
||||
|
||||
|
||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fic.ToString();
|
||||
newnode.Tag = fic;
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fic.ToString(),
|
||||
Tag = fic
|
||||
};
|
||||
|
||||
//int tmp;
|
||||
//if (topnode == null)
|
||||
//{
|
||||
// newnode.Text = "Available Procedure Sets";
|
||||
// tmp = advTreeProcSets.Nodes.Add(newnode);
|
||||
// topnode = newnode;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// newnode.Selectable = true;
|
||||
// newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
// newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
// newnode.CheckBoxThreeState = false;
|
||||
// newnode.CheckBoxVisible = true;
|
||||
// tmp = topnode.Nodes.Add(newnode);
|
||||
//}
|
||||
cntnd++;
|
||||
if (fic.ChildFolderCount > 0 || fic.FolderDocVersionCount > 0) // allow for '+' for tree expansion
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = DummyNodeText;
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
newnode.Nodes.Add(tnt);
|
||||
topnode.Nodes.Add(newnode);
|
||||
}
|
||||
@@ -247,8 +231,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
cntnd++;
|
||||
fi = Mydocversion.MyFolder;
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = fi.ToString();
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fi.ToString()
|
||||
};
|
||||
advTreeProcSets.Nodes.Add(topnode);
|
||||
topnode.Tag = fi;
|
||||
}
|
||||
@@ -262,8 +248,6 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
advTreeProcSets.Nodes[0].SelectedCell = advTreeProcSets.Nodes[0].Cells[0]; // select the first node - fixes cosmetic problem
|
||||
|
||||
//if (blSeachTabClicked)
|
||||
// cbxTextSearchText.Focus(); // set initial focus to enter search text
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -272,12 +256,8 @@ namespace Volian.Controls.Library
|
||||
|
||||
private void GenerateAccIDSortedROList()
|
||||
{
|
||||
//Dictionary<string, string> AccIDROIDdic = new Dictionary<string, string>();
|
||||
List<string> AccPgIDsList = new List<string>();
|
||||
AccIDROIDdic.Clear();
|
||||
|
||||
string rtnStr = "";
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
ROFSTLookup.rochild ch;
|
||||
ROList.Clear();
|
||||
|
||||
@@ -287,7 +267,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (ROFSTLookup.rodbi rodbi in _MyROFSTLookup.GetRODatabaseList(true))
|
||||
{
|
||||
rtnStr = _MyRODbID.ToString() + ":" + string.Format("{0}", rodbi.dbiID.ToString("X4"));
|
||||
string rtnStr = $"{_MyRODbID}:{string.Format("{0}", rodbi.dbiID.ToString("X4"))}";
|
||||
|
||||
if (rodbi.children != null)
|
||||
{
|
||||
@@ -304,9 +284,8 @@ namespace Volian.Controls.Library
|
||||
|
||||
continue;
|
||||
}
|
||||
else if (rolkup is ROFSTLookup.rodbi)
|
||||
else if (rolkup is ROFSTLookup.rodbi rodbi)
|
||||
{
|
||||
ROFSTLookup.rodbi rodbi = (ROFSTLookup.rodbi)rolkup;
|
||||
|
||||
//Try to lazy load the children - B2022-026 RO Memory Reduction code
|
||||
if (rodbi.children == null || rodbi.children.Length <= 0)
|
||||
@@ -321,13 +300,13 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
ROList.Add(_MyRODbID.ToString() + ":" + string.Format("{0}", rodbi.dbiID.ToString("X4")));
|
||||
ROList.Add($"{_MyRODbID}:{string.Format("{0}", rodbi.dbiID.ToString("X4"))}");
|
||||
}
|
||||
}
|
||||
else if (rolkup is ROFSTLookup.rochild)
|
||||
else if (rolkup is ROFSTLookup.rochild rochild)
|
||||
{
|
||||
ch = (ROFSTLookup.rochild)rolkup;
|
||||
chld = ch.children;
|
||||
ch = rochild;
|
||||
ROFSTLookup.rochild[] chld = ch.children;
|
||||
|
||||
//Try to lazy load the children - B2022-026 RO Memory Reduction code
|
||||
if (ch.children == null || ch.children.Length <= 0)
|
||||
@@ -359,13 +338,13 @@ namespace Volian.Controls.Library
|
||||
private void PutROChildrenInDictionary(string rodbidPrefix, object roObj)
|
||||
{
|
||||
ROFSTLookup.rochild chld = (ROFSTLookup.rochild)roObj;
|
||||
string rtnstr = rodbidPrefix;// "";
|
||||
string keystr = ((chld.appid == "") ? GetNextBlankKey() : chld.appid) + chld.roid.Substring(0, 4);
|
||||
|
||||
//Try to lazy load the children - B2022-026 RO Memory Reduction
|
||||
if (chld.children == null || chld.children.Length <= 0)
|
||||
chld.children = MyROFSTLookup.GetRoChildrenByRoid(chld.roid, true);
|
||||
|
||||
string rtnstr;
|
||||
// If still no children - B2022-026 RO Memory Reduction code - check children length
|
||||
if (chld.children == null || chld.children.Length <= 0) // get a single ROID
|
||||
{
|
||||
@@ -403,7 +382,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (AccIDROIDdic.ContainsKey(keystr)) // For duplicates, append the parent title (B2017-011) so adding to dictionary doesn't crash.
|
||||
{
|
||||
keystr = keystr + "|" + chld.title;
|
||||
keystr = $"{keystr}|{chld.title}";
|
||||
}
|
||||
|
||||
AccIDROIDdic.Add(keystr, rtnstr);
|
||||
@@ -416,7 +395,6 @@ namespace Volian.Controls.Library
|
||||
private void GenerateROList()
|
||||
{
|
||||
string rtnStr = "";
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
ROFSTLookup.rochild ch;
|
||||
ROList.Clear();
|
||||
|
||||
@@ -427,26 +405,26 @@ namespace Volian.Controls.Library
|
||||
// B2022-026 RO Memory Reduction code - added flag to load all children
|
||||
foreach (ROFSTLookup.rodbi rodbi in _MyROFSTLookup.GetRODatabaseList(true))
|
||||
{
|
||||
rtnStr = _MyRODbID.ToString() + ":" + string.Format("{0}", rodbi.dbiID.ToString("X4"));
|
||||
rtnStr = $"{_MyRODbID}:{string.Format("{0}", rodbi.dbiID.ToString("X4"))}";
|
||||
ROList.Add(rtnStr);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else if (rolkup is ROFSTLookup.rodbi)
|
||||
else if (rolkup is ROFSTLookup.rodbi rodbi)
|
||||
{
|
||||
rtnStr = _MyRODbID.ToString() + ":" + string.Format("{0}", ((ROFSTLookup.rodbi)rolkup).dbiID.ToString("X4"));
|
||||
rtnStr = $"{_MyRODbID}:{string.Format("{0}", rodbi.dbiID.ToString("X4"))}";
|
||||
}
|
||||
else if (rolkup is ROFSTLookup.rochild)
|
||||
else if (rolkup is ROFSTLookup.rochild rochild)
|
||||
{
|
||||
ch = (ROFSTLookup.rochild)rolkup;
|
||||
ch = rochild;
|
||||
|
||||
//Try to lazy load the children - B2022-026 RO Memory Reduction code
|
||||
if (ch.children == null || ch.children.Length <= 0)
|
||||
ch.children = MyROFSTLookup.GetRoChildrenByRoid(ch.roid, true);
|
||||
|
||||
chld = ch.children;
|
||||
ROFSTLookup.rochild[] chld = ch.children;
|
||||
|
||||
rtnStr = _MyRODbID.ToString() + ":" + GetROChildren(rolkup).TrimEnd(','); // GetROChildren(rolkup).TrimEnd(',') grabs the children of the selected item
|
||||
rtnStr = $"{_MyRODbID}:{GetROChildren(rolkup).TrimEnd(',')}"; // GetROChildren(rolkup).TrimEnd(',') grabs the children of the selected item
|
||||
}
|
||||
|
||||
ROList.Add(rtnStr);
|
||||
@@ -603,7 +581,7 @@ namespace Volian.Controls.Library
|
||||
labelX1.Visible = cmbxROUsageSort.Visible = cbxROUsage.Checked;
|
||||
|
||||
// reset the RO tree and clear anything that was selected
|
||||
advTreeROFillIn(true);
|
||||
advTreeROFillIn();
|
||||
lstCheckedROs.Clear();
|
||||
|
||||
cbxIncldMissingROs.Checked = false;// !cbxSummary.Checked;
|
||||
@@ -689,7 +667,6 @@ namespace Volian.Controls.Library
|
||||
return "";
|
||||
}
|
||||
|
||||
//string roapp = Environment.GetEnvironmentVariable("roapp");
|
||||
string roapp = Volian.Base.Library.ExeInfo.GetROEditorPath(); // get the path to the RO Editor Executable
|
||||
if (roapp == null)
|
||||
{
|
||||
@@ -703,7 +680,6 @@ namespace Volian.Controls.Library
|
||||
return "";
|
||||
}
|
||||
|
||||
//string roloc = "\"" + MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath + "\" " + "\"" + ROList + "\"";
|
||||
if (!Directory.Exists(MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath))
|
||||
{
|
||||
MessageBox.Show(string.Format("RO Database directory does not exist: {0}", MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath));
|
||||
@@ -711,14 +687,14 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
string cmpRptExePath = roapp.Substring(0, roapp.LastIndexOf("\\")) + "\\CmpRpt.exe ";
|
||||
roDataFile = MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath + "\\" + roDataFile;
|
||||
roDataFile = $"{MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath}\\{roDataFile}";
|
||||
|
||||
try
|
||||
{
|
||||
if (File.Exists(roDataFile)) File.Delete(roDataFile);
|
||||
Application.DoEvents();
|
||||
|
||||
string fname = VlnSettings.TemporaryFolder + "\\ROCompleteRprt.txt";
|
||||
string fname = $"{VlnSettings.TemporaryFolder}\\ROCompleteRprt.txt";
|
||||
FileInfo fi = new FileInfo(fname);
|
||||
using (StreamWriter sw = fi.CreateText())
|
||||
{
|
||||
@@ -726,9 +702,9 @@ namespace Volian.Controls.Library
|
||||
sw.Close();
|
||||
}
|
||||
|
||||
string roloc = "\"" + MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath + "\" \"/f=" + fname + "\"";
|
||||
string roloc = $"\"{MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath}\" \"/f={fname}\"";
|
||||
// C2017-003: ro data in sql server, check for sql connection string
|
||||
if (MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString != "cstring") roloc = roloc + " \"/sql=" + MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString + "\"";
|
||||
if (MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString != "cstring") roloc = $"{roloc} \"/sql={MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString}\"";
|
||||
|
||||
// C2021-026 pass in Parent/Child information (list of the children)
|
||||
// B2022-019 look at all DocVersions to find ParentChild information
|
||||
@@ -736,9 +712,8 @@ namespace Volian.Controls.Library
|
||||
DocVersionInfoList dvil = DocVersionInfoList.Get();
|
||||
foreach (DocVersionInfo dvi in dvil)
|
||||
{
|
||||
DocVersionConfig dvc = dvi.DocVersionConfig as DocVersionConfig;
|
||||
if (dvc != null && dvc.Unit_Name != "" && dvc.Unit_Count > 1) // B2021-089 only pass in applicability info if defined for more than one unit
|
||||
roloc += " \"/PC=" + dvc.Unit_Name + "\"";
|
||||
if (dvi.DocVersionConfig is DocVersionConfig dvc && dvc.Unit_Name != "" && dvc.Unit_Count > 1) // B2021-089 only pass in applicability info if defined for more than one unit
|
||||
roloc += $" \"/PC={dvc.Unit_Name}\"";
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -752,7 +727,7 @@ namespace Volian.Controls.Library
|
||||
while (ex.InnerException != null)
|
||||
ex = ex.InnerException;
|
||||
string tmpmsg = ex.Message;
|
||||
MessageBox.Show(tmpmsg, "RO Report Error: " + ex.GetType().Name);
|
||||
MessageBox.Show(tmpmsg, $"RO Report Error: {ex.GetType().Name}");
|
||||
}
|
||||
return roDataFile;
|
||||
}
|
||||
@@ -827,19 +802,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
#region (Procedure List)
|
||||
|
||||
private DevComponents.AdvTree.Node NewAdvTreeNode(string nodetext, bool selectable, bool chxbxvisable)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode;
|
||||
newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = nodetext;
|
||||
newnode.Selectable = selectable;
|
||||
newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
newnode.CheckBoxThreeState = false;
|
||||
newnode.CheckBoxVisible = chxbxvisable;
|
||||
return newnode;
|
||||
}
|
||||
|
||||
private void advTreeProcSets_BeforeExpand(object sender, DevComponents.AdvTree.AdvTreeNodeCancelEventArgs e)
|
||||
{
|
||||
DevComponents.AdvTree.Node par = e.Node;
|
||||
@@ -856,14 +818,18 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fic.ToString();
|
||||
newnode.Tag = fic;
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fic.ToString(),
|
||||
Tag = fic
|
||||
};
|
||||
par.Nodes.Add(newnode);
|
||||
if (fic.HasChildren) // allow for '+' for tree expansion
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = DummyNodeText;
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
newnode.Nodes.Add(tnt);
|
||||
}
|
||||
}
|
||||
@@ -872,14 +838,16 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (DocVersionInfo dv in fi.FolderDocVersions)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = dv.ToString();
|
||||
newnode.Tag = dv;
|
||||
newnode.Selectable = true;
|
||||
newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
newnode.CheckBoxThreeState = false;
|
||||
newnode.CheckBoxVisible = true;
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = dv.ToString(),
|
||||
Tag = dv,
|
||||
Selectable = true,
|
||||
CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter,
|
||||
CheckBoxStyle = eCheckBoxStyle.CheckBox,
|
||||
CheckBoxThreeState = false,
|
||||
CheckBoxVisible = true
|
||||
};
|
||||
par.Nodes.Add(newnode);
|
||||
}
|
||||
}
|
||||
@@ -913,30 +881,15 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (lstCheckedDocVersions.Count == 0)
|
||||
Mydocversion = null;
|
||||
// do this if either none, or more than one procedure set selected
|
||||
//advTreeStepTypes.Nodes.Clear();
|
||||
//lstCheckedStepTypes.Clear();
|
||||
//lstCheckedStepTypesStr.Clear();
|
||||
//Node newnode = new DevComponents.AdvTree.Node();
|
||||
//newnode.Text = "....select a procedure set for types to appear...";
|
||||
//advTreeStepTypes.Nodes.Add(newnode);
|
||||
//buildStepTypePannelTitle();
|
||||
}
|
||||
}
|
||||
//// Enable the RO combo list only if at least one procedure set node
|
||||
//// is selected
|
||||
//cmboTreeROs.Enabled = (lstCheckedDocVersions.Count > 0);
|
||||
//gpFindROs.Enabled = cmboTreeROs.Enabled;
|
||||
|
||||
//SetupContextMenu();
|
||||
|
||||
//buildSetToSearchPanelTitle();
|
||||
EnableOrDisablePrintButton();
|
||||
}
|
||||
|
||||
private void advTreeProcSets_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)
|
||||
{
|
||||
DevComponents.AdvTree.Node n = advTreeProcSets.SelectedNode;
|
||||
_ = advTreeProcSets.SelectedNode;
|
||||
}
|
||||
|
||||
private void advTreeProcSetsPreSelect()
|
||||
@@ -998,8 +951,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (rodbi.children != null && rodbi.children.Length > 0)
|
||||
{
|
||||
DevComponents.AdvTree.Node tmp = new DevComponents.AdvTree.Node();
|
||||
tmp.Text = DummyNodeText;
|
||||
DevComponents.AdvTree.Node tmp = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
tn.Nodes.Add(tmp);
|
||||
}
|
||||
}
|
||||
@@ -1015,12 +970,9 @@ namespace Volian.Controls.Library
|
||||
if (tn.HasChildNodes && tn.Nodes[0].Text != DummyNodeText) return; // already loaded.
|
||||
if (tn.HasChildNodes && tn.Nodes[0].Text == DummyNodeText) tn.Nodes[0].Remove();
|
||||
|
||||
object tag = tn.Tag;
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
|
||||
if (tn.Tag is ROFSTLookup.rodbi)
|
||||
ROFSTLookup.rochild[] chld;
|
||||
if (tn.Tag is ROFSTLookup.rodbi db)
|
||||
{
|
||||
ROFSTLookup.rodbi db = (ROFSTLookup.rodbi)tn.Tag;
|
||||
|
||||
//Try to lazy load the children - B2022-026 RO Memory Reduction code
|
||||
if (db.children == null || db.children.Length <= 0)
|
||||
@@ -1028,9 +980,8 @@ namespace Volian.Controls.Library
|
||||
|
||||
chld = db.children;
|
||||
}
|
||||
else if (tn.Tag is ROFSTLookup.rochild)
|
||||
else if (tn.Tag is ROFSTLookup.rochild ch)
|
||||
{
|
||||
ROFSTLookup.rochild ch = (ROFSTLookup.rochild)tn.Tag;
|
||||
|
||||
//Try to lazy load the children - B2022-026 RO Memory Reduction code
|
||||
if (ch.children == null || ch.children.Length <= 0)
|
||||
@@ -1048,16 +999,14 @@ namespace Volian.Controls.Library
|
||||
// B2022-026 RO Memory Reduction code - check child length
|
||||
if (chld != null && chld.Length > 0)
|
||||
{
|
||||
//ProgressBar_Initialize(chld.Length, tn.Text);
|
||||
for (int i = 0; i < chld.Length; i++)
|
||||
{
|
||||
//ProgressBar_SetValue(i);
|
||||
DevComponents.AdvTree.Node tmp = null;
|
||||
|
||||
// Try to Lazy Load children - B2022-026 RO Memory Reduction code
|
||||
if (chld[i].children == null || chld[i].children.Length <= 0)
|
||||
chld[i].children = MyROFSTLookup.GetRoChildrenByRoid(chld[i].roid, true);
|
||||
|
||||
Node tmp;
|
||||
// if this is a group, i.e. type 0, add a dummy node
|
||||
if (chld[i].type == 0 && chld[i].children == null)
|
||||
{
|
||||
@@ -1067,22 +1016,28 @@ namespace Volian.Controls.Library
|
||||
// B2023-094: don't crash if chld[i].children count is 0, signals an empty group
|
||||
else if (chld[i].value == null && (cbxROUsage.Checked || (chld[i].children != null && chld[i].children.Length > 0 && chld[i].children[0].ParentID != 0)))
|
||||
{
|
||||
tmp = new DevComponents.AdvTree.Node();
|
||||
tmp.Text = chld[i].title;
|
||||
tmp.Tag = chld[i];
|
||||
tmp.CheckBoxVisible = true;
|
||||
tmp = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = chld[i].title,
|
||||
Tag = chld[i],
|
||||
CheckBoxVisible = true
|
||||
};
|
||||
int index = FindIndex(tn.Nodes, tmp.Text);
|
||||
tn.Nodes.Insert(index, tmp);
|
||||
DevComponents.AdvTree.Node sub = new DevComponents.AdvTree.Node();
|
||||
sub.Text = DummyNodeText;
|
||||
DevComponents.AdvTree.Node sub = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
tmp.Nodes.Add(sub);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = new DevComponents.AdvTree.Node();
|
||||
tmp.Text = chld[i].title;
|
||||
tmp.Tag = chld[i];
|
||||
tmp.CheckBoxVisible = true;
|
||||
tmp = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = chld[i].title,
|
||||
Tag = chld[i],
|
||||
CheckBoxVisible = true
|
||||
};
|
||||
int index = FindIndex(tn.Nodes, tmp.Text);
|
||||
tn.Nodes.Insert(index, tmp);
|
||||
}
|
||||
@@ -1093,12 +1048,11 @@ namespace Volian.Controls.Library
|
||||
private void advTreeRO_AfterExpandorCollapse(object sender, AdvTreeNodeEventArgs e)
|
||||
{
|
||||
Node bottomNode = BottomTreeNode(advTreeRO.Nodes);
|
||||
Node lastNode = advTreeRO.Nodes[advTreeRO.Nodes.Count - 1];
|
||||
_ = advTreeRO.Nodes[advTreeRO.Nodes.Count - 1];
|
||||
|
||||
int top = advTreeRO.Nodes[0].Bounds.Top;
|
||||
int bottom = bottomNode.Bounds.Bottom + 5;
|
||||
int hScrollBarHeight = advTreeRO.HScrollBar != null ? advTreeRO.HScrollBar.Height : 0;
|
||||
bottom = bottomNode.Bounds.Bottom + 5;
|
||||
int bottom = bottomNode.Bounds.Bottom + 5;
|
||||
advTreeRO.Size = new Size(advTreeRO.Size.Width, Math.Min(525, bottom - top + hScrollBarHeight));
|
||||
|
||||
if (advTreeRO.VScrollBar != null && bottom < advTreeRO.Size.Height)
|
||||
@@ -1106,8 +1060,7 @@ namespace Volian.Controls.Library
|
||||
int yLookFor = (bottom - advTreeRO.Size.Height) + 2 * hScrollBarHeight;
|
||||
Node topNode = FindTreeNodeAt(advTreeRO.Nodes, yLookFor);
|
||||
|
||||
if (topNode != null)
|
||||
topNode.EnsureVisible();
|
||||
topNode?.EnsureVisible();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1166,94 +1119,35 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private string _ReportTitle;
|
||||
private string _TypesSelected;
|
||||
private ICollection<ItemInfo> _MyItemInfoList;
|
||||
private bool _SortUsageByProcedure;
|
||||
private string _RODataFile = "";
|
||||
private bool _CompleteROReport = true;
|
||||
private ROFSTLookup _rofstLookup;
|
||||
private List<string> _ROListForReport;
|
||||
private bool _IncludeMissingROs = true;
|
||||
private bool _ConvertCaretToDelta = true;
|
||||
private bool _IncludeEmptyROFields = true;
|
||||
private string _PaperSize = "Letter";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
public string ReportTitle
|
||||
{
|
||||
get { return _ReportTitle; }
|
||||
set { _ReportTitle = value; }
|
||||
}
|
||||
public string ReportTitle { get; set; }
|
||||
|
||||
public string TypesSelected
|
||||
{
|
||||
get { return _TypesSelected; }
|
||||
set { _TypesSelected = value; }
|
||||
}
|
||||
public string TypesSelected { get; set; }
|
||||
|
||||
public ICollection<ItemInfo> MyItemInfoList
|
||||
{
|
||||
get { return _MyItemInfoList; }
|
||||
set { _MyItemInfoList = value; }
|
||||
}
|
||||
public ICollection<ItemInfo> MyItemInfoList { get; set; }
|
||||
|
||||
public bool SortUsageByProcedure
|
||||
{
|
||||
get { return _SortUsageByProcedure; }
|
||||
set { _SortUsageByProcedure = value; }
|
||||
}
|
||||
public bool SortUsageByProcedure { get; set; }
|
||||
|
||||
public string RODataFile
|
||||
{
|
||||
get { return _RODataFile; }
|
||||
set { _RODataFile = value; }
|
||||
}
|
||||
public string RODataFile { get; set; } = "";
|
||||
|
||||
public bool CompleteROReport
|
||||
{
|
||||
get { return _CompleteROReport; }
|
||||
set { _CompleteROReport = value; }
|
||||
}
|
||||
public bool CompleteROReport { get; set; } = true;
|
||||
|
||||
public ROFSTLookup RofstLookup
|
||||
{
|
||||
get { return _rofstLookup; }
|
||||
set { _rofstLookup = value; }
|
||||
}
|
||||
public ROFSTLookup RofstLookup { get; set; }
|
||||
|
||||
public List<string> ROListForReport
|
||||
{
|
||||
get { return _ROListForReport; }
|
||||
set { _ROListForReport = value; }
|
||||
}
|
||||
public List<string> ROListForReport { get; set; }
|
||||
|
||||
public bool IncludeMissingROs
|
||||
{
|
||||
get { return _IncludeMissingROs; }
|
||||
set { _IncludeMissingROs = value; }
|
||||
}
|
||||
public bool IncludeMissingROs { get; set; } = true;
|
||||
|
||||
public bool ConvertCaretToDelta
|
||||
{
|
||||
get { return _ConvertCaretToDelta; }
|
||||
set { _ConvertCaretToDelta = value; }
|
||||
}
|
||||
public bool ConvertCaretToDelta { get; set; } = true;
|
||||
|
||||
public bool IncludeEmptyROFields
|
||||
{
|
||||
get { return _IncludeEmptyROFields; }
|
||||
set { _IncludeEmptyROFields = value; }
|
||||
}
|
||||
public bool IncludeEmptyROFields { get; set; } = true;
|
||||
|
||||
public string PaperSize // C2020-002 paper size is now set in the format files
|
||||
{
|
||||
get { return _PaperSize; }
|
||||
set { _PaperSize = value; }
|
||||
}
|
||||
{ get; set; } = "Letter";
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1270,12 +1164,12 @@ namespace Volian.Controls.Library
|
||||
/// <param name="paperSize"></param>
|
||||
public DisplayReportsEventArgs(string reportTitle, string typesSelected, ICollection<ItemInfo> myItemInfoList, bool sortByProcedure, bool includeMissingROs, string paperSize)
|
||||
{
|
||||
_ReportTitle = reportTitle;
|
||||
_TypesSelected = typesSelected;
|
||||
_MyItemInfoList = myItemInfoList;
|
||||
_SortUsageByProcedure = sortByProcedure;
|
||||
_IncludeMissingROs = includeMissingROs;
|
||||
_PaperSize = paperSize; // C2020-002 paper size is now set in the format files
|
||||
ReportTitle = reportTitle;
|
||||
TypesSelected = typesSelected;
|
||||
MyItemInfoList = myItemInfoList;
|
||||
SortUsageByProcedure = sortByProcedure;
|
||||
IncludeMissingROs = includeMissingROs;
|
||||
PaperSize = paperSize; // C2020-002 paper size is now set in the format files
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1291,14 +1185,14 @@ namespace Volian.Controls.Library
|
||||
/// <param name="paperSize"></param>
|
||||
public DisplayReportsEventArgs(string reportTitle, string typesSelected, string roDataFile, ROFSTLookup rofstLookUp, bool completeROReport, bool convertCaretToDelta, bool includeEmptyROFields, string paperSize)
|
||||
{
|
||||
_ReportTitle = reportTitle;
|
||||
_TypesSelected = typesSelected;
|
||||
_RODataFile = roDataFile;
|
||||
_CompleteROReport = completeROReport;
|
||||
_ConvertCaretToDelta = convertCaretToDelta;
|
||||
_rofstLookup = rofstLookUp;
|
||||
_IncludeEmptyROFields = includeEmptyROFields;
|
||||
_PaperSize = paperSize; // C2020-002 paper size is now set in the format files
|
||||
ReportTitle = reportTitle;
|
||||
TypesSelected = typesSelected;
|
||||
RODataFile = roDataFile;
|
||||
CompleteROReport = completeROReport;
|
||||
ConvertCaretToDelta = convertCaretToDelta;
|
||||
RofstLookup = rofstLookUp;
|
||||
IncludeEmptyROFields = includeEmptyROFields;
|
||||
PaperSize = paperSize; // C2020-002 paper size is now set in the format files
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1311,11 +1205,11 @@ namespace Volian.Controls.Library
|
||||
/// <param name="paperSize"></param>
|
||||
public DisplayReportsEventArgs(string reportTitle, string typesSelected, ROFSTLookup rofstLookUp, List<string> roListForReport, string paperSize)
|
||||
{
|
||||
_ReportTitle = reportTitle;
|
||||
_TypesSelected = typesSelected;
|
||||
_rofstLookup = rofstLookUp;
|
||||
_ROListForReport = roListForReport;
|
||||
_PaperSize = paperSize; // C2020-002 paper size is now set in the format files
|
||||
ReportTitle = reportTitle;
|
||||
TypesSelected = typesSelected;
|
||||
RofstLookup = rofstLookUp;
|
||||
ROListForReport = roListForReport;
|
||||
PaperSize = paperSize; // C2020-002 paper size is now set in the format files
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1334,13 +1228,13 @@ namespace Volian.Controls.Library
|
||||
public List<string> GetList(string s1)
|
||||
{
|
||||
List<string> SB1 = new List<string>();
|
||||
string st1, st2, st3;
|
||||
string st1;
|
||||
st1 = "";
|
||||
bool flag = char.IsDigit(s1[0]);
|
||||
|
||||
foreach (char c in s1)
|
||||
{
|
||||
if (flag != char.IsDigit(c) || !(char.IsDigit(c) || char.IsLetter(c)))// || c == '\'')
|
||||
if (flag != char.IsDigit(c) || !(char.IsDigit(c) || char.IsLetter(c)))
|
||||
{
|
||||
if (st1 != "")
|
||||
SB1.Add(st1);
|
||||
@@ -1376,10 +1270,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
int len1 = s1.Length;
|
||||
int len2 = s2.Length;
|
||||
int marker1 = 0;
|
||||
int marker2 = 0;
|
||||
|
||||
// Walk through two the strings with two markers.
|
||||
List<string> str1 = GetList(s1);
|
||||
@@ -1395,18 +1285,16 @@ namespace Volian.Controls.Library
|
||||
str2.Add("");
|
||||
}
|
||||
}
|
||||
int x1 = 0; int res = 0; int x2 = 0; string y2 = "";
|
||||
bool status = false;
|
||||
string y1 = ""; bool s1Status = false; bool s2Status = false;
|
||||
//s1status ==false then string ele int;
|
||||
//s2status ==false then string ele int;
|
||||
int x1 = 0; int x2 = 0;
|
||||
bool s1Status; bool s2Status;
|
||||
//s1status ==false then string else int;
|
||||
//s2status ==false then string else int;
|
||||
int result = 0;
|
||||
for (int i = 0; i < str1.Count && i < str2.Count; i++)
|
||||
{
|
||||
status = int.TryParse(str1[i].ToString(), out res);
|
||||
_ = int.TryParse(str1[i].ToString(), out int res);
|
||||
if (res == 0)
|
||||
{
|
||||
y1 = str1[i].ToString();
|
||||
s1Status = false;
|
||||
}
|
||||
else
|
||||
@@ -1415,10 +1303,9 @@ namespace Volian.Controls.Library
|
||||
s1Status = true;
|
||||
}
|
||||
|
||||
status = int.TryParse(str2[i].ToString(), out res);
|
||||
_ = int.TryParse(str2[i].ToString(), out res);
|
||||
if (res == 0)
|
||||
{
|
||||
y2 = str2[i].ToString();
|
||||
s2Status = false;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -15,6 +15,8 @@ using System.Linq;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
#pragma warning disable IDE0044 // Add readonly modifier
|
||||
public partial class DisplaySearch : UserControl
|
||||
{
|
||||
#region Public Events/Handlers
|
||||
@@ -24,14 +26,12 @@ namespace Volian.Controls.Library
|
||||
|
||||
private void OnPrintRequest(DisplaySearchEventArgs args)
|
||||
{
|
||||
if (PrintRequest != null)
|
||||
PrintRequest(this, args);
|
||||
PrintRequest?.Invoke(this, args);
|
||||
}
|
||||
|
||||
private void OnSearchComplete(DisplaySearchEventArgs args)
|
||||
{
|
||||
if (SearchComplete != null)
|
||||
SearchComplete(this, args);
|
||||
SearchComplete?.Invoke(this, args);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -218,8 +218,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_TmrRefresh == null)
|
||||
{
|
||||
_TmrRefresh = new Timer();
|
||||
_TmrRefresh.Interval = 1000;
|
||||
_TmrRefresh = new Timer
|
||||
{
|
||||
Interval = 1000
|
||||
};
|
||||
_TmrRefresh.Tick += _TmrRefresh_Tick;
|
||||
}
|
||||
return _TmrRefresh;
|
||||
@@ -324,7 +326,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[2])
|
||||
{ // RO Search
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
ROFSTLookup.rochild ch;
|
||||
if (cmboTreeROs.SelectedNode != null)
|
||||
{
|
||||
@@ -336,18 +337,16 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rodbi)
|
||||
if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rodbi db)
|
||||
{
|
||||
ROFSTLookup.rodbi db = (ROFSTLookup.rodbi)cmboTreeROs.SelectedNode.Tag;
|
||||
return _MyRODbID.ToString() + ":" + string.Format("{0}", db.dbiID.ToString("X4"));
|
||||
return $"{_MyRODbID.ToString()}:{string.Format("{0}", db.dbiID.ToString("X4"))}";
|
||||
}
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild)
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild roch)
|
||||
{
|
||||
ch = (ROFSTLookup.rochild)cmboTreeROs.SelectedNode.Tag;
|
||||
chld = ch.children;
|
||||
ROFSTLookup.rochild[] chld = roch.children;
|
||||
// build a list of ROs to search
|
||||
// B2022-118: remove the ending comma otherwise query will fail
|
||||
string strRtnStr = _MyRODbID.ToString() + ":" + GetROsToSearch(chld);
|
||||
string strRtnStr = $"{_MyRODbID.ToString()}:{GetROsToSearch(chld)}";
|
||||
if (strRtnStr.EndsWith(","))
|
||||
strRtnStr = strRtnStr.Substring(0, strRtnStr.Length - 1);
|
||||
return strRtnStr;
|
||||
@@ -391,7 +390,6 @@ namespace Volian.Controls.Library
|
||||
cmbResultsStyle.Enabled = false;
|
||||
tabSearchTypes.SelectedTabChanged += new TabStrip.SelectedTabChangedEventHandler(tabSearchTypes_SelectedTabChanged);
|
||||
// Don't do this here. If you do then the /DB parameter has not yet been set, which will cause the database menu to be displayed
|
||||
//SetupContextMenu(); // so that the symbol list is available without selecting a procedure set or procedure
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -447,20 +445,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
btnSearch.Enabled = (cbxTranCategory.Items.Count > 0); // B2017-038 disable search button if no format selected
|
||||
//enable-disable doc version nodes based on version type if selected
|
||||
if (cbxTranVersion.SelectedIndex > -1)
|
||||
{
|
||||
if (dicExpandedFolderNodes.Count > 0)
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
{
|
||||
DocVersionInfo dvi = (DocVersionInfo)n.Tag;
|
||||
if (cbxTranVersion.Tag.ToString().Contains(dvi.VersionID.ToString()))
|
||||
n.Enabled = true;
|
||||
else
|
||||
n.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
//setup transition format versions
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
if (myFormatVersionList == null)
|
||||
@@ -468,15 +452,22 @@ namespace Volian.Controls.Library
|
||||
this.Refresh();
|
||||
myFormatVersionList = FormatVersionList.GetFormatVersions();
|
||||
cbxTranVersion.DisplayMember = "Title";
|
||||
int lastLastFormatID = 0;
|
||||
foreach (FormatVersion fv in myFormatVersionList)
|
||||
{
|
||||
if (fv.FormatID != lastLastFormatID)
|
||||
|
||||
List<FormatVersion> fvlst = myFormatVersionList.GroupBy(x => x.FormatID).Select(group => new
|
||||
FormatVersion(title: group.Max(x => x.Title),
|
||||
formatID: group.Key,
|
||||
versionID: group.Max(x => x.VersionID)
|
||||
)).OrderBy(y => y.Title).ToList();
|
||||
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Added an All option to allow resetting of the enabling/disabling tree options
|
||||
cbxTranVersion.Items.Add(new FormatVersion("All", -1, -1));
|
||||
|
||||
foreach (FormatVersion fv in fvlst)
|
||||
{
|
||||
cbxTranVersion.Items.Add(fv);
|
||||
lastLastFormatID = fv.FormatID;
|
||||
}
|
||||
}
|
||||
|
||||
cbxTranVersion.SelectedIndexChanged -= new EventHandler(cbxTranVersion_SelectedIndexChanged);
|
||||
cbxTranVersion.SelectedIndexChanged += new EventHandler(cbxTranVersion_SelectedIndexChanged);
|
||||
cbxTranFormat.SelectedIndexChanged -= new EventHandler(cbxTranFormat_SelectedIndexChanged);
|
||||
@@ -501,32 +492,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
public void cbxTranFormat_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
#region 1st cut
|
||||
//if (cbxTranFormat.SelectedItem.ToString() == "All")
|
||||
//{
|
||||
// cbxTranCategory.Items.Clear();
|
||||
// cbxTranCategory.Items.Add("All");
|
||||
// cbxTranCategory.Items.Add("Internal");
|
||||
// cbxTranCategory.Items.Add("External");
|
||||
// cbxTranCategory.Items.Add("Outside");
|
||||
// cbxTranCategory.SelectedIndex = 0;
|
||||
//}
|
||||
//else if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
|
||||
//{
|
||||
// cbxTranCategory.Items.Clear();
|
||||
// cbxTranCategory.Items.Add("All");
|
||||
// cbxTranCategory.Items.Add("External");
|
||||
// cbxTranCategory.Items.Add("Outside");
|
||||
// cbxTranCategory.SelectedIndex = 0;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// cbxTranCategory.Items.Clear();
|
||||
// cbxTranCategory.Items.Add("Internal");
|
||||
// cbxTranCategory.SelectedIndex = 0;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 2nd cut
|
||||
if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
|
||||
{
|
||||
@@ -556,41 +521,21 @@ namespace Volian.Controls.Library
|
||||
string versionList = string.Empty;
|
||||
string sep = string.Empty;
|
||||
FormatVersion sfv = cbxTranVersion.SelectedItem as FormatVersion;
|
||||
foreach (FormatVersion fv in myFormatVersionList)
|
||||
{
|
||||
if (fv.FormatID == sfv.FormatID)
|
||||
{
|
||||
versionList += sep + fv.VersionID;
|
||||
sep = ",";
|
||||
}
|
||||
}
|
||||
|
||||
versionList = string.Join(",", myFormatVersionList.Where(x => x.FormatID == sfv?.FormatID).Select(y => y.VersionID));
|
||||
|
||||
cbxTranVersion.Tag = versionList;
|
||||
cbxTranFormatFillIn(versionList);
|
||||
if (dicExpandedFolderNodes.Count > 0)
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
{
|
||||
FolderInfo fi = (FolderInfo)n.Tag;
|
||||
// if this folder has a docversion, use its id:
|
||||
string svid = null;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
svid = fi.FolderDocVersions[0].VersionID.ToString();
|
||||
if (cbxTranVersion.Tag.ToString().Contains(svid))
|
||||
n.Enabled = true;
|
||||
else
|
||||
n.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
List<DevComponents.AdvTree.Node> uncheckNodes = new List<Node>();
|
||||
List<DevComponents.AdvTree.Node> uncheckNodes = new List<DevComponents.AdvTree.Node>();
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedFolderNodes.Keys)
|
||||
{
|
||||
FolderInfo fi = (FolderInfo)n.Tag; // this was crashing in old version of code
|
||||
FolderInfo fi = n.Tag as FolderInfo; // this was crashing in old version of code
|
||||
// if this folder has a docversion, use its id:
|
||||
string svid = null;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
if (fi?.FolderDocVersionCount > 0)
|
||||
svid = fi.FolderDocVersions[0].VersionID.ToString();
|
||||
if (svid != null && !versionList.Contains(svid))
|
||||
if (svid != null && !string.IsNullOrEmpty(versionList) && !versionList.Split(',').Contains(svid))
|
||||
uncheckNodes.Add(n);
|
||||
else
|
||||
n.Enabled = true;
|
||||
@@ -616,13 +561,17 @@ namespace Volian.Controls.Library
|
||||
dicSelectedFolderNodes.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Update Enabling/Disabling of Tree Elements
|
||||
TraverseTree(advTreeProcSets.Nodes[0], cbxTranVersion.Tag?.ToString().Split(','));
|
||||
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2020-033: Update the search panel for Incoming transitions. This gets called from the tree view & the ribbon
|
||||
public void UpdateSearchIncTransResults()
|
||||
{
|
||||
//IncTransSelectedCount = 0;
|
||||
tabSearchTypes.SelectedTab = tabSearchTypes.Tabs[4];
|
||||
|
||||
lbSrchResultsIncTrans.DataSource = null;
|
||||
@@ -699,13 +648,6 @@ namespace Volian.Controls.Library
|
||||
DevComponents.AdvTree.Node newnode;
|
||||
advTreeStepTypes.Nodes.Clear();
|
||||
// Add a dummy node for searching Word Sections (MS Word sections)
|
||||
//newnode = new DevComponents.AdvTree.Node();
|
||||
//newnode.Text = "Word Sections";
|
||||
//newnode.Selectable = true;
|
||||
//newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
//newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
//newnode.CheckBoxThreeState = false;
|
||||
//newnode.CheckBoxVisible = true;
|
||||
newnode = NewAdvTreeNode("WORD Sections", true, true); // C2020-010: Change Accessory Sections to Word Sections
|
||||
wordSectionTreeNode = newnode;
|
||||
// C2021-028: RNO Only search, disable Word section tree node
|
||||
@@ -723,16 +665,6 @@ namespace Volian.Controls.Library
|
||||
StepData sd = sdl[sdr.Index]; // get the step type record
|
||||
string parentName = sd.ParentType; // this gets the parent of the this step/substep type
|
||||
|
||||
//Console.WriteLine("{0} {1} - {2}", parentName,sd.Type,sdr.Name);
|
||||
//newnode = new DevComponents.AdvTree.Node();
|
||||
//newnode.Text = sdr.Name;
|
||||
//newnode.Name = sd.Type; // this needed for the FindNodeByName() function
|
||||
//newnode.Tag = sd;
|
||||
//newnode.Selectable = true;
|
||||
//newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
//newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
//newnode.CheckBoxThreeState = false;
|
||||
//newnode.CheckBoxVisible = true;
|
||||
if (parentName.Equals("Base"))
|
||||
{
|
||||
newnode = NewAdvTreeNode(sdr.Name, true, true);
|
||||
@@ -826,8 +758,7 @@ namespace Volian.Controls.Library
|
||||
//C2023-010: Select all child nodes when a subtype is selected
|
||||
private void pnode_selected(object sender, EventArgs e)
|
||||
{
|
||||
DevComponents.AdvTree.Node pnode = sender as DevComponents.AdvTree.Node;
|
||||
if (pnode != null && pnode.HasChildNodes)
|
||||
if (sender is DevComponents.AdvTree.Node pnode && pnode.HasChildNodes)
|
||||
{
|
||||
CheckTreeNodeChildren(pnode.Nodes);
|
||||
}
|
||||
@@ -842,18 +773,21 @@ namespace Volian.Controls.Library
|
||||
int fiCount = fi.ChildFolderCount;
|
||||
advTreeProcSets.Nodes.Clear();
|
||||
lstCheckedDocVersions.Clear();
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = "Available Procedure Sets";
|
||||
topnode.Tag = fi;
|
||||
topnode.DataKey = fi.FolderID;
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = "Available Procedure Sets",
|
||||
Tag = fi,
|
||||
DataKey = fi.FolderID
|
||||
};
|
||||
advTreeProcSets.Nodes.Add(topnode);
|
||||
//advTreeProcSets.AfterNodeInsert += new TreeNodeCollectionEventHandler(advTreeProcSets_AfterNodeInsert);
|
||||
|
||||
//B2023-076: Adding option to select all procedure sets
|
||||
DevComponents.AdvTree.Node selectAllNode = new Node();
|
||||
selectAllNode.Text = SelectAllProcedureSetsText;
|
||||
selectAllNode.Tag = SelectAllProcedureSetsText;
|
||||
selectAllNode.CheckBoxVisible = true;
|
||||
DevComponents.AdvTree.Node selectAllNode = new Node
|
||||
{
|
||||
Text = SelectAllProcedureSetsText,
|
||||
Tag = SelectAllProcedureSetsText,
|
||||
CheckBoxVisible = true
|
||||
};
|
||||
selectAllNode.NodeClick += new EventHandler(AllProcedureSets_clicked);
|
||||
topnode.Nodes.Add(selectAllNode);
|
||||
|
||||
@@ -861,18 +795,22 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fic.ToString();
|
||||
newnode.Tag = fic;
|
||||
newnode.DataKey = fi.FolderID;
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fic.ToString(),
|
||||
Tag = fic,
|
||||
DataKey = fi.FolderID
|
||||
};
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
cntnd++;
|
||||
if (fic.ChildFolderCount > 0 || fic.FolderDocVersionCount > 0) // allow for '+' for tree expansion
|
||||
{
|
||||
if (fic.ChildFolderCount > 0) // B2017-176: Do not display the Working Draft node (don't create dummy for expander)
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = DummyNodeText;
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
newnode.Nodes.Add(tnt);
|
||||
}
|
||||
topnode.Nodes.Add(newnode);
|
||||
@@ -881,10 +819,12 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fi.ToString();
|
||||
newnode.Tag = fi;
|
||||
newnode.DataKey = fi.FolderID;
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fi.ToString(),
|
||||
Tag = fi,
|
||||
DataKey = fi.FolderID
|
||||
};
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
topnode.Nodes.Add(newnode);
|
||||
lstCheckedDocVersions.Add(Mydocversion);
|
||||
@@ -895,8 +835,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
cntnd++;
|
||||
fi = Mydocversion.MyFolder;
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = fi.ToString();
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fi.ToString()
|
||||
};
|
||||
advTreeProcSets.Nodes.Add(topnode);
|
||||
topnode.Tag = fi;
|
||||
topnode.DataKey = fi.FolderID;
|
||||
@@ -931,30 +873,35 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fic.ToString();
|
||||
newnode.Tag = fic;
|
||||
newnode.DataKey = fic.FolderID;
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fic.ToString(),
|
||||
Tag = fic,
|
||||
DataKey = fic.FolderID
|
||||
};
|
||||
par.Nodes.Add(newnode);
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
newnode.Enabled = true;
|
||||
|
||||
if (fic.ChildFolderCount > 0) // B2017-176: Only expand if folder has folders (not working draft nodes)
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = DummyNodeText;
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
newnode.Nodes.Add(tnt);
|
||||
// B2017-176: Only expand if folder has folders (not working draft nodes): the following was moved from the code
|
||||
// that would check if this should be enabled if seraching for transition types. The transition controls
|
||||
// had a list of associated docversions, so needed to get the docversion in the folder:
|
||||
if (tabSearchTypes.SelectedTab == tabTranSearch && !dicSelectedFolderNodes.ContainsKey(newnode))
|
||||
dicSelectedFolderNodes.Add(newnode, false);
|
||||
}
|
||||
|
||||
if (tabSearchTypes.SelectedTab == tabTranSearch)
|
||||
{
|
||||
if (!dicSelectedFolderNodes.ContainsKey(newnode)) dicSelectedFolderNodes.Add(newnode, false);
|
||||
// get the docversion for this folder, if it has one and determine whether it is enabled for transitions:
|
||||
string svid = null;
|
||||
if (fic.FolderDocVersionCount > 0)
|
||||
svid = fic.FolderDocVersions[0].VersionID.ToString();
|
||||
newnode.Enabled = svid != null && cbxTranVersion.Tag != null ? cbxTranVersion.Tag.ToString().Contains(svid) : false;
|
||||
}
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Update Enabling/Disabling of Tree Elements
|
||||
TraverseTree(advTreeProcSets.Nodes[0], cbxTranVersion.Tag?.ToString().Split(','));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -964,10 +911,10 @@ namespace Volian.Controls.Library
|
||||
public void AdvTree_AfterExpandorCollapse(object sender, AdvTreeNodeEventArgs e)
|
||||
{
|
||||
Node bottomNode = BottomTreeNode(cmboTreeROs.AdvTree.Nodes);
|
||||
Node lastNode = cmboTreeROs.AdvTree.Nodes[cmboTreeROs.AdvTree.Nodes.Count - 1];
|
||||
_ = cmboTreeROs.AdvTree.Nodes[cmboTreeROs.AdvTree.Nodes.Count - 1]; //LastNode
|
||||
|
||||
int top = cmboTreeROs.AdvTree.Nodes[0].Bounds.Top;
|
||||
int bottom = bottomNode.Bounds.Bottom + 5;
|
||||
int bottom;
|
||||
int hScrollBarHeight = cmboTreeROs.AdvTree.HScrollBar != null ? cmboTreeROs.AdvTree.HScrollBar.Height : 0;
|
||||
bottom = bottomNode.Bounds.Bottom + 5;
|
||||
cmboTreeROs.AdvTree.Size = new Size(cmboTreeROs.AdvTree.Size.Width, Math.Min(525, bottom - top + hScrollBarHeight));
|
||||
@@ -976,10 +923,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
int yLookFor = (bottom - cmboTreeROs.AdvTree.Size.Height) + 2 * hScrollBarHeight;
|
||||
Node topNode = FindTreeNodeAt(cmboTreeROs.AdvTree.Nodes, yLookFor);
|
||||
if (topNode != null)
|
||||
{
|
||||
topNode.EnsureVisible();
|
||||
}
|
||||
topNode?.EnsureVisible();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -990,8 +934,10 @@ namespace Volian.Controls.Library
|
||||
public void SetupAnnotationSearch(AnnotationDetails annotationDetails, DisplayTabControl tc)
|
||||
{
|
||||
_AnnotationDetails = annotationDetails;
|
||||
List<AnnotationTypeSearch> annoTypes = new List<AnnotationTypeSearch>();
|
||||
annoTypes.Add(new AnnotationTypeSearch("All Annotations", string.Empty));
|
||||
List<AnnotationTypeSearch> annoTypes = new List<AnnotationTypeSearch>
|
||||
{
|
||||
new AnnotationTypeSearch("All Annotations", string.Empty)
|
||||
};
|
||||
AnnotationTypeInfoList annoList = AnnotationTypeInfoList.Get();
|
||||
foreach (AnnotationTypeInfo ati in annoList)
|
||||
annoTypes.Add(new AnnotationTypeSearch(ati.Name, ati.TypeID.ToString()));
|
||||
@@ -1058,14 +1004,15 @@ namespace Volian.Controls.Library
|
||||
|
||||
foreach (Symbol sym in sl)
|
||||
{
|
||||
DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem();
|
||||
|
||||
btnCM.Text = string.Format("{0}", (char)sym.Unicode);
|
||||
DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem
|
||||
{
|
||||
Text = string.Format("{0}", (char)sym.Unicode),
|
||||
// to name button use unicode rather than desc, desc may have spaces or odd chars
|
||||
btnCM.Name = "btnCM" + sym.Unicode.ToString();
|
||||
btnCM.Tooltip = sym.Desc;
|
||||
btnCM.Tag = string.Format(@"{0}", sym.Unicode);
|
||||
btnCM.FontBold = true;
|
||||
Name = $"btnCM{sym.Unicode.ToString()}",
|
||||
Tooltip = sym.Desc,
|
||||
Tag = string.Format(@"{0}", sym.Unicode),
|
||||
FontBold = true
|
||||
};
|
||||
btnCM.Click += new System.EventHandler(btnSym_Click);
|
||||
galSymbols.SubItems.Add(btnCM);
|
||||
}
|
||||
@@ -1114,9 +1061,11 @@ namespace Volian.Controls.Library
|
||||
private DevComponents.AdvTree.Node NewAdvTreeNode(string nodetext, bool selectable, bool chxbxvisable)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode;
|
||||
newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = nodetext;
|
||||
newnode.Selectable = selectable;
|
||||
newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = nodetext,
|
||||
Selectable = selectable
|
||||
};
|
||||
AddCheckBox(chxbxvisable, newnode);//C2016-045 Allow Folders to be selected.
|
||||
return newnode;
|
||||
}
|
||||
@@ -1163,7 +1112,7 @@ namespace Volian.Controls.Library
|
||||
// folder properties dialog
|
||||
bool allowNonAdmin = IncTranCvtPerm();
|
||||
List<int> itmsEditable = new List<int>(); // return this list
|
||||
int listCount = 0;
|
||||
int listCount;
|
||||
if (all) // Check all in list
|
||||
{
|
||||
listCount = _SearchResults.Count;
|
||||
@@ -1187,14 +1136,13 @@ namespace Volian.Controls.Library
|
||||
// not all can be converted to text. If count of itmsEditable & lbis are different some cannot be edited.
|
||||
if (itmsEditable.Count == 0)
|
||||
{
|
||||
FlexibleMessageBox.Show("You do not have permission to edit any of the procedures, sections, and/or steps" + (all ? "." : " that are selected."),
|
||||
FlexibleMessageBox.Show($"You do not have permission to edit any of the procedures, sections, and/or steps{(all ? "." : " that are selected.")}",
|
||||
"Convert Transition to Text", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return null;
|
||||
}
|
||||
else if (itmsEditable.Count != listCount)
|
||||
{
|
||||
DialogResult ans = FlexibleMessageBox.Show("You only have permission to edit some of the procedures, sections, and/or steps that are selected.procedures, sections, and/or steps" + (all ? "." : " that are selected.") +
|
||||
"\r\n\r\n Should the conversion of the transitions to text continue?",
|
||||
DialogResult ans = FlexibleMessageBox.Show($"You only have permission to edit some of the procedures, sections, and/or steps that are selected.procedures, sections, and/or steps{(all ? "." : " that are selected.")}\r\n\r\n Should the conversion of the transitions to text continue?",
|
||||
"Convert Transition to Text", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (ans == DialogResult.No) return null;
|
||||
}
|
||||
@@ -1215,7 +1163,7 @@ namespace Volian.Controls.Library
|
||||
private void btnTranCvtSelToTxt_Click(object sender, EventArgs e)
|
||||
{
|
||||
// First see if all selected can be converted, i.e. user has permission to edit
|
||||
List<ListBoxItem> lbis = lbSrchResultsIncTrans.CheckedItems;
|
||||
_ = lbSrchResultsIncTrans.CheckedItems;
|
||||
List<int> itmsEditable = TranCvtCheckPermission(false);
|
||||
if (itmsEditable == null || itmsEditable.Count == 0) return;
|
||||
TranCvtToTxt(itmsEditable);
|
||||
@@ -1448,8 +1396,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ROFSTLookup.rodbi db = dbs[i];
|
||||
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node(db.dbiTitle);
|
||||
tn.Tag = db;
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node(db.dbiTitle)
|
||||
{
|
||||
Tag = db
|
||||
};
|
||||
cmboTreeROs.Nodes.Add(tn);
|
||||
|
||||
AddDummyGroup(db, tn);
|
||||
@@ -1502,17 +1452,14 @@ namespace Volian.Controls.Library
|
||||
if (tn.HasChildNodes && tn.Nodes[0].Text != DummyNodeText) return; // already loaded.
|
||||
if (tn.HasChildNodes && tn.Nodes[0].Text == DummyNodeText) tn.Nodes[0].Remove();
|
||||
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
|
||||
if (tn.Tag is ROFSTLookup.rodbi)
|
||||
ROFSTLookup.rochild[] chld;
|
||||
if (tn.Tag is ROFSTLookup.rodbi db)
|
||||
{
|
||||
ROFSTLookup.rodbi db = (ROFSTLookup.rodbi)tn.Tag;
|
||||
MyROFSTLookup.LoadChildren(ref db);
|
||||
chld = db.children;
|
||||
}
|
||||
else if (tn.Tag is ROFSTLookup.rochild)
|
||||
else if (tn.Tag is ROFSTLookup.rochild ch)
|
||||
{
|
||||
ROFSTLookup.rochild ch = (ROFSTLookup.rochild)tn.Tag;
|
||||
MyROFSTLookup.LoadChildren(ref ch);
|
||||
chld = ch.children;
|
||||
}
|
||||
@@ -1531,8 +1478,6 @@ namespace Volian.Controls.Library
|
||||
for (int i = 0; i < chld.Length; i++)
|
||||
{
|
||||
ProgressBar_SetValue(i);
|
||||
DevComponents.AdvTree.Node tmp = null;
|
||||
|
||||
ROFSTLookup.rochild roc = chld[i];
|
||||
|
||||
// if this is a group, i.e. type 0, add a dummy node
|
||||
@@ -1556,10 +1501,13 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
|
||||
Node tmp;
|
||||
if (roc.value == null)
|
||||
{
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title);
|
||||
tmp.Tag = roc;
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title)
|
||||
{
|
||||
Tag = roc
|
||||
};
|
||||
|
||||
int index = FindIndex(tn.Nodes, tmp.Text);
|
||||
tn.Nodes.Insert(index, tmp);
|
||||
@@ -1569,8 +1517,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title);
|
||||
tmp.Tag = roc;
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title)
|
||||
{
|
||||
Tag = roc
|
||||
};
|
||||
|
||||
if (roc.roid.Length == 16)
|
||||
{
|
||||
@@ -1610,9 +1560,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
cbxFndUnLnkROVals.Enabled = false;
|
||||
}
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild)
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild ro)
|
||||
{
|
||||
ROFSTLookup.rochild ro = (ROFSTLookup.rochild)cmboTreeROs.SelectedNode.Tag;
|
||||
// B2022-026 RO Memory Reduction code - check children length
|
||||
cbxFndUnLnkROVals.Enabled = (ro.children == null || ro.children.Length <= 0);
|
||||
}
|
||||
@@ -1634,12 +1583,7 @@ namespace Volian.Controls.Library
|
||||
bool keeplooking = true;
|
||||
//build a stack (bread crumb trail) of where is procedure set came from within the tree.
|
||||
Stack<string> crumbs = new Stack<string>();
|
||||
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
|
||||
//crumbs.Push(Mydocversion.MyFolder.Name); // ex: "Emergency Procedures"
|
||||
//crumbs.Push(Mydocversion.MyFolder.MyParent.Name); // ex: "STPNOC-South Texas"
|
||||
//crumbs.Push(advTreeProcSets.Nodes[0].Text); //top node of my tree
|
||||
|
||||
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
|
||||
crumbs.Push(Mydocversion.MyFolder.Name); // ex: "Emergency Procedures"
|
||||
FolderInfo fi = Mydocversion.MyFolder.MyParent;
|
||||
while (fi != null)
|
||||
@@ -1824,13 +1768,11 @@ namespace Volian.Controls.Library
|
||||
// item to be clicked and to turn on/off the btnTranCvtSelToTxt button for converting selected to test.
|
||||
private void lbSrchResultsIncTrans_ItemClicked(object sender, EventArgs e)
|
||||
{
|
||||
ListBoxItem lbi = sender as ListBoxItem;
|
||||
if (lbi != null)
|
||||
if (sender is ListBoxItem lbi)
|
||||
{
|
||||
ItemBindingData ibd = lbi.Tag as ItemBindingData;
|
||||
ItemInfo ii = ibd.DataItem as ItemInfo;
|
||||
bool allowNonAdmin = IncTranCvtPerm();
|
||||
if (lbi.CheckState == CheckState.Checked && ii != null)
|
||||
if (lbi.CheckState == CheckState.Checked && ibd.DataItem is ItemInfo ii)
|
||||
{
|
||||
if (!allowNonAdmin && !UserInfo.CanEdit(MyUserInfo, ii.MyDocVersion))
|
||||
{
|
||||
@@ -2041,11 +1983,8 @@ namespace Volian.Controls.Library
|
||||
bool includeSpecialChars = (TextSearchString != @"\?"); // true;
|
||||
// Build list of selected types that were searched
|
||||
string typstr = null;
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : typstr + ", " + s;
|
||||
TypesSelected = "Filtered By: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
//TypesSelected = "Step Types Searched: " + ((typstr != null) ? typstr : "all step types");
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "all step types");
|
||||
//TypesSelected = (typstr != null) ? "Searched Step Types: " + typstr : "Searched All Step Types";
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : $"{typstr}, {s}";
|
||||
TypesSelected = $"Filtered By: {typstr ?? "All Step Types"}";
|
||||
string unitPrefix = string.Empty;
|
||||
if (Mydocversion != null)
|
||||
unitPrefix = Mydocversion.DocVersionConfig.Unit_ProcedureNumber;
|
||||
@@ -2065,11 +2004,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
//string typstr = null;
|
||||
//foreach (string s in lstCheckedStepTypesStr) typstr = typstr==null?s:typstr + ", " + s;
|
||||
//ReportTitle = "Search for Selected Types"; //"Proms - Search by Type: " + typstr;
|
||||
ReportTitle = "Step Element Report"; //"Proms - Search by Type: " + typstr;
|
||||
TypesSelected = "Filtered By: " + typstr;
|
||||
TypesSelected = $"Filtered By: {typstr}";
|
||||
SearchString = null;
|
||||
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, string.Empty, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, ItemSearchIncludeLinks.Value, includeRTFformat, includeSpecialChars, unitPrefix, string.Empty, string.Empty);
|
||||
@@ -2078,14 +2014,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
//if (textSearchString.Equals(string.Empty))
|
||||
//{
|
||||
// MessageBox.Show("Please enter some search text, then click the Search button", "No Search Text");
|
||||
// cbxTextSearchText.Focus();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
//ReportTitle = string.Format("Proms - {0} Search for '{1}'", cbxBooleanTxtSrch.Checked ? "Boolean" : "Text", TextSearchString);
|
||||
ReportTitle = string.Format("Search for '{0}'", TextSearchString);
|
||||
|
||||
// C2020-009: Search - Allow search 'By Word'.
|
||||
@@ -2116,8 +2044,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
SearchString = TextSearchString;
|
||||
//TypesSelected = (typstr != null) ? "Searched Step Types: " + typstr : "Searched All Step Types";
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, TextSearchString /*.Replace(@"\",@"\u9586?")*/, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, cbxIncROTextSrch.Checked ? ItemSearchIncludeLinks.Value : ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, byWordPrefix, byWordSuffix);
|
||||
|
||||
@@ -2131,7 +2057,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
LastSearchWasAnnotations = true; // B2019-119 only refresh annotation search results if an annotation search was done
|
||||
SearchString = null;
|
||||
//ReportTitle = string.Format("Proms - Annotation Search for '{0}'", cbxTextSearchAnnotation.Text);
|
||||
if (cbxTextSearchAnnotation.Text == null || cbxTextSearchAnnotation.Text == string.Empty)
|
||||
{
|
||||
ReportTitle = string.Format("Find {0}{1}", cbxAnnoTypes.Text, (cbxAnnoTypes.SelectedIndex > 0) ? " Annotations" : string.Empty);
|
||||
@@ -2140,14 +2065,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ReportTitle = string.Format("Search {0}{1} For '{2}'", cbxAnnoTypes.Text, (cbxAnnoTypes.SelectedIndex > 0) ? " Annotations" : string.Empty, cbxTextSearchAnnotation.Text);
|
||||
}
|
||||
//ReportTitle = string.Format("Search Annotations for '{0}'", cbxTextSearchAnnotation.Text);
|
||||
//string srchStr = ConvertSpecialChars(cbxTextSearchAnnotation.Text);//cbxTextSearchAnnotation.Text;
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
|
||||
//SearchResults = ItemInfoList.GetListFromAnnotationSearch(dviSearchList, typeSearchList, textSearchString, srchStr, cbxCaseSensitiveAnnoText.Checked);
|
||||
|
||||
SearchResults = ItemInfoList.GetListFromAnnotationSearch(DVISearchList, TypeSearchList, AnnotationSearchType, cbxTextSearchAnnotation.Text, cbxCaseSensitiveAnnoText.Checked, unitPrefix);
|
||||
//UpdateAnnotationSearchResults();
|
||||
cmbResultsStyleIndex = 2; // display annotation text in results
|
||||
// C2019-001: Search in RNO steps only
|
||||
if (cbxRnoOnlyAnnot.Checked) GetInRNOResults();
|
||||
@@ -2155,9 +2074,7 @@ namespace Volian.Controls.Library
|
||||
else if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[2]) // RO Search
|
||||
{
|
||||
SearchString = null;
|
||||
//ReportTitle = "Proms - Referenced Object Search";
|
||||
ReportTitle = string.Format("Search For Referenced Object:\n{0}", cmboTreeROs.Text);
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
|
||||
if (cbxFndUnLnkROVals.Enabled && cbxFndUnLnkROVals.Checked)
|
||||
{
|
||||
@@ -2177,22 +2094,37 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ReportTitle = string.Format("Search For Transitions: Transition Type: {0}, Transition Category: {1}", cbxTranFormat.SelectedItem, cbxTranCategory.SelectedItem);
|
||||
string docVersionList = string.Empty;
|
||||
bool bypassSearch = false;
|
||||
if (lstCheckedDocVersions.Count == 0)
|
||||
docVersionList = cbxTranVersion.Tag.ToString();
|
||||
else
|
||||
{
|
||||
string sep = string.Empty;
|
||||
foreach (DocVersionInfo dvi in lstCheckedDocVersions)
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Changed matching to take Filtered Formats into account if both tree
|
||||
//Items selected and Format dropdown filtered
|
||||
if (string.IsNullOrEmpty(cbxTranVersion.Tag?.ToString()))
|
||||
{
|
||||
docVersionList += sep + dvi.VersionID.ToString();
|
||||
sep = ",";
|
||||
docVersionList = string.Join(",", lstCheckedDocVersions.Select(y => y.VersionID.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
var fromatversionslst = cbxTranVersion.Tag.ToString().Split(',').Select(int.Parse);
|
||||
var selectedversionlst = lstCheckedDocVersions.Select(y => y.VersionID);
|
||||
docVersionList = string.Join(",", fromatversionslst.Intersect(selectedversionlst));
|
||||
|
||||
if (string.IsNullOrEmpty(docVersionList))
|
||||
{
|
||||
bypassSearch = true;
|
||||
FlexibleMessageBox.Show("No Matches Found.", "Search");
|
||||
}
|
||||
}
|
||||
}
|
||||
// B2018-134 to search specifically for Outside Transitions, set docVeronList to empty string so that all procedure sets are considered
|
||||
if (cbxTranCategory.SelectedItem.ToString() == "Outside")
|
||||
if (cbxTranCategory.SelectedItem?.ToString() == "Outside")
|
||||
docVersionList = string.Empty;
|
||||
// added TypeSearchList for bug fix B2015-055
|
||||
SearchResults = ItemInfoList.GetListFromTransitionSearch(docVersionList, cbxTranFormat.SelectedIndex - 1, cbxTranCategory.SelectedItem.ToString() == "All" ? string.Empty : cbxTranCategory.SelectedItem.ToString(), TypeSearchList);
|
||||
if (cbxTranFormat.SelectedIndex == -1) cbxTranFormatFillIn(docVersionList);
|
||||
if (!bypassSearch) SearchResults = ItemInfoList.GetListFromTransitionSearch(docVersionList, cbxTranFormat.SelectedIndex - 1, cbxTranCategory.SelectedItem?.ToString() == "All" ? string.Empty : (cbxTranCategory.SelectedItem?.ToString() ?? string.Empty), TypeSearchList);
|
||||
cmbResultsStyleIndex = 3; // display step text in results
|
||||
// C2019-001: Search in RNO steps only
|
||||
if (cbxRnoOnlyTrans.Checked) GetInRNOResults();
|
||||
@@ -2249,16 +2181,13 @@ namespace Volian.Controls.Library
|
||||
string tmpmsg = (cbxBooleanTxtSrch.Checked && ex.Message.Contains("Syntax error") && ex.Message.Contains("full-text search")) ?
|
||||
"Place \"\" around words that you are searching for, so that parser can better understand what you are trying to find" :
|
||||
ex.Message;
|
||||
FlexibleMessageBox.Show(tmpmsg, "Search Error: " + ex.GetType().Name);
|
||||
FlexibleMessageBox.Show(tmpmsg, $"Search Error: {ex.GetType().Name}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
Cursor = savcursor;
|
||||
}
|
||||
//Console.WriteLine("{0} Milliseconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalMilliseconds);
|
||||
OnSearchComplete(new DisplaySearchEventArgs(TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks)));
|
||||
//if (VlnSettings.DebugMode)
|
||||
// MessageBox.Show(string.Format("{0} Milliseconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalMilliseconds));
|
||||
}
|
||||
|
||||
private void ClearResults() // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click)
|
||||
@@ -2319,7 +2248,7 @@ namespace Volian.Controls.Library
|
||||
if (ii.SearchAnnotationText == null) ii.SearchAnnotationText = AnnotationInfo.Get(ii.ItemAnnotations[0].AnnotationID).SearchText;
|
||||
}
|
||||
|
||||
if (ii.SearchAnnotationText == null) ii.SearchAnnotationText = "None - [" + ii.DisplayText + "]";
|
||||
if (ii.SearchAnnotationText == null) ii.SearchAnnotationText = $"None - [{ii.DisplayText}]";
|
||||
else
|
||||
{
|
||||
hasAnnot = true;
|
||||
@@ -2469,7 +2398,7 @@ namespace Volian.Controls.Library
|
||||
//C2025-005 Find Step Elements
|
||||
//Need to refresh the Doc List and Available Step Types
|
||||
//if All Procedure Sets was selected
|
||||
if (n.Tag == SelectAllProcedureSetsText)
|
||||
if (n.Tag is string txt && txt == SelectAllProcedureSetsText)
|
||||
{
|
||||
if (n.Checked)
|
||||
{
|
||||
@@ -2520,7 +2449,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (tn.Checked)
|
||||
{
|
||||
//tn.Style = DevComponents.AdvTree.NodeStyles.Apple; // sets green background on selected folder(s)
|
||||
//B2023-112: Don't crash if on top 'All' node (did not have associated folder)
|
||||
FolderInfo fi = tn.Tag as FolderInfo;
|
||||
// if this folder has a docversion, use its id:
|
||||
@@ -2567,8 +2495,10 @@ namespace Volian.Controls.Library
|
||||
lstCheckedStepTypesStr.Clear();
|
||||
foreach (string str in strs)
|
||||
{
|
||||
Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = str;
|
||||
Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = str
|
||||
};
|
||||
advTreeStepTypes.Nodes.Add(newnode);
|
||||
}
|
||||
buildStepTypePannelTitle();
|
||||
@@ -2657,16 +2587,23 @@ namespace Volian.Controls.Library
|
||||
private void cbxTranFormatFillIn(string vid)
|
||||
{
|
||||
vid = vid.IndexOf(",") < 0 ? vid : vid.Substring(0, cbxTranVersion.Tag.ToString().IndexOf(","));
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Change the order of items happening
|
||||
//previous order was causing an error when clicked downdownlist to
|
||||
//show all items and then didn't select an item in the list
|
||||
cbxTranFormat.Items.Clear();
|
||||
cbxTranFormat.Items.Add("All");
|
||||
|
||||
if (!string.IsNullOrEmpty(vid))
|
||||
{
|
||||
DocVersionInfo dvi = DocVersionInfo.Get(int.Parse(vid));
|
||||
TransTypeList ttl = dvi.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList;
|
||||
|
||||
cbxTranFormat.Items.Clear();
|
||||
cbxTranFormat.Items.Add("All");
|
||||
|
||||
for (int i = 0; i < ttl.MaxIndex; i++)
|
||||
{
|
||||
cbxTranFormat.Items.Add(new TransItem(ttl[i].TransMenu.Replace("?.", string.Empty), ttl[i].TransFormat.Replace("?.", string.Empty)));
|
||||
}
|
||||
}
|
||||
|
||||
cbxTranFormat.SelectedIndex = 0;
|
||||
@@ -2717,9 +2654,9 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (advTreeStepTypes.Nodes.Count == 1 && n.Checked)
|
||||
{
|
||||
if (n.Tag is DocVersionInfo) // Only set MyDocVersion if it is a DocVersion
|
||||
if (n.Tag is DocVersionInfo info) // Only set MyDocVersion if it is a DocVersion
|
||||
{
|
||||
Mydocversion = (DocVersionInfo)n.Tag;
|
||||
Mydocversion = info;
|
||||
StartAdvTreeStepTypesFillIn();// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
|
||||
}
|
||||
}
|
||||
@@ -2744,8 +2681,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (n.Checked)
|
||||
{
|
||||
//n.Style = DevComponents.AdvTree.NodeStyles.Apple; // B2023-112: coloring of proc set tree nodes was not working correctly
|
||||
|
||||
if (sd == null)
|
||||
{
|
||||
//C2023-010: Since the tag is null for Word Sections and HLS types, we need to determine which one has been selected. Word sections we need
|
||||
@@ -2874,7 +2809,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
xpStepTypes.TitleStyle.BackColor1.Color = saveXpStepTypeTitleColor;
|
||||
}
|
||||
else //lstCheckedStepTypes.Count > 0
|
||||
else
|
||||
{
|
||||
// show how many selected whether panel is expanded or not
|
||||
xpStepTypes.TitleText = string.Format("{0} Step Element{1} Selected", lstCheckedStepTypes.Count, (lstCheckedStepTypes.Count > 1) ? "s" : string.Empty); // B2018-132 changed second {0} to {1}
|
||||
@@ -2946,7 +2881,6 @@ namespace Volian.Controls.Library
|
||||
private bool OnlyWordSectTypeSel()
|
||||
{
|
||||
// B2021-100: Enable/disable the RNO Only checkbox & WORD Sections tree node in Step Elements to Search.
|
||||
// lstCheckedStepTypes[x] = 0 for Word sections:
|
||||
if (lstCheckedStepTypes != null && lstCheckedStepTypes.Count == 1 && lstCheckedStepTypes[0] == 0)
|
||||
return true;
|
||||
|
||||
@@ -3145,11 +3079,6 @@ namespace Volian.Controls.Library
|
||||
lbSrchResults.DataSource = null;
|
||||
lbSrchResults.Items.Clear();
|
||||
toolTip1.SetToolTip(lbSrchResults, null);
|
||||
string unitPrefix = string.Empty;
|
||||
if (Mydocversion != null)
|
||||
unitPrefix = Mydocversion.DocVersionConfig.Unit_ProcedureNumber;
|
||||
if (unitPrefix.EndsWith("#"))
|
||||
unitPrefix = unitPrefix.Replace("#", string.Empty);
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
try // B2021-045: don't crash if xml file cannot be loaded.
|
||||
@@ -3179,7 +3108,7 @@ namespace Volian.Controls.Library
|
||||
Node tnode = advTreeProcSets.FindNodeByDataKey(folderID);
|
||||
if (tnode != null) tnode.Checked = true;
|
||||
}
|
||||
Mydocversion = tmpdvi == null ? fromLoadFiledvi : tmpdvi;
|
||||
Mydocversion = tmpdvi ?? fromLoadFiledvi;
|
||||
}
|
||||
|
||||
AdvTreeStepTypesFillIn();
|
||||
@@ -3202,10 +3131,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
string typstr = null;
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : typstr + ", " + s;
|
||||
TypesSelected = "Filtered By: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : $"{typstr}, {s}";
|
||||
TypesSelected = $"Filtered By: {typstr ?? "All Step Types"}";
|
||||
ReportTitle = "Step Element Report"; //"Proms - Search by Type: " + typstr;
|
||||
TypesSelected = "Filtered By: " + typstr;
|
||||
TypesSelected = $"Filtered By: {typstr}";
|
||||
advTreeStepTypes.RefreshItems();
|
||||
buildStepTypePannelTitle();
|
||||
}
|
||||
@@ -3298,7 +3227,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
FlexibleMessageBox.Show("An error occurred while reading the xml file.\r\n\r\nThis can happen when the file selected for the Load is not saved\r\n" +
|
||||
"from a PROMS Search or if some of the steps no longer exist.", "Search Load Failed", MessageBoxButtons.OK);
|
||||
@@ -3478,6 +3407,46 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Update Enabling/Disabling of Tree Elements
|
||||
public bool TraverseTree(DevComponents.AdvTree.Node node, string[] versions)
|
||||
{
|
||||
bool result = true;
|
||||
int numhiddenchildnodes = 0;
|
||||
|
||||
// Recursively call this method for each child node
|
||||
foreach (DevComponents.AdvTree.Node childNode in node.Nodes)
|
||||
{
|
||||
if (!TraverseTree(childNode, versions))
|
||||
{
|
||||
numhiddenchildnodes++;
|
||||
}
|
||||
}
|
||||
|
||||
// Process the current node (e.g., enable it if it is contained)
|
||||
|
||||
//Select all always shows
|
||||
//also Enable Dummy Nodes by default
|
||||
if (versions == null || (versions.Length == 1 && string.IsNullOrEmpty(versions[0])) || node.Tag == null || (node.Tag is string txt && txt == SelectAllProcedureSetsText))
|
||||
{
|
||||
node.Enabled = true;
|
||||
return true;
|
||||
}
|
||||
//if all child nodes are hidden, hide the parent
|
||||
else if (numhiddenchildnodes == node.Nodes.Count)
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
|
||||
FolderInfo fi = (FolderInfo)node.Tag;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
{
|
||||
result = versions.Contains(fi.FolderDocVersions[0].VersionID.ToString());
|
||||
}
|
||||
|
||||
node.Enabled = result;
|
||||
return result;
|
||||
}
|
||||
private void btnCopySearchResults_Click(object sender, EventArgs e)
|
||||
{
|
||||
ICollection<ItemInfo> myList = lbSrchResults.DataSource as ICollection<ItemInfo>;
|
||||
@@ -3543,7 +3512,6 @@ namespace Volian.Controls.Library
|
||||
private bool IncTransCvtAllToTextPerm()
|
||||
{
|
||||
if (_SearchResults == null) return false;
|
||||
int cnt = 0;
|
||||
bool allowNonAdmin = IncTranCvtPerm();
|
||||
foreach (ItemInfo ii in _SearchResults)
|
||||
{
|
||||
@@ -3659,6 +3627,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
#pragma warning restore IDE0044 // Add readonly modifier
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Controls.Library;
|
||||
using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using Volian.Base.Library;
|
||||
@@ -59,13 +56,7 @@ namespace Volian.Controls.Library
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
#endregion
|
||||
|
||||
private static bool _SyncronizeEnahnced = false;
|
||||
public static bool SyncronizeEnhanced
|
||||
{
|
||||
get { return DisplayTabControl._SyncronizeEnahnced; }
|
||||
set { DisplayTabControl._SyncronizeEnahnced = value; }
|
||||
}
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private static Dictionary<int, DisplayTabControl> _AllDTCs = new Dictionary<int, DisplayTabControl>();
|
||||
private int _VersionID = 0;
|
||||
// zero tells us to PROMS just opened and no procedure was selected yet so use the main proms window
|
||||
@@ -75,11 +66,11 @@ namespace Volian.Controls.Library
|
||||
get { return _VersionID; }
|
||||
set
|
||||
{
|
||||
if ((int)value != 0)
|
||||
if (value != 0)
|
||||
{
|
||||
if (!_AllDTCs.ContainsKey((int)value))
|
||||
{
|
||||
_AllDTCs.Add((int)value, this);
|
||||
_AllDTCs.Add(value, this);
|
||||
if (_VersionID == 0)
|
||||
_VersionID = value;
|
||||
else
|
||||
@@ -145,17 +136,10 @@ namespace Volian.Controls.Library
|
||||
return (verIdList.Count > 1);
|
||||
}
|
||||
}
|
||||
//public event ItemSelectedChangedEvent OpenEnhancedDocument;
|
||||
//public void OnOpenEnhancedDocument(ItemSelectedChangedEventArgs args)
|
||||
//{
|
||||
// if (OpenEnhancedDocument != null)
|
||||
// OpenEnhancedDocument(this, args);
|
||||
//}
|
||||
public event ItemSelectedChangedEvent OpenInSeparateWindow;
|
||||
public void OnOpenInSeparateWindow(ItemSelectedChangedEventArgs args)
|
||||
{
|
||||
if (OpenInSeparateWindow != null)
|
||||
OpenInSeparateWindow(this, args);
|
||||
OpenInSeparateWindow?.Invoke(this, args);
|
||||
}
|
||||
// C2020-033: Provide way to expand/fill in Search/Incoming Transition panel
|
||||
public event DisplayTabControlEditorSearchIncTransEvent SearchIncTrans;
|
||||
@@ -167,31 +151,29 @@ namespace Volian.Controls.Library
|
||||
public event ItemSelectedChangedEvent RefreshEnhancedDocument;
|
||||
public void OnRefreshEnhancedDocument(ItemSelectedChangedEventArgs args)
|
||||
{
|
||||
if (RefreshEnhancedDocument != null)
|
||||
RefreshEnhancedDocument(this, args);
|
||||
RefreshEnhancedDocument?.Invoke(this, args);
|
||||
}
|
||||
public event DisplayTabControlStatusEvent StatusChanged;
|
||||
public void ONStatusChanged(object Sender, DisplayTabControlStatusEventArgs args)
|
||||
{
|
||||
if (StatusChanged != null) StatusChanged(Sender, args);
|
||||
StatusChanged?.Invoke(Sender, args);
|
||||
}
|
||||
public event DisplayTabControlEvent ToggleRibbonExpanded;
|
||||
public void OnToggleRibbonExpanded(object sender, EventArgs args)
|
||||
{
|
||||
if (ToggleRibbonExpanded != null) ToggleRibbonExpanded(sender, args);
|
||||
ToggleRibbonExpanded?.Invoke(sender, args);
|
||||
}
|
||||
public event DisplayTabControlEvent SelectedDisplayTabItemChanged;
|
||||
public void OnSelectedDisplayTabItemChanged(object sender, EventArgs args)
|
||||
{
|
||||
if (SelectedDisplayTabItemChanged != null) SelectedDisplayTabItemChanged(sender, args);
|
||||
SelectedDisplayTabItemChanged?.Invoke(sender, args);
|
||||
}
|
||||
// C2015-022 added copystep event to commuicate with child windows
|
||||
public event ItemChangedEventHandler CopyStepSelected;
|
||||
|
||||
public void OnCopyStepSelected(ItemChangedEventArgs args)
|
||||
{
|
||||
if (CopyStepSelected != null)
|
||||
CopyStepSelected(this, args);
|
||||
CopyStepSelected?.Invoke(this, args);
|
||||
}
|
||||
|
||||
#region Private Fields
|
||||
@@ -234,6 +216,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private StepRTB _MyStepRTB = null;
|
||||
private bool _RibbonExpanded = true;
|
||||
|
||||
//Keeping for possible future references
|
||||
public StepRTB MyStepRTB
|
||||
{
|
||||
get { return _MyStepRTB; }
|
||||
@@ -308,7 +292,7 @@ namespace Volian.Controls.Library
|
||||
/// <param name="args"></param>
|
||||
internal void OnItemClick(object sender, StepPanelEventArgs args)
|
||||
{
|
||||
if (ItemClick != null) ItemClick(sender, args);
|
||||
ItemClick?.Invoke(sender, args);
|
||||
}
|
||||
/// <summary>
|
||||
/// This occurs when the user moves onto or off of a link within a RichTextBox
|
||||
@@ -414,7 +398,7 @@ namespace Volian.Controls.Library
|
||||
_MyEditItem = null;
|
||||
_MyStepRTB = null;
|
||||
}
|
||||
if (ItemSelectedChanged != null) ItemSelectedChanged(sender, args);
|
||||
ItemSelectedChanged?.Invoke(sender, args);
|
||||
}
|
||||
|
||||
void _MyStepRTB_Disposed(object sender, EventArgs e)
|
||||
@@ -482,8 +466,7 @@ namespace Volian.Controls.Library
|
||||
void DisplayTabControl_Resize(object sender, EventArgs e)
|
||||
{
|
||||
// If the currently selected Item is in a Step, then adjust the scroll as necessary to keep it visible
|
||||
if (_MyEditItem != null)
|
||||
_MyEditItem.ItemShow();
|
||||
_MyEditItem?.ItemShow();
|
||||
}
|
||||
private void SetupBar(Bar myBar)
|
||||
{
|
||||
@@ -537,20 +520,23 @@ namespace Volian.Controls.Library
|
||||
DisplayTabItem dti = e.DockContainerItem as DisplayTabItem;
|
||||
if (dti != null && dti.MyStepTabPanel != null)
|
||||
dti.MyStepTabPanel.MyStepPanel.Dispose();
|
||||
DisplayTabItem myTabItem = e.DockContainerItem as DisplayTabItem;
|
||||
if (myTabItem != null)
|
||||
if (e.DockContainerItem is DisplayTabItem myTabItem)
|
||||
{
|
||||
if (myTabItem.MyDSOTabPanel != null)
|
||||
{
|
||||
myTabItem.MyDSOTabPanel.CloseDSO();
|
||||
}
|
||||
myTabItem.MyDSOTabPanel?.CloseDSO();
|
||||
}
|
||||
MySessionInfo.CheckInItem(dti.OwnerID);
|
||||
if (((Bar)sender).Items == null) return;
|
||||
if (((Bar)sender).Items.Count == 1)// Remove bar if last item is closed...
|
||||
{
|
||||
Bar bar = sender as Bar;
|
||||
if (bar != null)
|
||||
//B2026 - 048 View Only Mode freezes PROMS if last tab closed
|
||||
//if last item is closing, need to re-enable Step Properties
|
||||
//so if closing in view only mode will not freeze when re-opening
|
||||
if (MyEditItem != null && MyEditItem.MyStepPanel.VwMode == E_ViewMode.View)
|
||||
{
|
||||
OnEnableDisableStepProperties(new StepTabRibbonEventArgs(MyEditItem.MyItemInfo, 0, E_ViewMode.Edit));
|
||||
}
|
||||
|
||||
if (sender is Bar bar)
|
||||
{
|
||||
if (dotNetBarManager1.Bars.Contains(bar.Name))
|
||||
dotNetBarManager1.Bars.Remove(bar);
|
||||
@@ -568,12 +554,18 @@ namespace Volian.Controls.Library
|
||||
ActivateRemainingTab((Bar)sender);
|
||||
}
|
||||
}
|
||||
|
||||
public event StepTabRibbonEvent EnableDisableStepProperties;
|
||||
private void OnEnableDisableStepProperties(StepTabRibbonEventArgs args)
|
||||
{
|
||||
EnableDisableStepProperties?.Invoke(this, args);
|
||||
}
|
||||
#endregion
|
||||
#region Public Methods
|
||||
public void RefreshItem(ItemInfo myItemInfo)
|
||||
{
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
string key = $"Item - {proc.ItemID}";
|
||||
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If procedure page open use it
|
||||
{
|
||||
@@ -708,9 +700,8 @@ namespace Volian.Controls.Library
|
||||
if (EDOfficeViewerX == null || EDWordCtrl == null)
|
||||
{
|
||||
|
||||
MessageBox.Show("Edraw needs to be installed or reinstalled on this device. " + Environment.NewLine + "" + Environment.NewLine +
|
||||
"Please contact your IT Administrator to install and register Edraw that was provided with the PROMS Installation media. If additional support is needed, please contact Volian.", "Error in Word section",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
MessageBox.Show($"Edraw needs to be installed or reinstalled on this device. {Environment.NewLine}{Environment.NewLine}Please contact your IT Administrator to install and register Edraw that was provided with the PROMS Installation media. If additional support is needed, please contact Volian.",
|
||||
"Error in Word section", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return null;
|
||||
}
|
||||
else
|
||||
@@ -721,19 +712,13 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
}
|
||||
public T GetValue<T>(string registryKeyPath, string value, T defaultValue = default(T))
|
||||
{
|
||||
T retVal = default(T);
|
||||
|
||||
retVal = (T)Registry.GetValue(registryKeyPath, value, defaultValue);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
public T GetValue<T>(string registryKeyPath, string value, T defaultValue = default) => (T)Registry.GetValue(registryKeyPath, value, defaultValue);
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping type for future usage")]
|
||||
public bool PasteRTBItem(ItemInfo myItemInfo, int copyStartID, ItemInfo.EAddpingPart pasteType, int type)
|
||||
{
|
||||
CleanUpClosedItems();
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
string key = $"Item - {proc.ItemID}";
|
||||
|
||||
if (_MyDisplayTabItems.ContainsKey(key) && pasteType != ItemInfo.EAddpingPart.Replace) // If procedure page open use it unless replace
|
||||
{
|
||||
@@ -760,7 +745,7 @@ namespace Volian.Controls.Library
|
||||
EditItem ei = edtitm.PasteReplace(copyStartID);
|
||||
if (ei == null)
|
||||
{
|
||||
CloseTabItem(_MyDisplayTabItems["Item - " + myItemInfo.ItemID.ToString()]); //Grab itemID and set to close open tab.
|
||||
CloseTabItem(_MyDisplayTabItems[$"Item - {myItemInfo.ItemID}"]); //Grab itemID and set to close open tab.
|
||||
return false; //B2017-179 PasteReplace will return null if was aborted
|
||||
}
|
||||
|
||||
@@ -779,7 +764,7 @@ namespace Volian.Controls.Library
|
||||
else if (_MyDisplayTabItems.ContainsKey(key) && pasteType == ItemInfo.EAddpingPart.Replace)
|
||||
{
|
||||
// B2024-038: changed tab key to procedure (was item, which caused crash if section)
|
||||
CloseTabItem(_MyDisplayTabItems["Item - " + proc.ItemID.ToString()]); //Grab itemID and set to close open tab.
|
||||
CloseTabItem(_MyDisplayTabItems[$"Item - {proc.ItemID}"]); //Grab itemID and set to close open tab.
|
||||
return false; //B2017-179 PasteReplace will return null if was aborted
|
||||
}
|
||||
return false;
|
||||
@@ -791,7 +776,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
//removeitem!
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
string key = $"Item - {proc.ItemID}";
|
||||
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If procedure page open use it
|
||||
{
|
||||
@@ -817,7 +802,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
CleanUpClosedItems();
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
string key = $"Item - {proc.ItemID}";
|
||||
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If procedure page open use it
|
||||
{
|
||||
@@ -866,17 +851,16 @@ namespace Volian.Controls.Library
|
||||
string key = "Doc - ";
|
||||
// there is no entry if it is an auto table of contents:
|
||||
if (myItemInfo.MyContent.MyEntry != null)
|
||||
key = key + myItemInfo.MyContent.MyEntry.MyDocument.DocID.ToString();
|
||||
key += myItemInfo.MyContent.MyEntry.MyDocument.DocID.ToString();
|
||||
else
|
||||
key = key + "0";
|
||||
DisplayTabItem myTabItem = null;
|
||||
key += "0";
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If page open, close it
|
||||
{
|
||||
myTabItem = _MyDisplayTabItems[key];
|
||||
if (myTabItem.MyDSOTabPanel != null)
|
||||
_ = _MyDisplayTabItems[key];
|
||||
if (((DisplayTabItem)null).MyDSOTabPanel != null)
|
||||
{
|
||||
myTabItem.MyDSOTabPanel.IsBeingDeleted = isBeingDeleted;
|
||||
CloseTabItem(myTabItem);
|
||||
((DisplayTabItem)null).MyDSOTabPanel.IsBeingDeleted = isBeingDeleted;
|
||||
CloseTabItem(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -884,11 +868,19 @@ namespace Volian.Controls.Library
|
||||
public void CloseTabItem(DisplayTabItem myTabItem)
|
||||
{
|
||||
if (myTabItem.ContainerControl == null) return;
|
||||
Bar b = myTabItem.ContainerControl as Bar;
|
||||
if (b != null)
|
||||
if (myTabItem.ContainerControl is Bar b)
|
||||
{
|
||||
try
|
||||
{
|
||||
b.CloseDockTab(myTabItem);
|
||||
//b.Items.Remove(myTabItem);
|
||||
}
|
||||
catch
|
||||
{
|
||||
//This is to work around a bug inside 3rd party DotNetBar
|
||||
//The bug occurs when events happen out of order and it tries
|
||||
//to remove a TabItem from the Collection the has already been removed
|
||||
}
|
||||
|
||||
RemoveItem(myTabItem);
|
||||
}
|
||||
}
|
||||
@@ -930,8 +922,7 @@ namespace Volian.Controls.Library
|
||||
if (_RemovedDisplayTabItems.Contains(myBar.SelectedDockContainerItem as DisplayTabItem))
|
||||
myBar.SelectedDockContainerItem = FindRemainingTab(myBar);
|
||||
myBar.SelectedDockContainerItem.Selected = true;
|
||||
StepTabPanel pnl = myBar.SelectedDockContainerItem.Control as StepTabPanel;
|
||||
if (pnl != null)
|
||||
if (myBar.SelectedDockContainerItem.Control is StepTabPanel pnl)
|
||||
pnl.MyStepPanel.ItemShow();
|
||||
}
|
||||
}
|
||||
@@ -1017,7 +1008,7 @@ namespace Volian.Controls.Library
|
||||
PnlCaret.Visible = false;
|
||||
}
|
||||
// B2019-161 When tracking timing time this action
|
||||
private static VolianTimer _TimeActivity = new VolianTimer("DisplayTabControl.cs tmrCaret_Tick", 881);
|
||||
private static readonly VolianTimer _TimeActivity = new VolianTimer("DisplayTabControl.cs tmrCaret_Tick", 881);
|
||||
|
||||
private void tmrCaret_Tick(object sender, EventArgs e)
|
||||
{
|
||||
@@ -1027,22 +1018,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Private Methods
|
||||
///// <summary>
|
||||
///// Gets and sets the SelectedDisplayTabItem (Active Tab)
|
||||
///// </summary>
|
||||
//public DisplayTabItem SelectedDisplayTabItem1
|
||||
//{
|
||||
// get { return (DisplayTabItem)_MyBar.SelectedDockContainerItem; }
|
||||
// set
|
||||
// {
|
||||
// //Volian.Base.Library.vlnStackTrace.ShowStackLocal("SelectedDisplayTabItem");
|
||||
// if (value != null)
|
||||
// {
|
||||
// value.Focus();
|
||||
// value.Selected = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
public void SelectDisplayTabItem(DisplayTabItem myDisplayTabItem)
|
||||
{
|
||||
if (myDisplayTabItem != null)
|
||||
@@ -1094,8 +1069,7 @@ namespace Volian.Controls.Library
|
||||
if (myBar == null) myBar = b;// Remember the first available bar if a specific bar cannot be found
|
||||
foreach (object itm in b.Items)
|
||||
{
|
||||
DisplayTabItem myTabItem = itm as DisplayTabItem;
|
||||
if (myTabItem != null && myTabItem.MyStepTabPanel != null && myItemInfo != null)
|
||||
if (itm is DisplayTabItem myTabItem && myTabItem.MyStepTabPanel != null && myItemInfo != null)
|
||||
if (myTabItem.MyStepTabPanel.MyProcedureItemInfo.ItemID == myItemInfo.MyProcedure.ItemID)
|
||||
return b;
|
||||
}
|
||||
@@ -1107,7 +1081,7 @@ namespace Volian.Controls.Library
|
||||
_UniqueBarCount++;
|
||||
myBar = BarUtilities.CreateDocumentBar();
|
||||
myBar.DockTabClosing += new DockTabClosingEventHandler(myBar_DockTabClosing);
|
||||
myBar.Name = "barDocuments" + _UniqueBarCount.ToString();
|
||||
myBar.Name = $"barDocuments{_UniqueBarCount}";
|
||||
fillDocDockSite.GetDocumentUIManager().Dock(myBar);
|
||||
SetupBar(myBar);
|
||||
}
|
||||
@@ -1123,8 +1097,7 @@ namespace Volian.Controls.Library
|
||||
if (myBar == null) myBar = b;// Remember the first available bar if a specific bar cannot be found
|
||||
foreach (object itm in b.Items)
|
||||
{
|
||||
DisplayTabItem myTabItem = itm as DisplayTabItem;
|
||||
if (myTabItem != null && myTabItem.MyStepTabPanel != null && myTabItem.MyStepTabPanel.MyProcedureItemInfo != null)
|
||||
if (itm is DisplayTabItem myTabItem && myTabItem.MyStepTabPanel != null && myTabItem.MyStepTabPanel.MyProcedureItemInfo != null)
|
||||
if (myTabItem.MyStepTabPanel.MyProcedureItemInfo.ItemID == myItemInfo.MyProcedure.ItemID)
|
||||
return myTabItem.MyStepTabPanel;
|
||||
}
|
||||
@@ -1155,8 +1128,7 @@ namespace Volian.Controls.Library
|
||||
if (stp != null)
|
||||
{
|
||||
EditItem ei = stp.SelectedEditItem;
|
||||
if (ei != null)
|
||||
ei.SaveCurrentAndContents();
|
||||
ei?.SaveCurrentAndContents();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1164,40 +1136,16 @@ namespace Volian.Controls.Library
|
||||
public DisplayTabItem GetProcDisplayTabItem(ItemInfo myItemInfo)
|
||||
{
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
DisplayTabItem pg = null;
|
||||
string key = $"Item - {proc.ItemID}";
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If procedure page open use it
|
||||
return _MyDisplayTabItems[key];
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// This opens a Step page based upon a ItemInfo.
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="myItemInfo"></param>
|
||||
/// <returns></returns>
|
||||
//public bool IsItemInfoProcedureOpen(ItemInfo ii)
|
||||
// if (ii == null) return false; //{
|
||||
// ItemInfo proc = ii.MyProcedure; // Find procedure Item
|
||||
// if (dicEnhancedDocuments.ContainsKey(ii.MyProcedure.MyDocVersion))
|
||||
// {
|
||||
// frmEnhanced frm = dicEnhancedDocuments[ii.MyProcedure.MyDocVersion];
|
||||
// string key = "Item - " + proc.ItemID.ToString();
|
||||
// if (frm.MyDisplayTabClntrol._MyDisplayTabItems.ContainsKey(key))
|
||||
// return true;
|
||||
// }
|
||||
// // return true;
|
||||
// //return false;
|
||||
// return false;
|
||||
//}
|
||||
//public Dictionary<DocVersionInfo, frmEnhanced> dicEnhancedDocuments = new Dictionary<DocVersionInfo, frmEnhanced>();
|
||||
|
||||
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus, bool viewonlymode = false)
|
||||
{
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
DisplayTabItem pg = null;
|
||||
|
||||
string key = $"Item - {proc.ItemID}";
|
||||
DisplayTabItem pg;
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If procedure page open use it
|
||||
{
|
||||
pg = _MyDisplayTabItems[key];
|
||||
@@ -1219,9 +1167,6 @@ namespace Volian.Controls.Library
|
||||
HandleChangeId(myItemInfo, pg);
|
||||
SelectDisplayTabItem(pg);
|
||||
|
||||
// If this is an enhanced document, check for refresh of text items:
|
||||
//if (myItemInfo.IsProcedure)
|
||||
//{
|
||||
// make the myiteminfo into a procedureinfo (depending on where this is called from, just
|
||||
// casting it crashed:
|
||||
ProcedureInfo pi = ProcedureInfo.Get(myItemInfo.MyProcedure.ItemID);
|
||||
@@ -1236,7 +1181,6 @@ namespace Volian.Controls.Library
|
||||
pi.EnhancedProcedureRefreshTextDifferences(iil);
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
pg.MyStepTabPanel.MyProcedureItemInfo = proc;
|
||||
|
||||
@@ -1251,11 +1195,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
Application.DoEvents();
|
||||
pg.SelectedItemInfo = myItemInfo; // Select the item
|
||||
//StepConfig sc = new StepConfig(myItemInfo.MyContent.Config);
|
||||
//if (sc.Step_SourceToBackground != null || sc.Step_SourceToDeviation != null)
|
||||
// pg.MyStepTabPanel.MyStepTabRibbon.btnEnhancedDocSync.Visible = true;
|
||||
//else
|
||||
// pg.MyStepTabPanel.MyStepTabRibbon.btnEnhancedDocSync.Visible = false;
|
||||
return pg;
|
||||
}
|
||||
private bool _SyncEnhancedDocuments;
|
||||
@@ -1276,7 +1215,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (!Volian.Base.Library.VlnSettings.GetCommandFlag("NOCHGID"))
|
||||
{
|
||||
dlgChgId dlgCI = new dlgChgId(this); //, null);
|
||||
dlgChgId dlgCI = new dlgChgId(this);
|
||||
dlgCI.ShowDialog(this);
|
||||
}
|
||||
ItemsChangeIds.Add(myItemInfo.MyProcedure.ItemID, ChgId);
|
||||
@@ -1285,11 +1224,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
private void SetChangeId(string chgid, DisplayTabItem pg, ItemInfo ii)
|
||||
{
|
||||
//if (pg == null || pg.MyStepTabPanel == null)
|
||||
//{
|
||||
// ChgId = null;
|
||||
// return;
|
||||
//}
|
||||
if (pg != null && pg.MyStepTabPanel != null) pg.MyStepTabPanel.MyStepTabRibbon.SetChangeId(chgid, ii);
|
||||
ChgId = chgid;
|
||||
}
|
||||
@@ -1297,7 +1231,7 @@ namespace Volian.Controls.Library
|
||||
private bool LibDocAlreadyOpen(ItemInfo myItemInfo)
|
||||
{
|
||||
EntryInfo myEntry = myItemInfo.MyContent.MyEntry;
|
||||
string key = "Doc - " + myEntry.DocID;
|
||||
string key = $"Doc - {myEntry.DocID}";
|
||||
DisplayTabItem pg = null;
|
||||
return LibDocAlreadyOpen(myItemInfo, key, ref pg, false);
|
||||
}
|
||||
@@ -1341,7 +1275,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
DisplayTabItem pg = null;
|
||||
EntryInfo myEntry = myItemInfo.MyContent.MyEntry;
|
||||
string key = "Doc - " + myEntry.DocID;
|
||||
string key = $"Doc - {myEntry.DocID}";
|
||||
bool libDocAlreadyOpen = LibDocAlreadyOpen(myItemInfo, key, ref pg, true);
|
||||
if (!libDocAlreadyOpen && pg == null)
|
||||
{
|
||||
@@ -1350,8 +1284,6 @@ namespace Volian.Controls.Library
|
||||
FlexibleMessageBox.Show("Too many Word Documents Open. Please close one of the Documents before attempting to open another");
|
||||
return null;
|
||||
}
|
||||
//if ((myItemInfo.MyContent.MyEntry.MyDocument.LibTitle ?? "") != "")
|
||||
// MessageBox.Show("WARNING: All edits made to this Library Document will be applied to all uses of the Document");
|
||||
pg = new DisplayTabItem(this.components, this, myItemInfo, key); // Open a new document page
|
||||
// B2917-219 if MyEdWord is null that means we had trouble opening the word attachment and either a blank document was created or a previous version was recovered
|
||||
// so we now we want to open the now blank or recovered attachment
|
||||
@@ -1373,8 +1305,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
_MyBar = GetParentBar(null); // B2016-131 - allow open of a non-referenced library document
|
||||
CleanUpClosedItems();
|
||||
DisplayTabItem pg = null;
|
||||
string key = "Doc - " + myDocumentInfo.DocID;
|
||||
string key = $"Doc - {myDocumentInfo.DocID}";
|
||||
DisplayTabItem pg;
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If document page open use it
|
||||
pg = _MyDisplayTabItems[key];
|
||||
else
|
||||
@@ -1404,12 +1336,10 @@ namespace Volian.Controls.Library
|
||||
_MyDisplayTabItems.Remove(myDisplayTabItem.MyKey);
|
||||
|
||||
// Dispose of the procedure tab panel
|
||||
if (myDisplayTabItem.MyStepTabPanel != null)
|
||||
myDisplayTabItem.MyStepTabPanel.Dispose();
|
||||
myDisplayTabItem.MyStepTabPanel?.Dispose();
|
||||
|
||||
// Dispose of the MS Word Panel
|
||||
if (myDisplayTabItem.MyDSOTabPanel != null)
|
||||
myDisplayTabItem.MyDSOTabPanel.CloseDSO();
|
||||
myDisplayTabItem.MyDSOTabPanel?.CloseDSO();
|
||||
|
||||
components.Remove(myDisplayTabItem);
|
||||
myDisplayTabItem.Dispose();
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
|
||||
@@ -12,12 +8,10 @@ namespace Volian.Controls.Library
|
||||
public partial class DisplayTabItem : DevComponents.DotNetBar.DockContainerItem
|
||||
{
|
||||
#region Private Fields
|
||||
private DisplayTabControl _MyDisplayTabControl;
|
||||
private ItemInfo _MyItemInfo;
|
||||
private StepTabPanel _MyStepTabPanel;
|
||||
private string _MyKey;
|
||||
private DSOTabPanel _MyDSOTabPanel;
|
||||
private DocumentInfo _MyDocumentInfo;
|
||||
private readonly DisplayTabControl _MyDisplayTabControl;
|
||||
private readonly ItemInfo _MyItemInfo;
|
||||
private readonly string _MyKey;
|
||||
private readonly DocumentInfo _MyDocumentInfo;
|
||||
|
||||
|
||||
#endregion
|
||||
@@ -25,16 +19,10 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// ItemInfo associated with this DisplayTabItem
|
||||
/// </summary>
|
||||
private int _OwnerID;
|
||||
public int OwnerID
|
||||
{
|
||||
get { return _OwnerID; }
|
||||
set { _OwnerID = value; }
|
||||
}
|
||||
public int OwnerID { get; set; }
|
||||
public ItemInfo MyItemInfo
|
||||
{
|
||||
get { return _MyItemInfo; }
|
||||
//set { _MyItemInfo = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// get Key Either:
|
||||
@@ -48,31 +36,12 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Related StepTabPanel for a Step page
|
||||
/// </summary>
|
||||
public StepTabPanel MyStepTabPanel
|
||||
{
|
||||
get { return _MyStepTabPanel; }
|
||||
set { _MyStepTabPanel = value; }
|
||||
}
|
||||
public StepTabPanel MyStepTabPanel { get; set; }
|
||||
/// <summary>
|
||||
/// Related DSOTabPanle for a Word page
|
||||
/// </summary>
|
||||
public DSOTabPanel MyDSOTabPanel
|
||||
{
|
||||
get { return _MyDSOTabPanel; }
|
||||
set { _MyDSOTabPanel = value; }
|
||||
}
|
||||
private string _MyUserRole;
|
||||
public string MyUserRole
|
||||
{
|
||||
get { return _MyUserRole; }
|
||||
set { _MyUserRole = value; }
|
||||
}
|
||||
private bool _Closed = false;
|
||||
public bool Closed
|
||||
{
|
||||
get { return _Closed; }
|
||||
set { _Closed = value; }
|
||||
}
|
||||
public DSOTabPanel MyDSOTabPanel { get; set; }
|
||||
public string MyUserRole { get; set; }
|
||||
/// <summary>
|
||||
/// Current SelectedItemInfo for this page
|
||||
/// </summary>
|
||||
@@ -80,13 +49,13 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_MyStepTabPanel == null) return null;
|
||||
return _MyStepTabPanel.SelectedItemInfo;
|
||||
if (MyStepTabPanel == null) return null;
|
||||
return MyStepTabPanel.SelectedItemInfo;
|
||||
}
|
||||
set
|
||||
{// B2018-074 Don't crash if opening MSWord section from Tools window in Debug Mode
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.SelectedItemInfo = value;
|
||||
if (MyStepTabPanel != null)
|
||||
MyStepTabPanel.SelectedItemInfo = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
@@ -121,14 +90,6 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
SetupDSOTabPanel();
|
||||
SetupSecurity(myItemInfo);
|
||||
// B2022-055 assigning the Name caused a duplicate name error
|
||||
// we found that the procedure tab control remained in the Control list after the procedure was closed
|
||||
// later on we need to find out why it isn't removed when the procedure is closed
|
||||
//if (MyDSOTabPanel == null || MyDSOTabPanel.MyEdWord != null) // B2017-219 check needed if we could not open a word attachment
|
||||
//{
|
||||
// //Name = string.Format("DisplayTabItem {0}", myItemInfo.ItemID);
|
||||
//}
|
||||
|
||||
}
|
||||
private bool MesssageShown = false;
|
||||
public void SetupSecurity(ItemInfo myItem)
|
||||
@@ -172,43 +133,37 @@ namespace Volian.Controls.Library
|
||||
FlexibleMessageBox.Show("Security has not been defined for PROMS. All functionality has been defaulted to the lowest level for all users until security is defined.", "no security defined", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
|
||||
MesssageShown = true;
|
||||
}
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
|
||||
MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
|
||||
}
|
||||
else if (ui.IsAdministrator())
|
||||
{
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupAdminMode();
|
||||
MyStepTabPanel?.MyStepTabRibbon.SetupAdminMode();
|
||||
|
||||
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Administrator";
|
||||
}
|
||||
else if (ui.IsSetAdministrator(myItem.MyDocVersion))
|
||||
{
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupSetAdminMode();
|
||||
MyStepTabPanel?.MyStepTabRibbon.SetupSetAdminMode();
|
||||
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Set Administrator";
|
||||
}
|
||||
else if (ui.IsROEditor(myItem.MyDocVersion) && !ui.IsWriter(myItem.MyDocVersion))
|
||||
{
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupROEditorMode();
|
||||
MyStepTabPanel?.MyStepTabRibbon.SetupROEditorMode();
|
||||
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - RO Editor";
|
||||
}
|
||||
else if (ui.IsWriter(myItem.MyDocVersion))
|
||||
{
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupWriterMode();
|
||||
MyStepTabPanel?.MyStepTabRibbon.SetupWriterMode();
|
||||
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Writer";
|
||||
}
|
||||
else if (ui.IsReviewer(myItem.MyDocVersion))
|
||||
{
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
|
||||
MyStepTabPanel?.MyStepTabRibbon.SetupReviewerMode();
|
||||
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Reviewer";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
|
||||
MyStepTabPanel?.MyStepTabRibbon.SetupReviewerMode();
|
||||
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Reviewer";
|
||||
}
|
||||
}
|
||||
@@ -222,42 +177,19 @@ namespace Volian.Controls.Library
|
||||
InitializeComponent();
|
||||
this.Click += new EventHandler(DisplayTabItem_Click);
|
||||
SetupLibraryDocumentDSOTabPanel();
|
||||
// B2022-055 assigning the Name caused a duplicate name error
|
||||
// we found that the procedure tab control remained in the Control list after the procedure was closed
|
||||
// later on we need to find out why it isn't removed when the procedure is closed
|
||||
//Name = string.Format("DisplayTabLibraryDocument {0}", myDocumentInfo.DocID);
|
||||
}
|
||||
|
||||
protected override void OnDisplayedChanged()
|
||||
{
|
||||
//Console.WriteLine("=>=>=>=> OnDisplayedChanged");
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepPanel.DisplayItemChanging = true;
|
||||
if (MyStepTabPanel != null)
|
||||
MyStepTabPanel.MyStepPanel.DisplayItemChanging = true;
|
||||
base.OnDisplayedChanged();
|
||||
if (_MyStepTabPanel != null)
|
||||
_MyStepTabPanel.MyStepPanel.DisplayItemChanging = false;
|
||||
if (MyStepTabPanel != null)
|
||||
MyStepTabPanel.MyStepPanel.DisplayItemChanging = false;
|
||||
//Console.WriteLine("<=<=<=<= OnDisplayedChanged");
|
||||
}
|
||||
|
||||
//void DisplayTabItem_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
|
||||
//{
|
||||
// Console.WriteLine("DisplayTabItem_MouseUp");
|
||||
//}
|
||||
|
||||
//void DisplayTabItem_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
|
||||
//{
|
||||
// Console.WriteLine("DisplayTabItem_MouseDown");
|
||||
//}
|
||||
|
||||
//void DisplayTabItem_LostFocus(object sender, EventArgs e)
|
||||
//{
|
||||
// Console.WriteLine("DisplayTabItem_LostFocus");
|
||||
//}
|
||||
|
||||
//void DisplayTabItem_GotFocus(object sender, EventArgs e)
|
||||
//{
|
||||
// Console.WriteLine("DisplayTabItem_GotFocus");
|
||||
//}
|
||||
#endregion
|
||||
#region Event Handlers
|
||||
/// <summary>
|
||||
@@ -268,10 +200,8 @@ namespace Volian.Controls.Library
|
||||
private void DisplayTabItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Tell the TabControl that the ItemSelected has changed
|
||||
DisplayTabItem myTabItem = sender as DisplayTabItem;
|
||||
if (myTabItem == null) return;
|
||||
StepTabPanel myTabPanel = myTabItem.MyStepTabPanel as StepTabPanel;
|
||||
if (myTabPanel == null) return;
|
||||
if (!(sender is DisplayTabItem myTabItem)) return;
|
||||
if (!(myTabItem.MyStepTabPanel is StepTabPanel)) return;
|
||||
if (MyStepTabPanel.SelectedEditItem == null) return;
|
||||
MyStepTabPanel.MyDisplayTabControl.HandleChangeId(MyStepTabPanel.SelectedEditItem.MyItemInfo, myTabItem);
|
||||
_MyDisplayTabControl.OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(MyStepTabPanel.SelectedEditItem));
|
||||
@@ -285,32 +215,27 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).BeginInit();
|
||||
_MyDisplayTabControl.MyBar.SuspendLayout();
|
||||
_MyStepTabPanel = new StepTabPanel(_MyDisplayTabControl);
|
||||
MyStepTabPanel = new StepTabPanel(_MyDisplayTabControl);
|
||||
//
|
||||
// tabItem
|
||||
//
|
||||
Control = _MyStepTabPanel;
|
||||
// B2022-055 assigning the Name caused a duplicate name error
|
||||
// we found that the procedure tab control remained in the Control list after the procedure was closed
|
||||
// later on we need to find out why it isn't removed when the procedure is closed
|
||||
//Name = "tabItem Item " + _MyItemInfo.ItemID;
|
||||
Control = MyStepTabPanel;
|
||||
Text = _MyItemInfo.TabTitle;
|
||||
_MyItemInfo.Changed += new ItemInfoEvent(_MyItemInfo_Changed);
|
||||
Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
|
||||
MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
|
||||
LostFocus += new EventHandler(DisplayTabItem_LostFocus);
|
||||
//
|
||||
_MyDisplayTabControl.Controls.Add(_MyStepTabPanel);
|
||||
|
||||
_MyDisplayTabControl.Controls.Add(MyStepTabPanel);
|
||||
_MyDisplayTabControl.MyBar.Items.Add(this);
|
||||
_MyDisplayTabControl.MyBar.Width = 300; // This triggers the bar to resize itself
|
||||
//
|
||||
// tabPanel
|
||||
//
|
||||
_MyStepTabPanel.MyDisplayTabItem = this;
|
||||
MyStepTabPanel.MyDisplayTabItem = this;
|
||||
((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).EndInit();
|
||||
_MyDisplayTabControl.MyBar.ResumeLayout(false);
|
||||
DocVersionInfo dvi = _MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; //MyRTBItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
|
||||
if (dvi == null) return;
|
||||
if (!(_MyItemInfo.MyProcedure.ActiveParent is DocVersionInfo dvi)) return;
|
||||
if (dvi.VersionType > 127 || viewonlymode)
|
||||
MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View;
|
||||
// C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list
|
||||
@@ -345,21 +270,17 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
EntryInfo myEntry = _MyItemInfo.MyContent.MyEntry;
|
||||
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
|
||||
_MyDSOTabPanel = new DSOTabPanel(myEntry.MyDocument, _MyDisplayTabControl, _MyItemInfo, UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion));
|
||||
if (_MyDSOTabPanel.MyEdWord == null) return; // B2017-219 if we could not open the word attachment just return
|
||||
MyDSOTabPanel = new DSOTabPanel(myEntry.MyDocument, _MyDisplayTabControl, _MyItemInfo, UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion));
|
||||
if (MyDSOTabPanel.MyEdWord == null) return; // B2017-219 if we could not open the word attachment just return
|
||||
//
|
||||
// tabItem
|
||||
//
|
||||
Control = _MyDSOTabPanel;
|
||||
// B2022-055 assigning the Name caused a duplicate name error
|
||||
// we found that the procedure tab control remained in the Control list after the procedure was closed
|
||||
// later on we need to find out why it isn't removed when the procedure is closed
|
||||
//Name = "tabItem Item " + _MyItemInfo.ItemID;
|
||||
Control = MyDSOTabPanel;
|
||||
Text = _MyItemInfo.TabTitle;
|
||||
Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
|
||||
MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
|
||||
LostFocus += new EventHandler(DisplayTabItem_LostFocus);
|
||||
_MyDisplayTabControl.Controls.Add(_MyDSOTabPanel);
|
||||
_MyDisplayTabControl.Controls.Add(MyDSOTabPanel);
|
||||
DSOTabPanel.IgnoreEnter = true;
|
||||
//Console.WriteLine("AddRange {0}", Name);
|
||||
_MyDisplayTabControl.MyBar.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
|
||||
@@ -368,7 +289,7 @@ namespace Volian.Controls.Library
|
||||
// tabPanel
|
||||
//
|
||||
_MyDisplayTabControl.SelectDisplayTabItem(this);
|
||||
_MyDSOTabPanel.MyDisplayTabItem = this;
|
||||
MyDSOTabPanel.MyDisplayTabItem = this;
|
||||
DSOTabPanel.IgnoreEnter = false;
|
||||
}
|
||||
private void SetupLibraryDocumentDSOTabPanel()
|
||||
@@ -377,21 +298,17 @@ namespace Volian.Controls.Library
|
||||
// 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());
|
||||
MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl, _MyItemInfo, (MyItemInfo != null) ? UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion) : ui.IsAdministrator());
|
||||
//
|
||||
// tabItem
|
||||
//
|
||||
Control = _MyDSOTabPanel;
|
||||
// B2022-055 assigning the Name caused a duplicate name error
|
||||
// we found that the procedure tab control remained in the Control list after the procedure was closed
|
||||
// later on we need to find out why it isn't removed when the procedure is closed
|
||||
//Name = "tabLibraryDocument " + _MyDocumentInfo.DocID;
|
||||
Control = MyDSOTabPanel;
|
||||
Text = _MyDocumentInfo.LibTitle;
|
||||
DocumentConfig dc = new DocumentConfig(_MyDocumentInfo);
|
||||
Tooltip = _Tooltip = dc.LibDoc_Comment;
|
||||
MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
|
||||
LostFocus += new EventHandler(DisplayTabItem_LostFocus);
|
||||
_MyDisplayTabControl.Controls.Add(_MyDSOTabPanel);
|
||||
_MyDisplayTabControl.Controls.Add(MyDSOTabPanel);
|
||||
DSOTabPanel.IgnoreEnter = true;
|
||||
_MyDisplayTabControl.MyBar.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
|
||||
this});
|
||||
@@ -399,7 +316,7 @@ namespace Volian.Controls.Library
|
||||
// tabPanel
|
||||
//
|
||||
_MyDisplayTabControl.SelectDisplayTabItem(this);
|
||||
_MyDSOTabPanel.MyDisplayTabItem = this;
|
||||
MyDSOTabPanel.MyDisplayTabItem = this;
|
||||
DSOTabPanel.IgnoreEnter = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
@@ -14,16 +11,12 @@ namespace Volian.Controls.Library
|
||||
public partial class DisplayTags : UserControl
|
||||
{
|
||||
#region Properties
|
||||
private ItemInfo _CurItemInfo = null;
|
||||
/// <summary>
|
||||
/// Current ItemInfo
|
||||
/// </summary>
|
||||
public ItemInfo CurItemInfo
|
||||
{
|
||||
get { return _CurItemInfo; }
|
||||
set { _CurItemInfo = value; }
|
||||
}
|
||||
public ItemInfo CurItemInfo { get; set; } = null;
|
||||
private bool _Initalizing = false;
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private IList<int> _MyStepTypeInd = null; // use to keep track of step types put in step type menu
|
||||
/// <summary>
|
||||
/// This stores the last selected EditItem when the Panel was not visible
|
||||
@@ -70,23 +63,6 @@ namespace Volian.Controls.Library
|
||||
CurItemInfo = value.MyItemInfo;
|
||||
_MyEditItem.MyStepPropertiesPanel = this; // this allows us to access the Step Property pannel and toggle check boxes with shortcut keystrokes
|
||||
|
||||
// originally the change all (for step type) checkbox was initialized based
|
||||
// on whether all steps at level were same type, i.e. if same type, default
|
||||
// it to checked. This may confuse the user, so we decided to always default
|
||||
// to not checked. The code was left in here in case that decision is changed.
|
||||
// MRC, JSJ & KBR were in on discussion on 2/27/12:
|
||||
// only change all at level if all substeps are of same type
|
||||
//bool allSameType = true;
|
||||
//ItemInfo itmp = CurItemInfo.FirstSibling;
|
||||
//while (itmp != null)
|
||||
//{
|
||||
// if (CurItemInfo.MyContent.Type != itmp.MyContent.Type)
|
||||
// {
|
||||
// allSameType = false;
|
||||
// break;
|
||||
// }
|
||||
// itmp = itmp.NextItem;
|
||||
//}
|
||||
cbChgAll.Checked = false;
|
||||
TagsFillIn();
|
||||
}
|
||||
@@ -119,7 +95,6 @@ namespace Volian.Controls.Library
|
||||
cbTCAS.Checked = false;
|
||||
cbCAS.Enabled = false;
|
||||
cbTCAS.Enabled = false;
|
||||
//txbxAltConActSumText.Enabled = false;
|
||||
rbChgBarOff.Enabled = false;
|
||||
rbChgBarOn.Enabled = false;
|
||||
listBoxStepTypes.Items.Clear();
|
||||
@@ -134,22 +109,14 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private bool StepOverRide()
|
||||
{
|
||||
ItemInfo myparent = CurItemInfo.MyActiveParent as ItemInfo;
|
||||
if (CurItemInfo.IsRNOPart && myparent !=null && myparent.IsHigh)
|
||||
if (CurItemInfo.IsRNOPart && CurItemInfo.MyActiveParent is ItemInfo myparent && myparent.IsHigh)
|
||||
{
|
||||
// does the high level step of an RNO have a checkoff, if so it
|
||||
// can be overridden?
|
||||
StepConfig sc = myparent.MyConfig as StepConfig;
|
||||
if (sc != null && sc.Step_CheckOffIndex != -1) return true;
|
||||
if (myparent.MyConfig is StepConfig sc && sc.Step_CheckOffIndex != -1) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public void HighlightChangeStep()
|
||||
{
|
||||
// As per MRC - don't bother to color it.
|
||||
// left here in case we change our mind.
|
||||
//groupPanelChgStepType.Style.BackColor = Color.PaleVioletRed;
|
||||
}
|
||||
public void FocusOnImageSize()
|
||||
{
|
||||
// B2016-237 added context menu item to change image size
|
||||
@@ -246,6 +213,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private Dictionary<int, int> _CheckOffIndex = new Dictionary<int, int>(); // C2020-003 translate the sorted index number to the actual checkoff index
|
||||
private void TagsFillIn()
|
||||
{
|
||||
@@ -289,7 +257,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
cbPlaceKeeper.Enabled = cbPlaceKeeperCont.Enabled = false;
|
||||
}
|
||||
//cbCAS.Enabled = true;
|
||||
rbChgBarOff.Enabled = true;
|
||||
rbChgBarOn.Enabled = true;
|
||||
|
||||
@@ -303,7 +270,6 @@ namespace Volian.Controls.Library
|
||||
if (cmbShwRplWds.Visible)
|
||||
{
|
||||
cmbShwRplWds.SelectedIndex = 0;
|
||||
//StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
cmbShwRplWds.Enabled = true;
|
||||
cmbShwRplWds.SelectedIndex = sc.Step_ShwRplWdsIndex;
|
||||
}
|
||||
@@ -350,12 +316,6 @@ namespace Volian.Controls.Library
|
||||
cbCAS.Checked = (sc.Step_CAS != null) ? sc.Step_CAS == "True" : CurItemInfo.IncludeOnContActSum;
|
||||
// Set the Time Critical Action Summary check box - if nothing in config set to false
|
||||
cbTCAS.Checked = (sc.Step_TCAS != null) ? sc.Step_TCAS == "True" : CurItemInfo.IncludeOnTimeCriticalActionSum;
|
||||
//// if alternative continuous action text is saved in the config, then show it and check the checkbox
|
||||
//if (sc.Step_AlternateContActSumText != null && sc.Step_AlternateContActSumText != "")
|
||||
//{
|
||||
// txbxAltConActSumText.Text = sc.Step_AlternateContActSumText;
|
||||
// cbCAS.Checked = true;
|
||||
//}
|
||||
}
|
||||
bool _checkoffsAllowed = true;
|
||||
if (fmtdata.ProcData.CheckOffData.CheckoffOnSubStepsOnly)
|
||||
@@ -365,7 +325,7 @@ namespace Volian.Controls.Library
|
||||
if (_checkoffsAllowed && !(fmtdata.ProcData.CheckOffData.CheckOffList == null) && !(maxindx == 0))
|
||||
{
|
||||
CheckOffList chkoffList = fmtdata.ProcData.CheckOffData.CheckOffList;
|
||||
if (chkoffList != null) chkoffList.Sort(CompareCheckoffUsingOrderBy); // C2020-003 sort the checkoff list via the Index and/or OrderBy elements
|
||||
chkoffList?.Sort(CompareCheckoffUsingOrderBy); // C2020-003 sort the checkoff list via the Index and/or OrderBy elements
|
||||
cmbCheckoff.Items.Clear();
|
||||
_CheckOffIndex.Clear(); // C2020-003 clear the checkoff index dictionary
|
||||
int sortedIndx = 0;
|
||||
@@ -423,15 +383,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
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
|
||||
{
|
||||
@@ -458,11 +409,6 @@ namespace Volian.Controls.Library
|
||||
// There is also an override flag in the config for the step, used to override the change bar to 'off'
|
||||
// if the date show it as having one, or allow a change bar to be 'on' if there the dates are
|
||||
// not different. Note also that a user may edit data after the change bar is set to 'on'.
|
||||
//DateTime curDts;
|
||||
//using (Item itm = Item.Get(CurItemInfo.ItemID))
|
||||
//{
|
||||
// curDts = itm.DTS;
|
||||
//}
|
||||
|
||||
// set change bar radio buttons for the default that there is no change
|
||||
// bar & override sets it to On.
|
||||
@@ -486,24 +432,13 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
rbChgBarOff.Checked = (sc.Step_CBOverride == "Off") ? true : false;
|
||||
rbChgBarOn.Checked = (sc.Step_CBOverride == "On") ? true : false;
|
||||
rbChgBarOff.Checked = (sc.Step_CBOverride == "Off");
|
||||
rbChgBarOn.Checked = (sc.Step_CBOverride == "On");
|
||||
// there is override settings in the config... If the date time stamp says that text was changed
|
||||
// so a change bar should exist - check override to see how change bar controls are set:
|
||||
// If the date of this is greater than the procedure, a change bar should be displayed -
|
||||
// see what the override says. The override states whether change bar is on/off (not
|
||||
// whether override is on/off)
|
||||
//if (curDts > CurItemInfo.MyProcedure.DTS)
|
||||
//{
|
||||
// rbChgBarOff.Text = "OFF (Override)";
|
||||
// rbChgBarOn.Text = "ON";
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// // date time stamp says no change bar should be displayed:
|
||||
// rbChgBarOff.Text = "OFF";
|
||||
// rbChgBarOn.Text = "ON (Override)";
|
||||
//}
|
||||
}
|
||||
|
||||
// see if the change id label & text box are visible, i.e. plant has multiple change ids.
|
||||
@@ -576,8 +511,7 @@ namespace Volian.Controls.Library
|
||||
public void SetFigure(double wd, double wd2)
|
||||
{
|
||||
// Check MyEditItem type and cast if needed
|
||||
ImageItem ii = MyEditItem as ImageItem;
|
||||
if (ii == null) return;
|
||||
if (!(MyEditItem is ImageItem ii)) return;
|
||||
|
||||
// Set the values as needed
|
||||
trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum);
|
||||
@@ -585,8 +519,6 @@ namespace Volian.Controls.Library
|
||||
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)
|
||||
@@ -611,26 +543,13 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
return cursel;
|
||||
}
|
||||
//private void AddToGallery(StepData sd, string curType)
|
||||
//{
|
||||
// DevComponents.DotNetBar.ButtonItem bi = new DevComponents.DotNetBar.ButtonItem("btn" + sd.Type, sd.Type);
|
||||
// bi.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
|
||||
// bi.Image = this.imageListStepTypes.Images[0];
|
||||
// bi.ImagePosition = DevComponents.DotNetBar.eImagePosition.Top;
|
||||
|
||||
// bi.Checked = (sd.Type == curType);
|
||||
|
||||
// galleryContainerStepTypes.SubItems.Add(bi);
|
||||
// listBoxStepTypes.Items.Add(sd.Type);
|
||||
//}
|
||||
#endregion
|
||||
#region Events
|
||||
private void cbPageBreak_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
if (CurItemInfo.IsHigh)
|
||||
sc.Step_NewManualPagebreak = cbPageBreak.Checked;
|
||||
@@ -642,8 +561,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_CAS = (cbCAS.Checked) ? "True" : "False";
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -656,8 +574,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_TCAS = (cbTCAS.Checked) ? "True" : "False";
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -666,8 +583,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_Placekeeper = (cbPlaceKeeper.Checked) ? "Y" : "N";
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -682,8 +598,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_Placekeeper = (cbPlaceKeeperCont.Checked) ? "C" : "N";
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -698,8 +613,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_IncludeInTOC = cbIncludeInTOC.Checked;
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -716,7 +630,7 @@ namespace Volian.Controls.Library
|
||||
EditItem topEditItem = MyEditItem;
|
||||
MyEditItem.SaveContents();
|
||||
FormatData fmtdata = CurItemInfo.ActiveFormat.PlantFormat.FormatData;
|
||||
string msgBox = null;
|
||||
string msgBox;
|
||||
if (cbChgAll.Checked)
|
||||
{
|
||||
ItemInfo startitm = CurItemInfo.FirstSibling;
|
||||
@@ -733,12 +647,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
// B2018-120: if caution/note steps have enhanced - change their type too
|
||||
if (startitm.IsNote || startitm.IsCaution) chgEnh = ChangeTypesEnhanced(startitm);
|
||||
//using (Item itm = Item.Get(startitm.ItemID))
|
||||
//{
|
||||
// itm.DTS = DateTime.Now;
|
||||
// itm.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
// itm.Save();
|
||||
//}
|
||||
startitm = startitm.GetNext();
|
||||
}
|
||||
msgBox = chgEnh ? string.Format("All Step Types at this level and associated enhanced steps were changed to {0}", listBoxStepTypes.Items[listBoxStepTypes.SelectedIndex]) :
|
||||
@@ -757,17 +665,9 @@ namespace Volian.Controls.Library
|
||||
bool chgEnh = false;
|
||||
// B2018-120: if caution/note steps have enhanced - change their type too
|
||||
if (CurItemInfo.IsNote || CurItemInfo.IsCaution) chgEnh = ChangeTypesEnhanced(CurItemInfo);
|
||||
//using (Item itm1 = Item.Get(CurItemInfo.ItemID))
|
||||
//{
|
||||
// itm1.DTS = DateTime.Now;
|
||||
// itm1.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
// itm1.Save();
|
||||
//}
|
||||
msgBox = chgEnh ? string.Format("This Step Type and associated enhanced step were changed to {0}", listBoxStepTypes.Items[listBoxStepTypes.SelectedIndex]):
|
||||
string.Format("This Step Type was changed to {0}", listBoxStepTypes.Items[listBoxStepTypes.SelectedIndex]);
|
||||
}
|
||||
// the follow line was to try and fix a refresh problem when you change the type of a new substep
|
||||
//topEditItem.MyStepPanel.Reset();
|
||||
|
||||
topEditItem.SetAllTabs();
|
||||
FlexibleMessageBox.Show(msgBox);
|
||||
@@ -821,12 +721,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
sc.Step_CBOverride = CurItemInfo.HasChanges ? null : "On";
|
||||
//using (Content cnt = Content.Get(CurItemInfo.MyContent.ContentID))
|
||||
//{
|
||||
// cnt.DTS = DateTime.Now;
|
||||
// cnt.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
// cnt.Save();
|
||||
//}
|
||||
}
|
||||
}
|
||||
private void rbChgBarOvrRideOff_CheckedChanged(object sender, EventArgs e)
|
||||
@@ -840,12 +734,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
sc.Step_CBOverride = CurItemInfo.HasChanges ? "Off" :null;
|
||||
//using (Content cnt = Content.Get(CurItemInfo.MyContent.ContentID))
|
||||
//{
|
||||
// cnt.DTS = CurItemInfo.MyProcedure.DTS;
|
||||
// cnt.UserID = CurItemInfo.MyProcedure.UserID;
|
||||
// cnt.Save();
|
||||
//}
|
||||
}
|
||||
}
|
||||
private void cmbCheckoff_SelectedIndexChanged(object sender, EventArgs e)
|
||||
@@ -856,25 +744,14 @@ namespace Volian.Controls.Library
|
||||
int indx = _CheckOffIndex[cmbCheckoff.SelectedIndex]; // C2020-003 get the non-sorted index from the sorted index
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
sc.Step_CheckOffIndex = indx;
|
||||
//using (Content cnt = Content.Get(CurItemInfo.MyContent.ContentID))
|
||||
//{
|
||||
// cnt.DTS = CurItemInfo.MyProcedure.DTS;
|
||||
// cnt.UserID = CurItemInfo.MyProcedure.UserID;
|
||||
// cnt.Save();
|
||||
//}
|
||||
}
|
||||
// C2029-025 Show or hide replace words. Can highlight replace words in editor.
|
||||
private void cmbShwRplWds_SelectedIndexChanged(object sender, EventArgs e) // new show replace words
|
||||
{
|
||||
|
||||
// --------
|
||||
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
//sc.Step_DisableInitialLine = cbInitialLine.Checked;
|
||||
sc.Step_ShwRplWdsIndex = cmbShwRplWds.SelectedIndex;
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
|
||||
@@ -892,8 +769,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
// User left responsibilty field. If text changed, then prompt
|
||||
// to see if save should occur.
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
bool bothEmpty = (sc.Step_Responsibility == null || sc.Step_Responsibility == "") && (tbRespons.Text == null || tbRespons.Text == "");
|
||||
if (!bothEmpty && sc.Step_Responsibility != tbRespons.Text)
|
||||
{
|
||||
@@ -917,14 +793,14 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (MyEditItem is ImageItem)
|
||||
{
|
||||
int wd = 0;
|
||||
int ht = 0;
|
||||
int wd;
|
||||
int ht;
|
||||
try
|
||||
{
|
||||
wd = int.Parse(tbFSWd.Text);
|
||||
ht = int.Parse(tbFSHt.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
wd = 0;
|
||||
ht = 0;
|
||||
@@ -966,7 +842,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
newHt = int.Parse(tbFSWd.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
invaliddata = true;
|
||||
}
|
||||
@@ -984,8 +860,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_PreferredPagebreak = cbPrefPageBreak.Checked;
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -995,8 +870,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_Initalizing) return;
|
||||
MyEditItem.SaveContents();
|
||||
StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
if (sc == null) return;
|
||||
if (!(CurItemInfo.MyConfig is StepConfig sc)) return;
|
||||
MyEditItem.ChangeBarForConfigItemChange = false;
|
||||
sc.Step_DisableInitialLine = cbInitialLine.Checked;
|
||||
MyEditItem.ChangeBarForConfigItemChange = true;
|
||||
@@ -1023,25 +897,5 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
//private void txbxAltConActSumText_Leave(object sender, EventArgs e)
|
||||
//{
|
||||
// // User left Atlernate Continuous Action Text field. If text changed, then prompt
|
||||
// // to see if save should occur.
|
||||
// StepConfig sc = CurItemInfo.MyConfig as StepConfig;
|
||||
// if (sc == null) return;
|
||||
// bool bothEmpty = (sc.Step_AlternateContActSumText == null || sc.Step_AlternateContActSumText == "") && (txbxAltConActSumText.Text == null || txbxAltConActSumText.Text == "");
|
||||
// if (!bothEmpty && sc.Step_AlternateContActSumText != txbxAltConActSumText.Text)
|
||||
// {
|
||||
// if (MessageBox.Show(this, "Do you want to save the Alternate Continuous Action Text?", "Confirm Save", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
// {
|
||||
// MyEditItem.SaveContents();
|
||||
// sc.Step_AlternateContActSumText = txbxAltConActSumText.Text; // this actually saves the config
|
||||
// }
|
||||
// else
|
||||
// txbxAltConActSumText.Text = sc.Step_AlternateContActSumText;
|
||||
// }
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Text.RegularExpressions;
|
||||
using AT.STO.UI.Win;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Base.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -116,14 +113,8 @@ namespace Volian.Controls.Library
|
||||
private bool _DoingRange = false; // flags if in 'range' transition mode
|
||||
private VETreeNode _RangeNode1;
|
||||
private VETreeNode _RangeNode2;
|
||||
// Use _RangeColor to show highlighting for steps selected in range. This is set from
|
||||
// calling methods from application settings. If not default to aquamarine.
|
||||
private Color _RangeColor = Color.LightGray;
|
||||
public Color RangeColor
|
||||
{
|
||||
get { return _RangeColor; }
|
||||
set { _RangeColor = value; }
|
||||
}
|
||||
|
||||
public Color RangeColor { get; set; } = Color.LightGray;
|
||||
private StepRTB _MyRTB; // Current MyDisplayRTB, i.e. insert transition to it.
|
||||
public StepRTB MyRTB
|
||||
{
|
||||
@@ -148,7 +139,6 @@ namespace Volian.Controls.Library
|
||||
CurTrans = args.MyLinkText.MyTransitionInfo;
|
||||
}
|
||||
private ItemInfo _CurrentItemProcedure; // the selected item's procedure
|
||||
private ItemInfo _CurrentToProcedure; // the 'to' location's procedure (may be same as _CurrentItemProcedure)
|
||||
private ItemInfo _CurrentProcedure; // current procedure used to set all of the controls (may switch between above two)
|
||||
private int _CurrentProcIndex;
|
||||
private bool _AlwaysDisableSets; // true if there is only 1 item in tree/combo for sets
|
||||
@@ -219,7 +209,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
_CurrentProcedure = tmpitm;
|
||||
_CurrentToProcedure = _CurrentProcedure;
|
||||
if (_CurTrans == null)
|
||||
_CurrentItemProcedure = _CurrentProcedure;
|
||||
else
|
||||
@@ -271,7 +260,6 @@ namespace Volian.Controls.Library
|
||||
else if (secitm != null && secitm.Steps != null && secitm.Steps.Count > 0)
|
||||
stpitm = selitm.Steps[0];
|
||||
if (!_DoingRange) tvTranFillIn(stpitm); // range code fills in tree.
|
||||
//if (_DoingRange) tvInitHiliteRange(rangeSameLevel, stpitm, rngitm, (i1 < i2) ? i2 : i1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -283,16 +271,13 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private void tvInitHiliteRange() //bool rangeSameLevel, ItemInfo stpitm, ItemInfo rngitm, int uplevel)
|
||||
{
|
||||
ItemInfo toItm = _CurTrans.MyItemToID;
|
||||
ItemInfo rngItm = null;
|
||||
_ = _CurTrans.MyItemToID;
|
||||
// figure out whether at same level, have same parent and have same HLS:
|
||||
ItemInfo itm1 = _CurTrans.MyItemToID;
|
||||
ItemInfo itm2 = _CurTrans.MyItemRangeID;
|
||||
// Invalid existing transition
|
||||
if (itm2.ActiveParent == null || itm1.ActiveParent == null)
|
||||
return;
|
||||
//if (_CurTrans.TranType == 2 && itm1.ItemID == itm2.ItemID) itm2 = itm1.LastSibling;
|
||||
bool samHLS = itm1.MyHLS.ItemID == itm2.MyHLS.ItemID;
|
||||
int lev1 = 0;
|
||||
int lev2 = 0;
|
||||
while (!itm1.IsHigh)
|
||||
@@ -305,7 +290,6 @@ namespace Volian.Controls.Library
|
||||
lev2++;
|
||||
itm2 = itm2.MyParent;
|
||||
}
|
||||
bool samLevel = lev1 == lev2;
|
||||
// For each range item, go to common level's parent.
|
||||
int cnt = lev1+1;
|
||||
ItemInfo sameParent1 = _CurTrans.MyItemToID;
|
||||
@@ -327,7 +311,7 @@ namespace Volian.Controls.Library
|
||||
// now add nodes for the subtrees so that highlighting can be done. Do 'to' item
|
||||
// first. If 'range' item is at same level, won't need to do anymore processing.
|
||||
ItemInfo toItem = sameParent1.Ordinal<=sameParent2.Ordinal?_CurTrans.MyItemToID:_CurTrans.MyItemRangeID;
|
||||
ItemInfo rngItem = null;
|
||||
ItemInfo rngItem;
|
||||
|
||||
if (_CurTrans.TranType == 2 && _CurTrans.MyItemToID == _CurTrans.MyItemRangeID)
|
||||
{
|
||||
@@ -452,51 +436,6 @@ namespace Volian.Controls.Library
|
||||
vlnTreeComboSets.DropDownControl.SelectedNode = topnode;
|
||||
vlnTreeComboSets.DropDownControl.BeforeExpand += new TreeViewCancelEventHandler(vlnTreeComboSets_BeforeExpand);
|
||||
|
||||
#region CheckIfNeeded Commented Out
|
||||
//vlnTreeComboSets.DropDownControl. = vlnTreeComboSets.Width;
|
||||
// The DropDownNode should be at a DocVersion now. The expanded DocVersion
|
||||
// is the one that matches mydocversion
|
||||
//tmpfi = mydocversion.ActiveParent as FolderInfo;
|
||||
//DocVersionInfoList dvlist = tmpfi.FolderDocVersions;
|
||||
//DropDownNode tnDV = null;
|
||||
// Once at a docversions, only allow working
|
||||
// draft sets. Use DocVersion that we're in, to expand it showing the active procedure.
|
||||
// first count how many versions can be displayed, i.e. only workingdraft?
|
||||
// if more than one, put out a tree node for them.
|
||||
//int cntdocv = 0;
|
||||
//foreach (DocVersionInfo dv in dvlist)
|
||||
//{
|
||||
// if ((VersionTypeEnum)dv.VersionType == VersionTypeEnum.WorkingDraft) cntdocv++;
|
||||
|
||||
//}
|
||||
//if (cntdocv>1)
|
||||
//{
|
||||
// foreach (DocVersionInfo dv in dvlist)
|
||||
// {
|
||||
// if ((VersionTypeEnum)dv.VersionType == VersionTypeEnum.WorkingDraft)
|
||||
// {
|
||||
// DropDownNode tn = new DropDownNode(dv.VersionID, dv.ToString());
|
||||
// tn.Tag = dv;
|
||||
// if (topnode != null)
|
||||
// topnode.Nodes.Add(tn);
|
||||
// else
|
||||
// vlnTreeComboSets.DropDownControl.Nodes.Add(tn);
|
||||
// if (dv.VersionID == mydocversion.VersionID)
|
||||
// {
|
||||
// tnDV = tn;
|
||||
// vlnTreeComboSets.Value = tnDV;
|
||||
// vlnTreeComboSets.DropDownControl.SelectedNode = tnDV;
|
||||
|
||||
// }
|
||||
// //else if (dv.HasChildren) // allow for '+' for tree expansion
|
||||
// //{
|
||||
// // DropDownNode tnt = new DropDownNode(0,"VLN_DUMMY");
|
||||
// // tn.Nodes.Add(tnt);
|
||||
// //}
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
}
|
||||
private void ListBoxTranFmtFillIn()
|
||||
{
|
||||
@@ -504,7 +443,7 @@ namespace Volian.Controls.Library
|
||||
listBoxTranFmt.Items.Clear();
|
||||
for (int i = 0; i < ttl.MaxIndex; i++)
|
||||
listBoxTranFmt.Items.Add(new TransItem(ttl[i].TransMenu.Replace("?.",""),ttl[i].TransFormat.Replace("?.","")));
|
||||
//listBoxTranFmt.Items.Add(ttl[i].TransFormat.Replace("?.",""));
|
||||
|
||||
listBoxTranFmt.SelectedIndex = _TranFmtIndx;
|
||||
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[_TranFmtIndx].TransUI;
|
||||
_DoingRange = (etm & E_TransUI.StepLast) == E_TransUI.StepLast;
|
||||
@@ -532,18 +471,8 @@ namespace Volian.Controls.Library
|
||||
if (startitm.MyContent.Type < 20000) return;
|
||||
groupPanelTranstionSteps.Style.BackColor = Color.Cornsilk;
|
||||
// For the tree view, use parent, unless already at HLS. If at HLS, use this level.
|
||||
//ItemInfo selitm2 = startitm.MyHLS;
|
||||
ItemInfo selSubSec = secitm.Sections[0];
|
||||
|
||||
// The commented out code below is for displaying the steps from the first sub-section B2025-035
|
||||
//ItemInfo subSelStep = selSubSec.Steps[0];
|
||||
//E_TransUI etm2 = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
|
||||
//if (subSelStep.IsInRNO)
|
||||
// startitm = subSelStep.FirstSibling; // if in RNO tree, start out with HLS
|
||||
//else
|
||||
// startitm = subSelStep != null ? subSelStep.FirstSibling : startitm.FirstSibling;
|
||||
|
||||
// B2025-035
|
||||
ItemInfo subSelStep = secitm.Sections[0];
|
||||
E_TransUI etm2 = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
|
||||
if (subSelStep.IsInRNO)
|
||||
@@ -551,12 +480,13 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
startitm = subSelStep != null ? subSelStep.FirstSibling : startitm.FirstSibling;
|
||||
|
||||
// B2025-035
|
||||
bool setsel2 = false;
|
||||
while (startitm != null)
|
||||
{
|
||||
VETreeNode tvn = new VETreeNode(startitm, false);
|
||||
tvn.Tag = startitm;
|
||||
VETreeNode tvn = new VETreeNode(startitm, false)
|
||||
{
|
||||
Tag = startitm
|
||||
};
|
||||
int active = this.tvTran.Nodes.Add(tvn);
|
||||
if (subSelStep != null && startitm.ItemID == subSelStep.ItemID)
|
||||
{
|
||||
@@ -580,7 +510,6 @@ namespace Volian.Controls.Library
|
||||
groupPanelTranstionSteps.Style.BackColor = Color.Cornsilk;
|
||||
// For the tree view, use parent, unless already at HLS. If at HLS, use this level.
|
||||
ItemInfo selitm = startitm.MyHLS;
|
||||
//if (_CurTrans == null)selitm = startitm.MyHLS;
|
||||
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
|
||||
if (startitm.IsInRNO)
|
||||
startitm = selitm.FirstSibling; // if in RNO tree, start out with HLS
|
||||
@@ -589,8 +518,10 @@ namespace Volian.Controls.Library
|
||||
bool setsel = false;
|
||||
while (startitm != null)
|
||||
{
|
||||
VETreeNode tvn = new VETreeNode(startitm, false);
|
||||
tvn.Tag = startitm;
|
||||
VETreeNode tvn = new VETreeNode(startitm, false)
|
||||
{
|
||||
Tag = startitm
|
||||
};
|
||||
int active = this.tvTran.Nodes.Add(tvn);
|
||||
if (selitm !=null && startitm.ItemID == selitm.ItemID)
|
||||
{
|
||||
@@ -614,9 +545,7 @@ namespace Volian.Controls.Library
|
||||
if (secitm == null || secitm.MyContent.Type < 10000) return;
|
||||
// if sectstart is not -1, then use this as the section to select, otherwise
|
||||
// use the id for the item passed in.
|
||||
int startitm = secstart;
|
||||
if (clear && secstart < 0) secstart = secitm.ItemID;
|
||||
ItemInfo selitm = secitm; // this is the selected 'section'
|
||||
secitm = secitm.FirstSibling;
|
||||
while (secitm != null)
|
||||
{
|
||||
@@ -793,19 +722,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
// B2018-009 Eliminate Working Draft (DocVersions) from the procedure tree for transitions
|
||||
//else if (fi.FolderDocVersionCount > 0)
|
||||
//{
|
||||
// foreach (DocVersionInfo dv in fi.FolderDocVersions)
|
||||
// {
|
||||
// if ((VersionTypeEnum)dv.VersionType == VersionTypeEnum.WorkingDraft)
|
||||
// {
|
||||
// DropDownNode newnode = new DropDownNode(dv.VersionID, dv.ToString());
|
||||
// newnode.Tag = dv;
|
||||
// par.Nodes.Add(newnode);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
vlnTreeComboSets.Value = par;
|
||||
vlnTreeComboSets.DropDownControl.SelectedNode = par;
|
||||
@@ -821,9 +737,9 @@ namespace Volian.Controls.Library
|
||||
// selected the docversion itself....
|
||||
bool defines_set = false;
|
||||
FolderInfo fi = null;
|
||||
if (obj is FolderInfo)
|
||||
if (obj is FolderInfo finfo)
|
||||
{
|
||||
fi = (FolderInfo)obj;
|
||||
fi = finfo;
|
||||
if (fi.ChildFolderCount == 0)
|
||||
{
|
||||
// note that the folder may contain more than one docversion, check for
|
||||
@@ -955,16 +871,6 @@ namespace Volian.Controls.Library
|
||||
if (_DoingRange) tvTran.SelectedNode = null;
|
||||
SaveCancelEnabling();
|
||||
}
|
||||
//private void btnUp1_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// // if StepAllowNone, then use the second node in the tree view.
|
||||
// int indx = 0;
|
||||
// if (tvTran.Nodes[0].Tag == null) indx = 1;
|
||||
// // if at HLS, don't do anything.
|
||||
// ItemInfo curitm = (ItemInfo)((VETreeNode)tvTran.Nodes[indx]).VEObject;
|
||||
// if (curitm.IsHigh) return;
|
||||
// tvTranFillIn(curitm);
|
||||
//}
|
||||
private void tvTran_BeforeExpand(object sender, TreeViewCancelEventArgs e)
|
||||
{
|
||||
VETreeNode tn = ((VETreeNode)e.Node);
|
||||
@@ -985,11 +891,6 @@ namespace Volian.Controls.Library
|
||||
// it & disable.
|
||||
ItemInfo secitm = (ItemInfo)cbTranSects.SelectedItem;
|
||||
|
||||
//if (secitm.IsStepSection)
|
||||
//{
|
||||
// cbTranSects.SelectedItem.Sections[0];
|
||||
|
||||
//}
|
||||
if (!secitm.IsStepSection)
|
||||
{
|
||||
tvTran.Nodes.Clear();
|
||||
@@ -997,7 +898,8 @@ namespace Volian.Controls.Library
|
||||
cbIncStepNum.Enabled = false; // C2020-028: disable/uncheck 'Include Step Number' if on Word doc
|
||||
cbIncStepNum.Checked = false;
|
||||
// Set Save & Cancel enabling, depending on whether section can be an endpoint.
|
||||
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[_TranFmtIndx].TransUI;
|
||||
//Following line is for Debugging
|
||||
//E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[_TranFmtIndx].TransUI;
|
||||
SaveCancelEnabling();
|
||||
}
|
||||
else
|
||||
@@ -1065,7 +967,7 @@ namespace Volian.Controls.Library
|
||||
// 1) Look in ProcedureConfig/SectionStart
|
||||
ProcedureConfig pc = (ProcedureConfig)prcitm.MyConfig;
|
||||
int sectstartid = -1;
|
||||
string ss = pc == null ? null : pc.SectionStart;
|
||||
string ss = pc?.SectionStart;
|
||||
SectionInfo si = null;
|
||||
if (ss != null && ss != "")
|
||||
{
|
||||
@@ -1077,7 +979,7 @@ namespace Volian.Controls.Library
|
||||
if (si.MyProcedure.ItemID == prcitm.ItemID) return sectstartid;
|
||||
// The following code fixes the sectionstart property for the Copy Procedure function. This code will correct
|
||||
// any procedures that were copied prior to the implementation of this the copy procedure function fix.
|
||||
foreach (SectionInfo si1 in prcitm.Sections)
|
||||
foreach (SectionInfo si1 in prcitm.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
if (si.DisplayNumber == si1.DisplayNumber && si.DisplayText == si1.DisplayText)
|
||||
{
|
||||
@@ -1096,22 +998,21 @@ namespace Volian.Controls.Library
|
||||
// 2) Look in SectionConfig/OriginalSteps = 'Y'
|
||||
if (prcitm.Sections != null)
|
||||
{
|
||||
foreach (SectionInfo sio in prcitm.Sections)
|
||||
foreach (SectionInfo sio in prcitm.Sections.OfType<SectionInfo>())
|
||||
|
||||
{
|
||||
SectionConfig sc = sio.MyConfig as SectionConfig;
|
||||
if (sc != null && sc.Section_OriginalSteps == "Y")
|
||||
if (sio.MyConfig is SectionConfig sc && sc.Section_OriginalSteps == "Y")
|
||||
{
|
||||
return sio.ItemID;
|
||||
}
|
||||
}
|
||||
// 3) Find if any of the section titles contain 'PROCEDURES STEPS'
|
||||
foreach (SectionInfo sit in prcitm.Sections)
|
||||
foreach (SectionInfo sit in prcitm.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
if (sit.DisplayText.ToUpper().Contains("PROCEDURE STEPS"))
|
||||
return sit.ItemID;
|
||||
}
|
||||
foreach (SectionInfo sit in prcitm.Sections)
|
||||
foreach (SectionInfo sit in prcitm.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
if (sit.DisplayText.ToUpper().Equals("PROCEDURE"))// bug fix: B2015-003
|
||||
return sit.ItemID;
|
||||
@@ -1120,17 +1021,17 @@ namespace Volian.Controls.Library
|
||||
// 4) Format has flag that a default section is not required so return 1st section.
|
||||
if (prcitm.Sections != null)
|
||||
{
|
||||
foreach (SectionInfo sid in prcitm.Sections)
|
||||
foreach (SectionInfo sid in prcitm.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
if (sid.IsStepSection && sid.ActiveFormat.PlantFormat.FormatData.TransData.NoDefaultSectReq) return sid.ItemID;
|
||||
}
|
||||
// 3) Find if any of the section titles contain 'PROCEDURES STEPS'
|
||||
foreach (SectionInfo sit in prcitm.Sections)
|
||||
foreach (SectionInfo sit in prcitm.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
if (sit.DisplayText.ToUpper().Contains("PROCEDURE STEPS"))
|
||||
return sit.ItemID;
|
||||
}
|
||||
foreach (SectionInfo sit in prcitm.Sections)
|
||||
foreach (SectionInfo sit in prcitm.Sections.OfType<SectionInfo>())
|
||||
{
|
||||
if (sit.DisplayText.ToUpper().Equals("PROCEDURE"))// bug fix: B2015-003
|
||||
return sit.ItemID;
|
||||
@@ -1173,8 +1074,7 @@ namespace Volian.Controls.Library
|
||||
// check if node is a true end-point, i.e. not a 'part' node. If part node, don't
|
||||
// allow selection.
|
||||
VETreeNode vt = tvTran.SelectedNode as VETreeNode;
|
||||
ItemInfo selii = vt.VEObject as ItemInfo;
|
||||
if (selii == null)
|
||||
if (!(vt.VEObject is ItemInfo selii))
|
||||
{
|
||||
FlexibleMessageBox.Show("Must select a valid step, not a grouping part such as 'RNO', 'Steps', etc");
|
||||
return;
|
||||
@@ -1197,7 +1097,7 @@ namespace Volian.Controls.Library
|
||||
if (_RangeNode1 == null || (_RangeNode1 != null && _RangeNode2 != null))
|
||||
{
|
||||
if (_RangeNode1 != null) tvTranRangeHilites(false, _RangeNode1, _RangeNode2);
|
||||
tvTran.SelectedNode.BackColor = _RangeColor;
|
||||
tvTran.SelectedNode.BackColor = RangeColor;
|
||||
_RangeNode1 = (VETreeNode)tvTran.SelectedNode;
|
||||
_RangeNode2 = null;
|
||||
lblxTranRangeTip.Text = "Select Last Step \r\nfor Range";
|
||||
@@ -1208,7 +1108,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_RangeNode2 != null) tvTranRangeHilites(false, _RangeNode1, _RangeNode2);
|
||||
_RangeNode2 = (VETreeNode)tvTran.SelectedNode;
|
||||
tvTran.SelectedNode.BackColor = _RangeColor;
|
||||
tvTran.SelectedNode.BackColor = RangeColor;
|
||||
tvTranRangeHilites(true, _RangeNode1, _RangeNode2);
|
||||
lblxTranRangeTip.Text = "Select First Transition\r\nfor Range";
|
||||
lblxTranRangeTip.BackColor = Color.Yellow;
|
||||
@@ -1219,8 +1119,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private void SaveCancelEnabling()
|
||||
{
|
||||
//bool hasChanged = _CurItemFrom != _SavCurItemFrom || _TranFmtIndx != _SavTranFmtIndx
|
||||
// || ( selii != null && _CurTrans.ToID != selii.ItemID);
|
||||
bool hasChanged = SettingsChanged;
|
||||
bool isenh = MyRTB != null && MyRTB.MyItemInfo != null && MyRTB.MyItemInfo.IsEnhancedStep;
|
||||
// B2018-002 - Invalid Transitions - Set button enabled if it has a default section or it doesn't need a default
|
||||
@@ -1240,25 +1138,6 @@ namespace Volian.Controls.Library
|
||||
null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
// B2024-007 color of transition panel was not toggling properly
|
||||
groupPanelTranFmt.Style.BackColor = !HasDefault && NeedsDefault ? Color.Red : Color.Orange;
|
||||
//btnTranSave.Enabled = allowSave;
|
||||
//if (CurTrans != null && selii != null)
|
||||
//{
|
||||
// if (CurTrans.ToID == selii.ItemID)
|
||||
// {
|
||||
// // if the checkbox for including a page number (UseTransitionModifier flag is true)
|
||||
// // then need to check if this has been changed, and allow a save/cancel if so.
|
||||
// if (cbPageNum.Visible && _ModExistingPageNum != cbPageNum.Checked)
|
||||
// btnTranCancel.Enabled = btnTranSave.Enabled = true;
|
||||
// else
|
||||
// btnTranCancel.Enabled = btnTranSave.Enabled = false;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// btnTranCancel.Enabled = true;
|
||||
// btnTranSave.Enabled = allowSave;
|
||||
// }
|
||||
//}
|
||||
//else btnTranCancel.Enabled = btnTranSave.Enabled = allowSave;
|
||||
}
|
||||
private void btnTranCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -1314,7 +1193,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
private void btnTranSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
string trantxt = "(Resolved Transition Text)";
|
||||
string trantxt; //Resolved Transition Text
|
||||
string linktxt = null;
|
||||
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
|
||||
// if must have a step, test for this first.
|
||||
@@ -1370,14 +1249,11 @@ namespace Volian.Controls.Library
|
||||
// be sure that the order is right, i.e. to is before range in list.
|
||||
if (toItem.ItemID != rangeItem.ItemID)
|
||||
{
|
||||
Boolean switchIds = false;
|
||||
// check for order of hls first, then do within sibling list.
|
||||
switchIds = RangeItemAndToItemNeedsSwitched(toItem, rangeItem); // B2021-115 switchIds was being set to true when it should not have
|
||||
Boolean switchIds = RangeItemAndToItemNeedsSwitched(toItem, rangeItem); // B2021-115 switchIds was being set to true when it should not have
|
||||
if (switchIds)
|
||||
{
|
||||
ItemInfo switchItem = toItem;
|
||||
toItem = rangeItem;
|
||||
rangeItem = switchItem;
|
||||
(rangeItem, toItem) = (toItem, rangeItem);
|
||||
}
|
||||
}
|
||||
linktxt = string.Format("#Link:TransitionRange:{0} <NewID> {1} {2}", listBoxTranFmt.SelectedIndex, toItem.ItemID, rangeItem.ItemID);
|
||||
@@ -1496,7 +1372,7 @@ namespace Volian.Controls.Library
|
||||
if (node1==null && node2==null) return;
|
||||
if (node1 != null && node2 == null)
|
||||
{
|
||||
node1.BackColor = on ? _RangeColor : tvTran.BackColor;
|
||||
node1.BackColor = on ? RangeColor : tvTran.BackColor;
|
||||
return;
|
||||
}
|
||||
// If node2 is below node1 in the tree switch them... get to high level step &
|
||||
@@ -1520,9 +1396,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
if (i1 > i2)
|
||||
{
|
||||
VETreeNode t = node2;
|
||||
node2 = node1;
|
||||
node1 = t;
|
||||
(node1, node2) = (node2, node1);
|
||||
}
|
||||
|
||||
// Turn Hilighting on/off (depending on bool argument) between the two nodes
|
||||
@@ -1551,8 +1425,8 @@ namespace Volian.Controls.Library
|
||||
VETreeNode cur = node1;
|
||||
while (cur != null)
|
||||
{
|
||||
cur.BackColor = on ? _RangeColor : tvTran.BackColor;
|
||||
cur = (VETreeNode)(cur.NextNode == null ? cur.Parent : cur.NextNode);
|
||||
cur.BackColor = on ? RangeColor : tvTran.BackColor;
|
||||
cur = (VETreeNode)(cur.NextNode ?? cur.Parent);
|
||||
// if these nodes were at the same level, then stop after the current node = range2
|
||||
if (cur == top1) cur = null; // stop at top
|
||||
if (cur == top2) top1 = cur = null;
|
||||
@@ -1561,30 +1435,25 @@ namespace Volian.Controls.Library
|
||||
cur = top1==null?null:(VETreeNode)top1.NextNode;
|
||||
while (cur != null)
|
||||
{
|
||||
cur.BackColor = on ? _RangeColor : tvTran.BackColor;
|
||||
cur.BackColor = on ? RangeColor : tvTran.BackColor;
|
||||
cur = (cur == top2) ? null : (VETreeNode)cur.NextNode;
|
||||
}
|
||||
// finish subtree of second node in range.
|
||||
cur = top2==node2?null:node2;
|
||||
while (cur != null)
|
||||
{
|
||||
cur.BackColor = on ? _RangeColor : tvTran.BackColor;
|
||||
cur = (VETreeNode)(cur.PrevNode == null ? cur.Parent : cur.PrevNode);
|
||||
cur.BackColor = on ? RangeColor : tvTran.BackColor;
|
||||
cur = (VETreeNode)(cur.PrevNode ?? cur.Parent);
|
||||
if (cur == top2) cur = null; // stop at top
|
||||
}
|
||||
// hilite last selection..
|
||||
top2.BackColor = on ? _RangeColor : tvTran.BackColor;
|
||||
top2.BackColor = on ? RangeColor : tvTran.BackColor;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public DocVersionInfo Mydvi = null; // this is initialized in vlnTreeComboSetsFillIn()
|
||||
|
||||
private static UserInfo _MyUserInfo = null;
|
||||
public static UserInfo MyUserInfo
|
||||
{
|
||||
get { return _MyUserInfo; }
|
||||
set { _MyUserInfo = value; }
|
||||
}
|
||||
public static UserInfo MyUserInfo { get; set; } = null;
|
||||
|
||||
private void cbIncStepNum_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
@@ -1610,8 +1479,7 @@ namespace Volian.Controls.Library
|
||||
if (cbHoldProcSet.Checked)
|
||||
{
|
||||
VETreeNode vt = tvTran.SelectedNode as VETreeNode;
|
||||
ItemInfo selii = vt.VEObject as ItemInfo;
|
||||
if (selii != null)
|
||||
if (vt.VEObject is ItemInfo selii)
|
||||
{
|
||||
HeldLinkText = string.Format("#Link:Transition:{0} <NewID> {1}", listBoxTranFmt.SelectedIndex, selii.ItemID);
|
||||
HeldLink_TranFmtIndx = listBoxTranFmt.SelectedIndex;
|
||||
@@ -1628,29 +1496,17 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public class TransItem
|
||||
{
|
||||
private string _ItemDescription;
|
||||
public string ItemDescription { get; set; }
|
||||
|
||||
public string ItemDescription
|
||||
{
|
||||
get { return _ItemDescription; }
|
||||
set { _ItemDescription = value; }
|
||||
}
|
||||
|
||||
private string _Format;
|
||||
|
||||
public string Format
|
||||
{
|
||||
get { return _Format; }
|
||||
set { _Format = value; }
|
||||
}
|
||||
public string Format { get; set; }
|
||||
public TransItem(string desc, string fmt)
|
||||
{
|
||||
_ItemDescription = desc;
|
||||
_Format = fmt;
|
||||
ItemDescription = desc;
|
||||
Format = fmt;
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return _ItemDescription;
|
||||
return ItemDescription;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using AT.STO.UI.Win;
|
||||
@@ -8,16 +7,9 @@ namespace Volian.Controls.Library
|
||||
internal class DropDownNode : TreeNode, ILookupItem<long>
|
||||
{
|
||||
#region Private Variable Declarations
|
||||
private long _id = 0;
|
||||
private readonly long _id = 0;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Default constructor.
|
||||
/// </summary>
|
||||
public DropDownNode() : base()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// /// <summary>
|
||||
/// Some constructors initializing the node with Id.
|
||||
@@ -29,26 +21,11 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
_id = Id;
|
||||
}
|
||||
|
||||
public DropDownNode(long Id, string Text, DropDownNode[] Children) : base(Text, Children)
|
||||
{
|
||||
_id = Id;
|
||||
}
|
||||
|
||||
public DropDownNode(long Id, string Text, int ImageIndex, int SelectedImageIndex) : base(Text, ImageIndex, SelectedImageIndex)
|
||||
{
|
||||
_id = Id;
|
||||
}
|
||||
|
||||
public DropDownNode(long Id, string Text, int ImageIndex, int SelectedImageIndex, DropDownNode[] Children) : base(Text, ImageIndex, SelectedImageIndex, Children)
|
||||
{
|
||||
_id = Id;
|
||||
}
|
||||
#endregion
|
||||
#region Public Methods
|
||||
public override string ToString()
|
||||
{
|
||||
return this.GetType().Name + " (Id=" + Id.ToString() + ", Name=" + Text + ")";
|
||||
return $"{this.GetType().Name} (Id={Id}, Name={Text})";
|
||||
}
|
||||
#endregion
|
||||
#region ILookupItem<long> Implementation
|
||||
|
||||
@@ -22,10 +22,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
base.OnAfterSelect(e);
|
||||
|
||||
if (ValueChanged != null)
|
||||
{
|
||||
ValueChanged(this, new DropDownValueChangedEventArgs(e.Node));
|
||||
}
|
||||
ValueChanged?.Invoke(this, new DropDownValueChangedEventArgs(e.Node));
|
||||
}
|
||||
/// <summary>
|
||||
/// A double click on a node counts as finish editing.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
@@ -16,13 +12,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
private bool doingfind = false;
|
||||
private bool findingbookmarks = false;
|
||||
private bool _FoundIt = false;
|
||||
private ItemInfo _StartingItemInfo = null;// C2023-016 used to remember where we started doing the Find/Replace
|
||||
public bool FoundIt
|
||||
{
|
||||
get { return _FoundIt; }
|
||||
set { _FoundIt = value; }
|
||||
}
|
||||
public bool FoundIt { get; set; } = false;
|
||||
private bool IsFound
|
||||
{
|
||||
get
|
||||
@@ -43,31 +34,16 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
_MyEditItem = value;
|
||||
if (_MyEditItem == null) return;
|
||||
_MyDocVersion = _MyEditItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
|
||||
Mydocversion = _MyEditItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
|
||||
SetupContextMenu();
|
||||
}
|
||||
}
|
||||
private DocVersionInfo _MyDocVersion;
|
||||
public DocVersionInfo Mydocversion
|
||||
{
|
||||
get { return _MyDocVersion; }
|
||||
set {_MyDocVersion = value; }
|
||||
}
|
||||
private DisplayBookMarks _myDisplayBookMarks;
|
||||
|
||||
public DisplayBookMarks MyDisplayBookMarks
|
||||
{
|
||||
get { return _myDisplayBookMarks; }
|
||||
set { _myDisplayBookMarks = value; }
|
||||
}
|
||||
public DocVersionInfo Mydocversion { get; set; }
|
||||
|
||||
private bool _InApproved;
|
||||
public DisplayBookMarks MyDisplayBookMarks { get; set; }
|
||||
|
||||
public bool InApproved
|
||||
{
|
||||
get { return _InApproved; }
|
||||
set { _InApproved = value; }
|
||||
}
|
||||
public bool InApproved { get; set; }
|
||||
public FindReplace()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -203,7 +179,7 @@ namespace Volian.Controls.Library
|
||||
// C2023-016 Find the next element, but stay in the same procedure
|
||||
private ItemInfo FindNextStepElement(ItemInfo curStepElem, string fndStr)
|
||||
{
|
||||
ItemInfo nxtStepElem = curStepElem;
|
||||
ItemInfo nxtStepElem;
|
||||
if (_StartingItemInfo == null)
|
||||
_StartingItemInfo = MyEditItem.MyItemInfo;
|
||||
if (cbxReverse.Checked)
|
||||
@@ -267,11 +243,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
FoundIt = true;
|
||||
}
|
||||
private bool FindNextText(ItemInfo next)
|
||||
{
|
||||
if (next.MyContent.MyGrid!=null) return true;
|
||||
return next.MyContent.Text.ToUpper().Contains(cmboFindText.Text.ToUpper());
|
||||
}
|
||||
private void AddToComboLists()
|
||||
{
|
||||
bool hastext = this.cmboFindText.Text.Length > 0;
|
||||
@@ -304,11 +275,6 @@ namespace Volian.Controls.Library
|
||||
_StartingItemInfo = null;//C2023-016 reset the starting position
|
||||
}
|
||||
|
||||
public void PerformFindNext()
|
||||
{
|
||||
btnFindNext.PerformClick();
|
||||
}
|
||||
|
||||
private void tabFind_Click(object sender, EventArgs e)
|
||||
{
|
||||
lblRplTxt.Visible = false;
|
||||
@@ -360,8 +326,10 @@ namespace Volian.Controls.Library
|
||||
IDataObject myDO = Clipboard.GetDataObject();
|
||||
if (myDO.GetDataPresent(DataFormats.Rtf))
|
||||
{
|
||||
RichTextBox rtb = new RichTextBox();
|
||||
rtb.SelectedRtf = ItemInfo.StripLinks(myDO.GetData(DataFormats.Rtf).ToString());
|
||||
RichTextBox rtb = new RichTextBox
|
||||
{
|
||||
SelectedRtf = ItemInfo.StripLinks(myDO.GetData(DataFormats.Rtf).ToString())
|
||||
};
|
||||
if (cmboReplaceText.Focused)
|
||||
cmboReplaceText.SelectedText = rtb.Text;
|
||||
else if (cmboFindText.Focused)
|
||||
@@ -394,9 +362,9 @@ namespace Volian.Controls.Library
|
||||
private void SetupContextMenu()
|
||||
{
|
||||
galSymbols.SubItems.Clear();
|
||||
if (_MyDocVersion != null)
|
||||
if (Mydocversion != null)
|
||||
{
|
||||
FormatData fmtdata = _MyDocVersion.ActiveFormat.PlantFormat.FormatData;
|
||||
FormatData fmtdata = Mydocversion.ActiveFormat.PlantFormat.FormatData;
|
||||
SymbolList sl = fmtdata.SymbolList;
|
||||
if (sl == null || sl.Count <= 0)
|
||||
{
|
||||
@@ -405,13 +373,15 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
foreach (Symbol sym in sl)
|
||||
{
|
||||
DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem();
|
||||
btnCM.Text = string.Format("{0}", (char)sym.Unicode);
|
||||
DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem
|
||||
{
|
||||
Text = string.Format("{0}", (char)sym.Unicode),
|
||||
// to name button use unicode rather than desc, desc may have spaces or odd chars
|
||||
btnCM.Name = "btnCM" + sym.Unicode.ToString();
|
||||
btnCM.Tooltip = sym.Desc;
|
||||
btnCM.Tag = string.Format(@"{0}", sym.Unicode);
|
||||
btnCM.FontBold = true;
|
||||
Name = "btnCM" + sym.Unicode.ToString(),
|
||||
Tooltip = sym.Desc,
|
||||
Tag = string.Format(@"{0}", sym.Unicode),
|
||||
FontBold = true
|
||||
};
|
||||
btnCM.Click += new System.EventHandler(btnSym_Click);
|
||||
galSymbols.SubItems.Add(btnCM);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing.Design;
|
||||
using System.Windows.Forms.Design;
|
||||
@@ -13,6 +10,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
public class FlagCheckedListBox : CheckedListBox
|
||||
{
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private System.ComponentModel.Container components = null;
|
||||
|
||||
public FlagCheckedListBox()
|
||||
@@ -28,8 +26,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null)
|
||||
components.Dispose();
|
||||
components?.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
@@ -37,9 +34,6 @@ namespace Volian.Controls.Library
|
||||
#region Component Designer generated code
|
||||
private void InitializeComponent()
|
||||
{
|
||||
//
|
||||
// FlaggedCheckedListBox
|
||||
//
|
||||
this.CheckOnClick = true;
|
||||
|
||||
}
|
||||
@@ -127,7 +121,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
// If the item has been unchecked, remove its bits from the sum
|
||||
if (cs == CheckState.Unchecked)
|
||||
sum = sum & (~composite.value);
|
||||
sum &= (~composite.value);
|
||||
// If the item has been checked, combine its bits with the sum
|
||||
else
|
||||
sum |= composite.value;
|
||||
@@ -239,12 +233,14 @@ namespace Volian.Controls.Library
|
||||
public class FlagEnumUIEditor : UITypeEditor
|
||||
{
|
||||
// The checklistbox
|
||||
private FlagCheckedListBox flagEnumCB;
|
||||
private readonly FlagCheckedListBox flagEnumCB;
|
||||
|
||||
public FlagEnumUIEditor()
|
||||
{
|
||||
flagEnumCB = new FlagCheckedListBox();
|
||||
flagEnumCB.BorderStyle = BorderStyle.None;
|
||||
flagEnumCB = new FlagCheckedListBox
|
||||
{
|
||||
BorderStyle = BorderStyle.None
|
||||
};
|
||||
}
|
||||
|
||||
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
|
||||
@@ -269,10 +265,7 @@ namespace Volian.Controls.Library
|
||||
return null;
|
||||
}
|
||||
|
||||
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
|
||||
{
|
||||
return UITypeEditorEditStyle.DropDown;
|
||||
}
|
||||
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) => UITypeEditorEditStyle.DropDown;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using Csla;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Not modifying Naming Styles")]
|
||||
+19
-20
@@ -34,9 +34,9 @@ namespace Volian.Controls.Library
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GridItem));
|
||||
this.lblTab = new System.Windows.Forms.Label();
|
||||
this._MyToolTip = new DevComponents.DotNetBar.SuperTooltip();
|
||||
this._MyFlexGrid = new Volian.Controls.Library.VlnFlexGrid(this.components);
|
||||
this.MyFlexGrid = new Volian.Controls.Library.VlnFlexGrid(this.components);
|
||||
this._MyDisablePanel = new vlnPanel();
|
||||
((System.ComponentModel.ISupportInitialize)(this._MyFlexGrid)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.MyFlexGrid)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lblTab
|
||||
@@ -55,21 +55,21 @@ namespace Volian.Controls.Library
|
||||
//
|
||||
// _MyFlexGrid
|
||||
//
|
||||
this._MyFlexGrid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom;
|
||||
this._MyFlexGrid.AllowResizing = C1.Win.C1FlexGrid.AllowResizingEnum.Both;
|
||||
this._MyFlexGrid.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
|
||||
this._MyFlexGrid.ColumnInfo = "3,0,0,0,0,40,Columns:";
|
||||
this._MyFlexGrid.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
|
||||
this._MyFlexGrid.FocusRect = C1.Win.C1FlexGrid.FocusRectEnum.Solid;
|
||||
this._MyFlexGrid.Location = new System.Drawing.Point(5, 5);
|
||||
this._MyFlexGrid.Name = "_MyFlexGrid";
|
||||
this._MyFlexGrid.Rows.Count = 4;
|
||||
this._MyFlexGrid.Rows.DefaultSize = 20;
|
||||
this._MyFlexGrid.Rows.Fixed = 0;
|
||||
this._MyFlexGrid.ScrollBars = System.Windows.Forms.ScrollBars.None;
|
||||
this._MyFlexGrid.Size = new System.Drawing.Size(314, 66);
|
||||
this._MyFlexGrid.StyleInfo = resources.GetString("_MyFlexGrid.StyleInfo");
|
||||
this._MyFlexGrid.TabIndex = 4;
|
||||
this.MyFlexGrid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom;
|
||||
this.MyFlexGrid.AllowResizing = C1.Win.C1FlexGrid.AllowResizingEnum.Both;
|
||||
this.MyFlexGrid.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
|
||||
this.MyFlexGrid.ColumnInfo = "3,0,0,0,0,40,Columns:";
|
||||
this.MyFlexGrid.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
|
||||
this.MyFlexGrid.FocusRect = C1.Win.C1FlexGrid.FocusRectEnum.Solid;
|
||||
this.MyFlexGrid.Location = new System.Drawing.Point(5, 5);
|
||||
this.MyFlexGrid.Name = "_MyFlexGrid";
|
||||
this.MyFlexGrid.Rows.Count = 4;
|
||||
this.MyFlexGrid.Rows.DefaultSize = 20;
|
||||
this.MyFlexGrid.Rows.Fixed = 0;
|
||||
this.MyFlexGrid.ScrollBars = System.Windows.Forms.ScrollBars.None;
|
||||
this.MyFlexGrid.Size = new System.Drawing.Size(314, 66);
|
||||
this.MyFlexGrid.StyleInfo = resources.GetString("_MyFlexGrid.StyleInfo");
|
||||
this.MyFlexGrid.TabIndex = 4;
|
||||
//
|
||||
// _MyDisablePanel
|
||||
//
|
||||
@@ -81,13 +81,13 @@ namespace Volian.Controls.Library
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this._MyFlexGrid);
|
||||
this.Controls.Add(this.MyFlexGrid);
|
||||
this.Controls.Add(this._MyDisablePanel);
|
||||
this.Controls.Add(this.lblTab);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.Name = "GridItem";
|
||||
this.Size = new System.Drawing.Size(320, 72);
|
||||
((System.ComponentModel.ISupportInitialize)(this._MyFlexGrid)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.MyFlexGrid)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -96,7 +96,6 @@ namespace Volian.Controls.Library
|
||||
|
||||
private System.Windows.Forms.Label lblTab;
|
||||
private DevComponents.DotNetBar.SuperTooltip _MyToolTip;
|
||||
private VlnFlexGrid _MyFlexGrid;
|
||||
private vlnPanel _MyDisablePanel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
//using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Base.Library;
|
||||
using C1.Win.C1FlexGrid;
|
||||
@@ -24,42 +19,23 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
get
|
||||
{
|
||||
ItemInfo procInfo = MyItemInfo.MyProcedure as ItemInfo;
|
||||
if (procInfo == null)
|
||||
if (!(MyItemInfo.MyProcedure is ItemInfo procInfo))
|
||||
_MyDVI = null;
|
||||
else
|
||||
_MyDVI = procInfo.ActiveParent as DocVersionInfo;
|
||||
return _MyDVI;
|
||||
}
|
||||
}
|
||||
private static UserInfo _MyUserInfo = null;
|
||||
|
||||
public static UserInfo MyUserInfo
|
||||
{
|
||||
get { return _MyUserInfo; }
|
||||
set { _MyUserInfo = value; }
|
||||
}
|
||||
private bool _IsSaving;
|
||||
public bool IsSaving
|
||||
{
|
||||
get { return _IsSaving; }
|
||||
set { _IsSaving = value; }
|
||||
}
|
||||
public VlnFlexGrid MyFlexGrid
|
||||
{
|
||||
get { return _MyFlexGrid; }
|
||||
set { _MyFlexGrid = value; }
|
||||
}
|
||||
private int _GridMargin = 11;
|
||||
public static UserInfo MyUserInfo { get; set; } = null;
|
||||
public bool IsSaving { get; set; }
|
||||
public VlnFlexGrid MyFlexGrid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Margin between the EditItem and the VlnFlexGrid. Appears on the Right.
|
||||
/// Will allow space to draw a Change Bar on the right side of the EditItem.
|
||||
/// </summary>
|
||||
public int GridMargin
|
||||
{
|
||||
get { return _GridMargin; }
|
||||
set { _GridMargin = value; }
|
||||
}
|
||||
public int GridMargin { get; set; } = 11;
|
||||
#endregion
|
||||
|
||||
#region Event Handlers
|
||||
@@ -145,7 +121,6 @@ namespace Volian.Controls.Library
|
||||
void MyStepRTB_AdjustTableWidth(object sender, StepRTBTableWidthEventArgs args)
|
||||
{
|
||||
//Console.WriteLine("MyStepRTB_AdjustTableWidth");
|
||||
//if ((!_MyItemInfo.IsSection && !_MyItemInfo.IsProcedure) && (_MyItemInfo.IsTable || _MyItemInfo.IsFigure))
|
||||
if (args.EditMode)
|
||||
{
|
||||
int colR = MyStepPanel.ToDisplay(MyStepSectionLayoutData.ColRTable, MyItemInfo.ColumnMode);
|
||||
@@ -167,27 +142,12 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
bool MyStepRTB_IsNotCurrentSelection(object sender, EventArgs args)
|
||||
{
|
||||
return MyStepPanel.SelectedEditItem != this;
|
||||
}
|
||||
bool MyStepRTB_IsNotCurrentSelection(object sender, EventArgs args) => MyStepPanel.SelectedEditItem != this;
|
||||
|
||||
void MyStepRTB_OpenAnnotations(object sender, EventArgs args)
|
||||
{
|
||||
OpenAnnotations();
|
||||
}
|
||||
void MyFlexGrid_OpenAnnotations(object sender, EventArgs args)
|
||||
{
|
||||
OpenAnnotations();
|
||||
}
|
||||
void MyStepRTB_DoMouseWheel(object sender, MouseEventArgs args)
|
||||
{
|
||||
DoMouseWheel(args);
|
||||
}
|
||||
void MyStepRTB_DoSaveContents(object sender, EventArgs args)
|
||||
{
|
||||
SaveCurrentAndContents();
|
||||
}
|
||||
void MyStepRTB_OpenAnnotations(object sender, EventArgs args) => OpenAnnotations();
|
||||
void MyFlexGrid_OpenAnnotations(object sender, EventArgs args) => OpenAnnotations();
|
||||
void MyStepRTB_DoMouseWheel(object sender, MouseEventArgs args) => DoMouseWheel(args);
|
||||
void MyStepRTB_DoSaveContents(object sender, EventArgs args) => SaveCurrentAndContents();
|
||||
void MyStepRTB_VisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (MyStepRTB == null) return;
|
||||
@@ -204,7 +164,6 @@ namespace Volian.Controls.Library
|
||||
void MyFlexGrid_Click(object sender, EventArgs e)
|
||||
{
|
||||
MyFlexGrid.Focus();
|
||||
//MyStepPanel.MyStepTabPanel.MyStepTabRibbon.ToggleTableDesignButtons(false);
|
||||
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetRibbonForGrid();
|
||||
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetTableButtonsForMergeRangeSelection();
|
||||
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetGridContextMenu();
|
||||
@@ -235,7 +194,6 @@ namespace Volian.Controls.Library
|
||||
private string _OrigRtf; // used to store original rtf to allow for 'escape' key restore
|
||||
void MyFlexGrid_SelChange(object sender, EventArgs e)
|
||||
{
|
||||
//if (Initializing) return;
|
||||
//Volian.Base.Library.vlnStackTrace.ShowStackLocal("MyFlexGrid_SelChange {0}",MyFlexGrid.Selection);
|
||||
RTBLastFocus = false;
|
||||
MyStepRTB.Visible = false; // Hide the editor if the Selection Changes
|
||||
@@ -244,7 +202,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
// B2020-088: get string using method in case of merged cells
|
||||
string rtf = MyFlexGrid.GetCellRTFString(MyFlexGrid.Row, MyFlexGrid.Col);
|
||||
_OrigRtf = rtf == null ? string.Empty : rtf;
|
||||
_OrigRtf = rtf ?? string.Empty;
|
||||
}
|
||||
}
|
||||
void MyStepRTB_KeyDown(object sender, KeyEventArgs e)
|
||||
@@ -310,7 +268,6 @@ namespace Volian.Controls.Library
|
||||
this.MyStepRTB.SetMenu += new StepRTBMenuEvent(MyStepRTB_SetMenu);
|
||||
this.MyStepRTB.OpenContextMenu += new StepRTBLocationEvent(MyStepRTB_OpenContextMenu);
|
||||
this.MyFlexGrid.EnterKeyPressed += new VlnFlexGridkeyEvent(MyFlexGrid_EnterKeyPressed);
|
||||
//this.MyStepRTB.EnterKeyPressed += new StepRTBCursorKeysEvent(MyStepRTB_EnterKeyPressed);
|
||||
// This Resize event has been useful for debugging purposes numerous times
|
||||
//
|
||||
//this.MyStepRTB.Resize += new EventHandler(MyStepRTB_Resize);
|
||||
@@ -330,12 +287,6 @@ namespace Volian.Controls.Library
|
||||
cs.BackColor = MyFlexGrid.MyShading.GetColor(MyFlexGrid.Row, MyFlexGrid.Col); // C2021-004 reset the last active table cell's shading color when leaving
|
||||
}
|
||||
|
||||
//void MyStepRTB_EnterKeyPressed(object sender, KeyEventArgs args)
|
||||
//{
|
||||
// args.Handled = true;
|
||||
// MyStepPanel.MyStepTabPanel.MyStepTabRibbon.ProcessEnterKey();
|
||||
//}
|
||||
|
||||
void MyFlexGrid_EnterKeyPressed(object sender, KeyEventArgs args)
|
||||
{
|
||||
args.Handled = true;
|
||||
@@ -352,16 +303,6 @@ namespace Volian.Controls.Library
|
||||
SetMenu(args.MenuGroup);
|
||||
}
|
||||
|
||||
// This Resize event been useful for debugging purposes numerous times
|
||||
//
|
||||
//void MyStepRTB_Resize(object sender, EventArgs e)
|
||||
//{
|
||||
// if (MyStepRTB.Visible)
|
||||
// {
|
||||
// //Volian.Base.Library.vlnStackTrace.ShowStack("MyStepRTB_Resize");
|
||||
// Console.WriteLine("MyStepRTB_Resize {0}", MyStepRTB.Width);
|
||||
// }
|
||||
//}
|
||||
void MyStepRTB_RoInsert(object sender, StepRTBRoEventArgs args)
|
||||
{
|
||||
//Console.WriteLine("GridItem - Enter MyStepRTB_RoInsert");
|
||||
@@ -372,12 +313,6 @@ namespace Volian.Controls.Library
|
||||
MyFlexGrid.FixTableCellsHeightWidth();
|
||||
MyFlexGrid.AdjustGridControlSize();
|
||||
MyFlexGrid.Visible = true;
|
||||
//MyFlexGrid.MergedRanges.Clear();
|
||||
//MyFlexGrid.Clear();
|
||||
//ConvertTableToGrid(args.RawValText, args.RODbID, args.ROID);
|
||||
//MyFlexGrid.RODbId = args.RODbID;
|
||||
//MyFlexGrid.ROID = args.ROID;
|
||||
//SaveContents();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -400,18 +335,7 @@ namespace Volian.Controls.Library
|
||||
#endregion
|
||||
#region Override Method and Properties
|
||||
public override int BorderWidth { get { return (MyFlexGrid.Width - MyFlexGrid.ClientRectangle.Width); } }
|
||||
//private bool _OnlyOnce = false;
|
||||
//protected override void OnPaint(PaintEventArgs e)
|
||||
//{
|
||||
// base.OnPaint(e);
|
||||
// if (!this.Enabled && !_OnlyOnce)
|
||||
// {
|
||||
// _OnlyOnce = true;
|
||||
// _MyDisablePanel.SendToBack();
|
||||
// _MyDisablePanel.BringToFront();
|
||||
// _OnlyOnce = false;
|
||||
// }
|
||||
//}
|
||||
|
||||
protected override void OnEnabledChanged(EventArgs e)
|
||||
{
|
||||
base.OnEnabledChanged(e);
|
||||
@@ -430,7 +354,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
gr.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
|
||||
gr.FillRectangle(new SolidBrush(Color.FromArgb(128, Color.FromKnownColor(KnownColor.ButtonFace))), rect);
|
||||
//gr.FillEllipse(Brushes.Red, 10, 10, 10, 10);
|
||||
}
|
||||
_MyDisablePanel.Location = this.MyFlexGrid.Location;
|
||||
_MyDisablePanel.Size = this.MyFlexGrid.Size;
|
||||
@@ -446,10 +369,6 @@ namespace Volian.Controls.Library
|
||||
public override string TabFormat { get { return _TabFormat; } set { _TabFormat = value; } }
|
||||
public override void AdjustTableWidthAndLocation()
|
||||
{
|
||||
//_MyStepRTB.Font = MyStepData.Font.WindowsFont;
|
||||
//ItemWidth = (int)GetTableWidth(MyStepRTB.Font, MyItemInfo.MyContent.Text, true);
|
||||
//ItemWidth = MyFlexGrid.Width;
|
||||
//ItemLocation = new Point(50, _MyParentEditItem.Bottom);
|
||||
|
||||
// We had a table that was in a funky state. This allows it to appear in editor so
|
||||
// that is could be deleted.
|
||||
@@ -586,11 +505,11 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
c = c + 1;
|
||||
c++;
|
||||
if (c == w)
|
||||
{
|
||||
c = 0;
|
||||
r = r + 1;
|
||||
r++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -651,35 +570,17 @@ namespace Volian.Controls.Library
|
||||
// if no ro has been defined yet, just return null
|
||||
if (MyFlexGrid.ROID == null) return null;
|
||||
ContentRoUsage rousg = null;
|
||||
// using (Item itm = MyItemInfo.Get())
|
||||
// {
|
||||
|
||||
using (RODb rodb = RODb.GetJustRoDb(MyFlexGrid.RODbId))
|
||||
{
|
||||
string padroid = (MyFlexGrid.ROID.Length <= 12) ? MyFlexGrid.ROID + "0000" : MyFlexGrid.ROID;
|
||||
rousg = itm.MyContent.ContentRoUsages.Add(MyFlexGrid.ROID, rodb);
|
||||
}
|
||||
//itm.Save();
|
||||
// }
|
||||
|
||||
MyItemInfo.MyContent.RefreshContentRoUsages();
|
||||
return string.Format(@"#Link:ReferencedObject:{0} {1} {2}", rousg.ROUsageID, MyFlexGrid.ROID, MyFlexGrid.RODbId);
|
||||
}
|
||||
//private void ConvertTableToGrid(string valtext, int rodbid, string roid)
|
||||
//{
|
||||
// VE_Font vefont = MyItemInfo.GetItemFont();
|
||||
// MyFlexGrid.Font = vefont.WindowsFont;
|
||||
// //Initializing = true;
|
||||
// MyFlexGrid.MergedRanges.Clear();
|
||||
// MyFlexGrid.Clear();
|
||||
// MyFlexGrid.ParseTableFromText(valtext);
|
||||
// MyFlexGrid.AutoSizeCols();
|
||||
// MyFlexGrid.AutoSizeRows();
|
||||
// MyFlexGrid.MakeRTFcells();
|
||||
// MyFlexGrid.RODbId = rodbid;
|
||||
// MyFlexGrid.ROID = roid;
|
||||
// MyFlexGrid.IsRoTable = true;
|
||||
// //Initializing = false;
|
||||
// SaveContents();
|
||||
//}
|
||||
|
||||
private bool FinishSave(string searchableText)
|
||||
{
|
||||
// Just in case if the grid was in a mode to change sizes, clear out that setting
|
||||
@@ -691,13 +592,9 @@ namespace Volian.Controls.Library
|
||||
string xml = MyFlexGrid.GetXMLData();
|
||||
using (Item itm = MyItemInfo.Get())
|
||||
{
|
||||
//if (!MatchingXML(itm.MyContent.MyGrid.Data, xml))
|
||||
//{
|
||||
// CompareXML(itm.MyContent.MyGrid.Data, xml);
|
||||
itm.MyContent.MyGrid.Data = xml;
|
||||
itm.MyContent.MyGrid.DTS = DateTime.Now;
|
||||
itm.MyContent.MyGrid.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
//}
|
||||
// if this is the initial save of an ro table, then the 'DoLinkForRoTable' will
|
||||
// create the usage for it. this code gets run on modify of the ro table and also
|
||||
// on exit of the griditem. We don't want to save the ro usage again, if it's already
|
||||
@@ -705,12 +602,9 @@ namespace Volian.Controls.Library
|
||||
if (MyFlexGrid.IsRoTable && MyFlexGrid.ROID != null && itm.MyContent.ContentRoUsageCount < 1)
|
||||
{
|
||||
searchableText = string.Format(@"\v<START]\v0 {0} \v {1}[END>\v0 ", searchableText, DoLinkForRoTable(itm));
|
||||
//if (itm.MyContent.Text != searchableText)
|
||||
//{
|
||||
itm.MyContent.Text = searchableText;
|
||||
itm.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
itm.MyContent.DTS = DateTime.Now;
|
||||
//}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -726,82 +620,30 @@ namespace Volian.Controls.Library
|
||||
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds &&
|
||||
!this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.EditorialChange)
|
||||
{
|
||||
StepConfig sc = itm.MyConfig as StepConfig;
|
||||
if (sc == null)
|
||||
if (!(itm.MyConfig is StepConfig sc))
|
||||
sc = new StepConfig();
|
||||
sc.Step_ChangeID = this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.ChgId;
|
||||
if (itm.MyConfig == null) itm.MyContent.Config = sc.ToString();
|
||||
}
|
||||
itm.Save();
|
||||
|
||||
StepConfig myItmCfg =MyItemInfo.MyConfig as StepConfig;
|
||||
// We saved changes made to some step text. Reset the change bar override.
|
||||
// IF there is a step config remove the change bar override by setting the CBOverride value to null
|
||||
// This fixes a problem reported by Farly where if the change bar or overridden to be off, the next
|
||||
// time a change was made, the change bar remained turned off.
|
||||
if (myItmCfg != null)
|
||||
if (MyItemInfo.MyConfig is StepConfig myItmCfg)
|
||||
myItmCfg.Step_CBOverride = null; // clear the change bar override
|
||||
|
||||
MyItemInfo.MyContent.MyGrid.ResetContent(itm.MyContent.MyGrid);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
private void CompareXML(string v1, string v2)
|
||||
{
|
||||
v1 = Regex.Replace(v1, "\r\n *", "");
|
||||
v1 = Regex.Replace(v1, "version *= *\"[^\"]*\"", "");
|
||||
v2 = Regex.Replace(v2, "\r\n *", "");
|
||||
v2 = Regex.Replace(v2, "version *= *\"[^\"]*\"", "");
|
||||
int iStart = 0;
|
||||
int l1 = v1.Length;
|
||||
int l2 = v2.Length;
|
||||
int l3 = Math.Min(l1, l2);
|
||||
while (iStart < l3 && v1[iStart] == v2[iStart])
|
||||
iStart++;
|
||||
int iEnd1 = l1 - 1;
|
||||
int iEnd2 = l2 - 1;
|
||||
while (iStart < iEnd1 && iStart < iEnd2 && v1[iEnd1] == v2[iEnd2])
|
||||
{
|
||||
iEnd1--;
|
||||
iEnd2--;
|
||||
}
|
||||
if (iStart < iEnd1) Console.WriteLine("v1 = {0}", v1.Substring(iStart, iEnd1 - iStart));
|
||||
if (iStart < iEnd2) Console.WriteLine("v2 = {0}", v2.Substring(iStart, iEnd2 - iStart));
|
||||
|
||||
}
|
||||
private bool MatchingXML(string v1, string v2)
|
||||
{
|
||||
v1 = Regex.Replace(v1, "\r\n *", "");
|
||||
v1 = Regex.Replace(v1, "version *= *\"[^\"]*\"", "");
|
||||
v2 = Regex.Replace(v2, "\r\n *", "");
|
||||
v2 = Regex.Replace(v2, "version *= *\"[^\"]*\"", "");
|
||||
int l1 = v1.Length;
|
||||
int l2 = v2.Length;
|
||||
if(l1 != l2 )return false;
|
||||
//int l3 = Math.Min(l1, l2);
|
||||
//int l4 = Math.Max(l1, l2);
|
||||
for (int i = 0; i < l1; i++)
|
||||
if (v1[i] != v2[i]) return false;
|
||||
return true;
|
||||
//Console.WriteLine("{0} - {1},{2}",i, showChar(v1[i]), showChar(v2[i]));
|
||||
//if(l1 > l3)Console.WriteLine("v1 = {0}",v1.Substring(l3));
|
||||
//if(l2 > l3)Console.WriteLine("v2 = {0}",v2.Substring(l3));
|
||||
}
|
||||
//private object showChar(char c)
|
||||
//{
|
||||
// int i = (int)c;
|
||||
// if (i <= 32)
|
||||
// return string.Format("<{0}>", i);
|
||||
// else
|
||||
// return c.ToString();
|
||||
//}
|
||||
public void BasicSave()
|
||||
{
|
||||
using (Item itm = MyItemInfo.Get())
|
||||
{
|
||||
itm.MyContent.MyGrid.Data = MyFlexGrid.GetXMLData();
|
||||
itm.Save();
|
||||
//MyItemInfo.MyContent.MyGrid.ResetContent(itm.MyContent.MyGrid);
|
||||
}
|
||||
}
|
||||
public override bool CanExpand { get { return false; } set { ;} }
|
||||
@@ -821,7 +663,7 @@ namespace Volian.Controls.Library
|
||||
MyFlexGrid.Select(0, 0);
|
||||
MyFlexGrid.FirstEntry = true; // to fix a problem with initial mouse click into table
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
FlexibleMessageBox.Show("The content of this table is corrupted. You will either need to restore a previous version or delete it.", "Table Corrupted", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
@@ -831,21 +673,13 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
_MyLog.WarnFormat("Attempt to give Focus to Disposed Object {0}", MyID);
|
||||
}
|
||||
//ScrollToCenter();
|
||||
}
|
||||
public override void ItemShow()
|
||||
{
|
||||
MyFlexGrid.Focus();
|
||||
//ScrollToCenter();
|
||||
}
|
||||
public StepRTB DisplayRoStepRTB;
|
||||
public override StepRTB MyStepRTB
|
||||
{
|
||||
get
|
||||
{
|
||||
return MyFlexGrid.TableCellEditor;
|
||||
}
|
||||
}
|
||||
public override StepRTB MyStepRTB => MyFlexGrid.TableCellEditor;
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg)
|
||||
{
|
||||
int r = MyFlexGrid.Row;
|
||||
@@ -874,11 +708,11 @@ namespace Volian.Controls.Library
|
||||
if (oldRtf != MyStepRTB.Rtf) MyFlexGrid[r, c] = MyStepRTB.Rtf;
|
||||
if (dr == DialogResult.Yes || dr == DialogResult.Cancel) return dr;
|
||||
}
|
||||
c = c + 1;
|
||||
c++;
|
||||
if (c == w)
|
||||
{
|
||||
c = 0;
|
||||
r = r + 1;
|
||||
r++;
|
||||
}
|
||||
if (r < h)
|
||||
{
|
||||
@@ -908,11 +742,11 @@ namespace Volian.Controls.Library
|
||||
if (oldRtf != MyStepRTB.Rtf) MyFlexGrid[r, c] = MyStepRTB.Rtf;
|
||||
if (dr == DialogResult.Yes || dr == DialogResult.Cancel) return dr;
|
||||
}
|
||||
c = c - 1;
|
||||
c--;
|
||||
if (c < 0)
|
||||
{
|
||||
c = MyFlexGrid.Cols.Count - 1;
|
||||
r = r - 1;
|
||||
r--;
|
||||
}
|
||||
cr = MyFlexGrid.GetMergedRange(r, c);
|
||||
if (r >= 0 && cr.r1 == r && cr.c1 == c)
|
||||
@@ -946,11 +780,11 @@ namespace Volian.Controls.Library
|
||||
bool scn = MyStepRTB.FindText(str, caseSensitive, matchWholeWord, reverse);
|
||||
if (scn) return true;
|
||||
}
|
||||
c = c + 1;
|
||||
c++;
|
||||
if (c == w)
|
||||
{
|
||||
c = 0;
|
||||
r = r + 1;
|
||||
r++;
|
||||
}
|
||||
if (r < h)
|
||||
{
|
||||
@@ -972,11 +806,11 @@ namespace Volian.Controls.Library
|
||||
bool scn = MyStepRTB.FindText(str, caseSensitive, matchWholeWord, reverse);
|
||||
if (scn) return true;
|
||||
}
|
||||
c = c - 1;
|
||||
c--;
|
||||
if (c < 0)
|
||||
{
|
||||
c = MyFlexGrid.Cols.Count - 1;
|
||||
r = r - 1;
|
||||
r--;
|
||||
}
|
||||
cr = MyFlexGrid.GetMergedRange(r, c);
|
||||
if (r >= 0 && cr.r1 == r && cr.c1 == c)
|
||||
@@ -1002,11 +836,11 @@ namespace Volian.Controls.Library
|
||||
MyFlexGrid.StartEditing();
|
||||
return;
|
||||
}
|
||||
c = c - 1;
|
||||
c--;
|
||||
if (c < 0)
|
||||
{
|
||||
c = MyFlexGrid.Cols.Count - 1;
|
||||
r = r - 1;
|
||||
r--;
|
||||
}
|
||||
if (r >= 0)
|
||||
{
|
||||
@@ -1055,11 +889,11 @@ namespace Volian.Controls.Library
|
||||
if (oldRtf != MyStepRTB.Rtf) MyFlexGrid[r, c] = MyStepRTB.Rtf;
|
||||
if (!scn) return false;
|
||||
}
|
||||
c = c + 1;
|
||||
c++;
|
||||
if (c == w)
|
||||
{
|
||||
c = 0;
|
||||
r = r + 1;
|
||||
r++;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -1092,29 +926,19 @@ namespace Volian.Controls.Library
|
||||
MyFlexGrid.ShowTableCellShading();
|
||||
}
|
||||
}
|
||||
public override void SetActive()
|
||||
{
|
||||
AdjustColorsForEditMode();
|
||||
}
|
||||
public override void SetActive() => AdjustColorsForEditMode();
|
||||
private bool _Empty = false;
|
||||
public override bool Empty
|
||||
{
|
||||
get { return _Empty; }
|
||||
set { _Empty = value; }
|
||||
}
|
||||
private bool _Initializing = false;
|
||||
public bool Initializing
|
||||
{
|
||||
get { return _Initializing; }
|
||||
set { _Initializing = value; }
|
||||
}
|
||||
|
||||
public bool Initializing { get; set; } = false;
|
||||
private bool _ActiveMode = false;
|
||||
public override void RefreshDisplay(bool activeMode)
|
||||
{
|
||||
_ActiveMode = activeMode;
|
||||
//XmlDocument xd = new XmlDocument();
|
||||
//xd.LoadXml(MyItemInfo.MyContent.MyGrid.Data);
|
||||
//using (StringReader sr = new StringReader())
|
||||
Initializing = true;
|
||||
MyFlexGrid.LoadGrid(MyItemInfo);
|
||||
Initializing = false;
|
||||
@@ -1148,24 +972,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
// if this is an RO Table, regenerate xml. This is done in the case that
|
||||
// the rotable was updated by the ro editor.
|
||||
//if (MyFlexGrid.IsRoTable) RefreshGridData();
|
||||
RefreshDisplay(false);
|
||||
IdentifyMe(false);
|
||||
}
|
||||
|
||||
//private void RefreshGridData()
|
||||
//{
|
||||
// string ROID = MyFlexGrid.ROID;
|
||||
// int rodbid = MyFlexGrid.RODbId;
|
||||
// //MyFlexGrid.Clear();
|
||||
// ROFSTLookup MyROFSTLookup = MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst.ROFSTLookup;
|
||||
// MyFlexGrid.ConvertTableROToGrid(MyROFSTLookup.GetRoValue(ROID), rodbid, ROID);
|
||||
// //ConvertTableToGrid(MyROFSTLookup.GetRoValue(ROID), rodbid, ROID);
|
||||
// //MyFlexGrid.RODbId = rodbid;
|
||||
// //MyFlexGrid.ROID = ROID;
|
||||
// //MyFlexGrid.IsRoTable = true;
|
||||
// //SaveContents();
|
||||
//}
|
||||
public override void SetExpandAndExpander(ItemInfo itemInfo) { CanExpand = false; } // can't expand a table
|
||||
public void SavePastedCellRoTran()
|
||||
{
|
||||
@@ -1176,7 +986,7 @@ namespace Volian.Controls.Library
|
||||
int h = MyFlexGrid.Rows.Count;
|
||||
int r = 0;
|
||||
int c = 0;
|
||||
String Rtf = null;
|
||||
string Rtf;
|
||||
while (r < h)
|
||||
{
|
||||
CellRange cr = MyFlexGrid.GetMergedRange(r, c);
|
||||
@@ -1199,7 +1009,7 @@ namespace Volian.Controls.Library
|
||||
string linkstr = mro.Groups[2].Value;
|
||||
string[] roparts = linkstr.Split(" ".ToCharArray());
|
||||
ContentRoUsage rousg = null;
|
||||
int oldid = -1;
|
||||
int oldid;
|
||||
using (Item itm = MyItemInfo.Get())
|
||||
{
|
||||
using (RODb rodb = RODb.GetJustRoDb(Convert.ToInt32(roparts[2])))
|
||||
@@ -1288,11 +1098,11 @@ namespace Volian.Controls.Library
|
||||
SaveContents();
|
||||
}
|
||||
}
|
||||
c = c + 1;
|
||||
c++;
|
||||
if (c == w)
|
||||
{
|
||||
c = 0;
|
||||
r = r + 1;
|
||||
r++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1304,7 +1114,6 @@ namespace Volian.Controls.Library
|
||||
CellRange cr = MyFlexGrid.GetMergedRange(MyFlexGrid.Selection.r1, MyFlexGrid.Selection.c1); // B2018-127 get merged range
|
||||
int row = MyFlexGrid.Row;
|
||||
int col = MyFlexGrid.Col;
|
||||
//SaveContents();
|
||||
DoNotRefresh = true;
|
||||
MyStepRTB.Rtf = MyStepRTB.DoNewLinkInGridCell();
|
||||
DoNotRefresh = false;
|
||||
@@ -1343,11 +1152,11 @@ namespace Volian.Controls.Library
|
||||
return;
|
||||
}
|
||||
}
|
||||
c = c + 1;
|
||||
c++;
|
||||
if (c == w)
|
||||
{
|
||||
c = 0;
|
||||
r = r + 1;
|
||||
r++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
@@ -18,17 +14,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
#region IEditItem
|
||||
// set this for the imageitem so that other code (menuing/ribbons/treeview, etc) will continue to work. Include the MyItemInfo
|
||||
public override StepRTB MyStepRTB
|
||||
{
|
||||
get { return _MyStepRTB; }
|
||||
}
|
||||
public override int TableWidth
|
||||
{
|
||||
get
|
||||
{
|
||||
return (int)_MyPictureBox.Width + ImageMargin;
|
||||
}
|
||||
}
|
||||
public override StepRTB MyStepRTB => _MyStepRTB;
|
||||
public override int TableWidth => (int)_MyPictureBox.Width + ImageMargin;
|
||||
/// <summary>
|
||||
/// The left edge of the Tab
|
||||
/// </summary>
|
||||
@@ -109,10 +96,7 @@ namespace Volian.Controls.Library
|
||||
RefreshDisplay(false);
|
||||
SetExpandAndExpander(MyItemInfo);
|
||||
}
|
||||
public override void RefreshOrdinal()
|
||||
{
|
||||
TabFormat = null;
|
||||
}
|
||||
public override void RefreshOrdinal() => TabFormat = null;
|
||||
public override void HandleResize() {}
|
||||
public override void MatchExpanded() {}
|
||||
/// <summary>
|
||||
@@ -176,7 +160,7 @@ namespace Volian.Controls.Library
|
||||
SetWidthsAndHeights(img);
|
||||
//need this to trigger update of steptabribbonbuttons:
|
||||
// B2020-083: crash after approve of procedure when no edit window displayed - check for nulls
|
||||
if (MyStepPanel != null && MyStepPanel.MyStepTabPanel != null) MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling(true);
|
||||
if (MyStepPanel != null && MyStepPanel.MyStepTabPanel != null) MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling();
|
||||
}
|
||||
public override void ToggleEditView(E_ViewMode vwMode) {}
|
||||
public override string TabFormat
|
||||
@@ -200,14 +184,8 @@ namespace Volian.Controls.Library
|
||||
public override Point TabLocation { get { return lblTab.Location; } }
|
||||
public override Font ContentFont { get { return MyStepRTB.Font; } set { /*MyStepRTB.Font = value*/; } }
|
||||
public override float ContentTop { get { return MyPictureBox.Top; } }
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg)
|
||||
{
|
||||
return DialogResult.OK;
|
||||
}
|
||||
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg) => DialogResult.OK;
|
||||
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse) => false;
|
||||
public override void PositionToEnd()
|
||||
{
|
||||
return;
|
||||
@@ -216,14 +194,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
return;
|
||||
}
|
||||
public override string SelectedTextForFind
|
||||
{
|
||||
get { return null; }
|
||||
}
|
||||
public override bool SpellCheckNext()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override string SelectedTextForFind => null;
|
||||
public override bool SpellCheckNext() => true;
|
||||
public override bool Empty
|
||||
{
|
||||
get
|
||||
@@ -249,22 +221,17 @@ namespace Volian.Controls.Library
|
||||
get { return _MyPictureBox; }
|
||||
}
|
||||
private string FileName = null;
|
||||
private static int _ImageMargin = 18;
|
||||
|
||||
/// <summary>
|
||||
/// Margin between the EditItem and the ImageItem. Appears on the Right.
|
||||
/// Will allow space to draw a Change Bar on the right side of the EditItem.
|
||||
/// </summary>
|
||||
public static int ImageMargin
|
||||
{
|
||||
get { return _ImageMargin; }
|
||||
set { _ImageMargin = value; }
|
||||
}
|
||||
public static int ImageMargin { get; set; } = 18;
|
||||
private bool _IsDirty = false;
|
||||
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 = new DisplayTags();
|
||||
//House myhouse = new House();
|
||||
|
||||
#endregion
|
||||
#region Constructors
|
||||
@@ -390,10 +357,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
InsType = insType;
|
||||
FileName = null;
|
||||
//InitializeComponent();
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
|
||||
//MyPictureBox.Width = 100;
|
||||
//MyPictureBox.Height = 100;
|
||||
this.Width = 100 + ImageMargin;
|
||||
this.Height = 100;
|
||||
if (insType == ImageItem.E_ImageSource.File)
|
||||
@@ -409,7 +373,7 @@ namespace Volian.Controls.Library
|
||||
MyPictureBox.Image = img;
|
||||
SetWidthsAndHeights(img);
|
||||
string ext = GetImageFormatExtension(img);
|
||||
FileName = "paste." + ext;
|
||||
FileName = $"paste.{ext}";
|
||||
_IsDirty = true;
|
||||
}
|
||||
}
|
||||
@@ -455,51 +419,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
//public static System.Drawing.Imaging.ImageFormat GetImageFormat(this System.Drawing.Image img)
|
||||
//{
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
|
||||
// return System.Drawing.Imaging.ImageFormat.Jpeg;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
|
||||
// return System.Drawing.Imaging.ImageFormat.Bmp;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
|
||||
// return System.Drawing.Imaging.ImageFormat.Png;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
|
||||
// return System.Drawing.Imaging.ImageFormat.Emf;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Exif))
|
||||
// return System.Drawing.Imaging.ImageFormat.Exif;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
|
||||
// return System.Drawing.Imaging.ImageFormat.Gif;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
|
||||
// return System.Drawing.Imaging.ImageFormat.Icon;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.MemoryBmp))
|
||||
// return System.Drawing.Imaging.ImageFormat.MemoryBmp;
|
||||
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
|
||||
// return System.Drawing.Imaging.ImageFormat.Tiff;
|
||||
// else
|
||||
// return System.Drawing.Imaging.ImageFormat.Wmf;
|
||||
//}
|
||||
private static string GetImageFormatExtension(System.Drawing.Image img)
|
||||
{
|
||||
return ("jpg"); // seems that this is the only one that works.
|
||||
/*
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
|
||||
return "jpg";
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
|
||||
return "bmp";
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
|
||||
return "png";
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
|
||||
return "emf";
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
|
||||
return "gif";
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
|
||||
return "ico";
|
||||
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
|
||||
return "tif";
|
||||
else
|
||||
return "wmf";
|
||||
*/
|
||||
}
|
||||
private static string GetImageFormatExtension(System.Drawing.Image img) => ("jpg"); // seems that this is the only one that works.
|
||||
#endregion
|
||||
#region RO_Images
|
||||
public void HandleRoImage()
|
||||
@@ -750,7 +670,7 @@ namespace Volian.Controls.Library
|
||||
MyPictureBox.Image = img;
|
||||
SetWidthsAndHeights(img);
|
||||
string ext = GetImageFormatExtension(img);
|
||||
FileName = "paste." + ext;
|
||||
FileName = $"paste.{ext}";
|
||||
}
|
||||
}
|
||||
void MyStepRTB_RoInsert(object sender, StepRTBRoEventArgs args)
|
||||
@@ -964,7 +884,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
|
||||
string ext = ImageItem.GetImageFormatExtension(img);
|
||||
filename = "paste." + ext;
|
||||
filename = $"paste.{ext}";
|
||||
}
|
||||
else
|
||||
img = null;
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using VEPROMS.CSLA.Library;
|
||||
namespace Volian.Controls.Library
|
||||
@@ -19,11 +17,11 @@ namespace Volian.Controls.Library
|
||||
// First parse the string
|
||||
if (_LinkInfoText.Contains(@"\v"))
|
||||
throw new Exception("LinkText.ParseLink found RTF token");
|
||||
//_LinkInfoText = _LinkInfoText.Replace(@"\v ", ""); // this is not needed because this is selected Text does not contain RTF tokens
|
||||
// for tran : "2, #, #, # and 4#Link:TransitionRange:2 10 173 166"
|
||||
Match m = Regex.Match(_LinkInfoText, @"(.*)[#]Link:([A-Za-z]*):(.*)");
|
||||
_MyValue = m.Groups[1].Value;
|
||||
_MyLink = "#Link:" + m.Groups[2].Value + ":" + m.Groups[3].Value;
|
||||
//for debugging
|
||||
//string _MyValue = m.Groups[1].Value;
|
||||
//string _MyLink = $"#Link:{m.Groups[2].Value}:{m.Groups[3].Value}";
|
||||
switch (m.Groups[2].Value)
|
||||
{
|
||||
case "ReferencedObject":
|
||||
@@ -56,11 +54,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
private string _LinkInfoText;
|
||||
public string LinkInfoText
|
||||
{
|
||||
get { return _LinkInfoText; }
|
||||
}
|
||||
private readonly string _LinkInfoText;
|
||||
public string LinkInfoText => _LinkInfoText;
|
||||
private TransitionInfo _MyTransitionInfo = null;
|
||||
public TransitionInfo MyTransitionInfo
|
||||
{
|
||||
@@ -74,42 +69,12 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
get { ParseLink(); return _MyTransitionInfo.MyItemRangeID; }
|
||||
}
|
||||
private string _MyValue = null;
|
||||
//public string MyValue
|
||||
//{
|
||||
// get { ParseLink(); return _MyValue; }
|
||||
//}
|
||||
private string _MyLink = null;
|
||||
//public string MyLink
|
||||
//{
|
||||
// get { ParseLink(); return _MyLink; }
|
||||
//}
|
||||
private RoUsageInfo _MyRoUsageInfo;
|
||||
public RoUsageInfo MyRoUsageInfo
|
||||
{
|
||||
get { ParseLink(); return _MyRoUsageInfo; }
|
||||
}
|
||||
//private string _Roid = null; // TODO: need to return Referenced Object rather than just roid
|
||||
//public string Roid
|
||||
//{
|
||||
// get { ParseLink(); return _Roid; }
|
||||
//}
|
||||
//private string _RoUsageid = null; // TODO: need to return Referenced Object rather than just roid
|
||||
//public string RoUsageid
|
||||
//{
|
||||
// get { ParseLink(); return _RoUsageid; }
|
||||
//}
|
||||
//private string _RoDbid = null; // TODO: need to return Referenced Object rather than just roid
|
||||
//public string RoDbid
|
||||
//{
|
||||
// get { ParseLink(); return _RoDbid; }
|
||||
//}
|
||||
private ParsedLinkType _MyParsedLinkType = ParsedLinkType.NotParsed;
|
||||
//public ParsedLinkType MyParsedLinkType
|
||||
//{
|
||||
// get { ParseLink(); return _MyParsedLinkType; }
|
||||
//}
|
||||
|
||||
}
|
||||
#region enums
|
||||
public enum ParsedLinkType : int
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
|
||||
@@ -13,14 +13,10 @@ namespace Volian.Controls.Library
|
||||
public event ItemInfoEvent AfterRemove;
|
||||
internal void OnAfterRemove(object sender)
|
||||
{
|
||||
if (AfterRemove != null) AfterRemove(sender);
|
||||
}
|
||||
private int _MaxItems = 10;
|
||||
public int MaxItems
|
||||
{
|
||||
get { return _MaxItems; }
|
||||
set { _MaxItems = value; }
|
||||
AfterRemove?.Invoke(sender);
|
||||
}
|
||||
|
||||
public int MaxItems { get; set; } = 10;
|
||||
public new MostRecentItem Add(MostRecentItem myMRI)
|
||||
{
|
||||
Refresh();
|
||||
@@ -53,8 +49,7 @@ namespace Volian.Controls.Library
|
||||
// when a delete item occurs.
|
||||
void MyItemInfo_BeforeDelete(object sender)
|
||||
{
|
||||
ItemInfo ii = sender as ItemInfo;
|
||||
if (ii != null)
|
||||
if (sender is ItemInfo ii)
|
||||
{
|
||||
MostRecentItem tmp = null;
|
||||
// Look for the ItemID
|
||||
@@ -101,8 +96,10 @@ namespace Volian.Controls.Library
|
||||
|
||||
public static MostRecentItemList GetMRILst(System.Collections.Specialized.StringCollection list, int maxItems)
|
||||
{
|
||||
MostRecentItemList mril = new MostRecentItemList();
|
||||
mril.MaxItems = maxItems;
|
||||
MostRecentItemList mril = new MostRecentItemList
|
||||
{
|
||||
MaxItems = maxItems
|
||||
};
|
||||
if (list != null)
|
||||
for (int i = list.Count - 1; i >= 0;i-- )// Add in reverse order so first is last and last is first
|
||||
mril.Add(list[i]);
|
||||
@@ -127,27 +124,20 @@ namespace Volian.Controls.Library
|
||||
get
|
||||
{
|
||||
if (_MyItemInfo == null)
|
||||
_MyItemInfo = ItemInfo.Get(_ItemID);
|
||||
_MyItemInfo = ItemInfo.Get(ItemID);
|
||||
return _MyItemInfo;
|
||||
}
|
||||
set
|
||||
{
|
||||
_ItemID = value.ItemID;
|
||||
ItemID = value.ItemID;
|
||||
_MyItemInfo = value;
|
||||
_MenuTitle = GetMenuTitle();
|
||||
_ToolTip = GetToolTip(_MyItemInfo);
|
||||
}
|
||||
}
|
||||
internal void Refresh()
|
||||
{
|
||||
MyItemInfo = MyItemInfo;
|
||||
}
|
||||
private int _ItemID;
|
||||
public int ItemID
|
||||
{
|
||||
get { return _ItemID; }
|
||||
set { _ItemID = value; }
|
||||
}
|
||||
internal void Refresh() => MyItemInfo = MyItemInfo;
|
||||
|
||||
public int ItemID { get; set; }
|
||||
private string _MenuTitle;
|
||||
public string MenuTitle
|
||||
{
|
||||
@@ -159,10 +149,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
set { _MenuTitle = value; }
|
||||
}
|
||||
private string GetMenuTitle()
|
||||
{
|
||||
return MyItemInfo.Path;
|
||||
}
|
||||
private string GetMenuTitle() => MyItemInfo.Path;
|
||||
private string _ToolTip;
|
||||
public string ToolTip
|
||||
{
|
||||
@@ -177,10 +164,9 @@ namespace Volian.Controls.Library
|
||||
private static string GetToolTip(ItemInfo item)
|
||||
{
|
||||
// reset active parent if null
|
||||
// if (MyItemInfo.MyProcedure.ActiveParent == null) MyItemInfo.MyProcedure.ActiveParent = null;
|
||||
DocVersionInfo tmp = (DocVersionInfo)(item.MyProcedure.ActiveParent);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int indent = BuildPath(tmp.MyFolder, ref sb);
|
||||
_ = BuildPath(tmp.MyFolder, ref sb); //indent
|
||||
return sb.ToString();
|
||||
}
|
||||
private static int BuildPath(FolderInfo folderInfo, ref StringBuilder sb)
|
||||
@@ -192,7 +178,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0}~{1}~{2}", _ItemID, MenuTitle, ToolTip);
|
||||
return string.Format("{0}~{1}~{2}", ItemID, MenuTitle, ToolTip);
|
||||
}
|
||||
private static ItemInfo GetCorrectItemInfoType(int itemId)
|
||||
{
|
||||
@@ -228,9 +214,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
return _RetainBadMRIs == 2;
|
||||
}
|
||||
public MostRecentItem(ItemInfo myItem)
|
||||
{
|
||||
MyItemInfo = myItem;
|
||||
}
|
||||
public MostRecentItem(ItemInfo myItem) => MyItemInfo = myItem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
public partial class PreviewMultiLineRO : DevComponents.DotNetBar.Office2007Form //Form
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
@@ -30,9 +25,6 @@ namespace Volian.Controls.Library
|
||||
this.roImage.Image = thmb;
|
||||
this.Text = title;
|
||||
}
|
||||
public bool ThumbnailCallback()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public bool ThumbnailCallback() => false;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
@@ -450,11 +448,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Structures
|
||||
//struct CharRange
|
||||
//{
|
||||
// public int cpMin;
|
||||
// public int cpMax;
|
||||
//}
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Auto)]
|
||||
public struct CharFormat2
|
||||
{
|
||||
@@ -874,25 +867,6 @@ namespace Volian.Controls.Library
|
||||
pft.dySpaceBefore = spaceBefore * 1440 / dpi;
|
||||
SetParaFormat(richTextBox, pft);
|
||||
}
|
||||
//developed for equation editor interface work, but ended up not needing it. Kept it in
|
||||
// case it is needed in the future.
|
||||
//public static void SetSpaceAfter(RichTextBox richTextBox, int spaceAfter)
|
||||
//{
|
||||
// ParaFormatTwo pft = GetParaFormat(richTextBox);
|
||||
// pft.dwMask = 0;
|
||||
// pft.dwMask |= ParaFormatMasks.PFM_SPACEAFTER;
|
||||
// // get the monitor's resolution in DPI and use it to set the linespacing value for
|
||||
// // the richtextbox. Note that without this, the Arial Unicode font made the appearance of
|
||||
// // almost double linespacing. Using PFS_Exact makes it appear as regular single spacing.
|
||||
// Graphics g = richTextBox.CreateGraphics();
|
||||
// int dpi = Convert.ToInt32((g.DpiX + g.DpiY) / 2);
|
||||
// g.Dispose();
|
||||
// // dyLineSpacing is Spacing between lines. the PFS_EXACT sets line spacing as the spacing from one
|
||||
// //line to the next, in twips - thus the 1440.
|
||||
|
||||
// pft.dySpaceAfter = spaceAfter * 1440 / dpi;
|
||||
// SetParaFormat(richTextBox, pft);
|
||||
//}
|
||||
public static void SetLineSpacing(RichTextBox richTextBox, ParaSpacing type)
|
||||
{
|
||||
ParaFormatTwo pft = GetParaFormat(richTextBox);
|
||||
@@ -955,14 +929,9 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
SetCharFormat(richTextBox, RTBSelection.SCF_SELECTION, cft);
|
||||
}
|
||||
public static bool IsSuperScript(RichTextBox richTextBox)
|
||||
{
|
||||
return (richTextBox.SelectionCharOffset>0);
|
||||
}
|
||||
public static bool IsSubScript(RichTextBox richTextBox)
|
||||
{
|
||||
return (richTextBox.SelectionCharOffset < 0);
|
||||
}
|
||||
public static bool IsSuperScript(RichTextBox richTextBox) => (richTextBox.SelectionCharOffset > 0);
|
||||
public static bool IsSubScript(RichTextBox richTextBox) => (richTextBox.SelectionCharOffset < 0);
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping RTBSelection")]
|
||||
public static void ToggleSubscript(bool bSet, RichTextBox richTextBox, RTBSelection selection)
|
||||
{
|
||||
if (bSet)
|
||||
@@ -970,6 +939,7 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
richTextBox.SelectionCharOffset = 0;
|
||||
}
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping RTBSelection")]
|
||||
public static void ToggleSuperscript(bool bSet, RichTextBox richTextBox, RTBSelection selection)
|
||||
{
|
||||
if (bSet)
|
||||
@@ -1040,70 +1010,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
SetCharFormat(richTextBox, selection, cft);
|
||||
}
|
||||
//public static bool IsLink(RichTextBox richTextBox)
|
||||
//{
|
||||
// CharFormatTwo cft = GetCharFormat(richTextBox, RTBSelection.SCF_SELECTION);
|
||||
// return ((cft.dwEffects & CharFormatEffects.CFE_PROTECTED) == CharFormatEffects.CFE_PROTECTED);
|
||||
//}
|
||||
//public static void ToggleLink(bool bSet, RichTextBox richTextBox, RTBSelection selection)
|
||||
//{
|
||||
// CharFormatTwo cft = GetCharFormat(richTextBox, selection);
|
||||
// if (bSet)
|
||||
// {
|
||||
// cft.dwEffects |= CharFormatEffects.CFE_LINK;
|
||||
// cft.dwMask |= CharFormatMasks.CFM_LINK;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// cft.dwEffects &= ~RTBAPI.CharFormatEffects.CFE_LINK;
|
||||
// }
|
||||
// SetCharFormat(richTextBox, selection, cft);
|
||||
//}
|
||||
//public static void UnProtect(RichTextBox richTextBox) //, string type, string text, string link)
|
||||
//{
|
||||
// //richTextBox.DetectUrls = false;
|
||||
// CharFormatTwo cft = GetCharFormat(richTextBox, RTBAPI.RTBSelection.SCF_SELECTION); ;
|
||||
// //int position = richTextBox.SelectionStart = richTextBox.TextLength;
|
||||
// //richTextBox.SelectionLength = 0;
|
||||
// //richTextBox.SelectedRtf = @"{\rtf1\ansi " + text + @"\v #" + link + @"\v0}";
|
||||
// //richTextBox.SelectedRtf = "{" + string.Format(@"\rtf1\ansi\protect\v {0}\v0 {1}\v #{2}", type, text, link) + "}";
|
||||
// //richTextBox.Select(position, type.Length + text.Length + link.Length + 1);
|
||||
// cft.dwMask = RTBAPI.CharFormatMasks.CFM_PROTECTED;
|
||||
// cft.dwEffects = 0;
|
||||
// // The lines below can be used to allow link text to be edited
|
||||
// //charFormat.dwMask = RTBAPI.CharFormatMasks.CFM_LINK;
|
||||
// //charFormat.dwEffects = RTBAPI.CharFormatEffects.CFE_LINK;
|
||||
// SetCharFormat(richTextBox, RTBSelection.SCF_SELECTION, cft);
|
||||
// //rtbRTF.SetSelectionLink(true);
|
||||
// //richTextBox.SelectionStart = richTextBox.TextLength;
|
||||
// //richTextBox.SelectionLength = 0;
|
||||
//}
|
||||
//public static void Protect(RichTextBox richTextBox) //, string type, string text, string link)
|
||||
//{
|
||||
// CharFormatTwo cft = GetCharFormat(richTextBox, RTBAPI.RTBSelection.SCF_SELECTION); ;
|
||||
// cft.dwMask = CharFormatMasks.CFM_PROTECTED;
|
||||
// cft.dwEffects = CharFormatEffects.CFE_PROTECTED;
|
||||
// SetCharFormat(richTextBox, RTBSelection.SCF_SELECTION, cft);
|
||||
//}
|
||||
//public static void SetLink(RichTextBox richTextBox, string type, string text, string link)
|
||||
//{
|
||||
// richTextBox.DetectUrls = false;
|
||||
// CharFormatTwo cft = GetCharFormat(richTextBox, RTBAPI.RTBSelection.SCF_SELECTION); ;
|
||||
// int position = richTextBox.SelectionStart = richTextBox.TextLength;
|
||||
// richTextBox.SelectionLength = 0;
|
||||
// //richTextBox.SelectedRtf = @"{\rtf1\ansi " + text + @"\v #" + link + @"\v0}";
|
||||
// richTextBox.SelectedRtf = "{" + string.Format(@"\rtf1\ansi\protect\v {0}\v0 {1}\v #{2}", type, text, link) + "}";
|
||||
// richTextBox.Select(position, type.Length + text.Length + link.Length + 1);
|
||||
// cft.dwMask = RTBAPI.CharFormatMasks.CFM_LINK | RTBAPI.CharFormatMasks.CFM_PROTECTED;
|
||||
// cft.dwEffects = RTBAPI.CharFormatEffects.CFE_LINK | RTBAPI.CharFormatEffects.CFE_PROTECTED;
|
||||
// // The lines below can be used to allow link text to be edited
|
||||
// //charFormat.dwMask = RTBAPI.CharFormatMasks.CFM_LINK;
|
||||
// //charFormat.dwEffects = RTBAPI.CharFormatEffects.CFE_LINK;
|
||||
// SetCharFormat(richTextBox, RTBSelection.SCF_SELECTION, cft);
|
||||
// //rtbRTF.SetSelectionLink(true);
|
||||
// richTextBox.SelectionStart = richTextBox.TextLength;
|
||||
// richTextBox.SelectionLength = 0;
|
||||
//}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
@@ -39,10 +35,7 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Used to connect the RichTextBox with the menus and toolbars
|
||||
/// </summary>
|
||||
public override StepRTB MyStepRTB
|
||||
{
|
||||
get { return _MyStepRTB; }
|
||||
}
|
||||
public override StepRTB MyStepRTB => _MyStepRTB;
|
||||
public override int TableWidth { get { return (int)GetTableWidth(_MyStepRTB.Font, MyItemInfo.MyContent.Text, true); } }
|
||||
|
||||
/// <summary>
|
||||
@@ -80,8 +73,6 @@ namespace Volian.Controls.Library
|
||||
get { return _MyStepRTB.Width; }
|
||||
set
|
||||
{
|
||||
// This is wrong for single column (KBR) - RHM Debug:
|
||||
//MyStepRTB.Width = value;
|
||||
Width = value + lblTab.Left + lblTab.Width + (this.Width - MyStepRTB.Right);
|
||||
}
|
||||
}
|
||||
@@ -167,7 +158,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ItemInfo.ResetTabString(MyID);
|
||||
string tabString = MyItemInfo.IsSection ? MyItemInfo.DisplayNumber.PadRight(MyItemInfo.MyTab.CleanText.Length) : MyItemInfo.MyTab.CleanText;
|
||||
//string tabString = /*MyItemInfo.IsSection ? MyItemInfo.DisplayNumber : */ MyItemInfo.MyTab.CleanText;
|
||||
|
||||
if (!MyItemInfo.IsProcedure) lblTab.Text = tabString; // B2021-068: don't reset if procedure (it is blank when initialized)
|
||||
// calculate the width based upon characters per inch considering user's DPI
|
||||
@@ -182,7 +172,6 @@ namespace Volian.Controls.Library
|
||||
bool lastDigitSingle = Regex.IsMatch(tabString, "^.*[^0-9][0-9] *$");
|
||||
lblTab.Width = ((lastDigitSingle && MyItemInfo.IsStep ? 1 : 0) + tabString.Length) * MyStepPanel.DPI / cpi;
|
||||
Invalidate();
|
||||
//if (MyItemInfo.MyTab.Offset == 0) // commented out for Farley bug fix B2015-123 alignment of tabs on the edit screen (Farly is only one using tab offset)
|
||||
{
|
||||
// In the following if statement, the last part, 'IsHigh & PageBreakOnStep' (PageBreakOnStep
|
||||
// flags background steps and IsHigh is for the HLS - Cautions/Notes were ok), was added
|
||||
@@ -201,16 +190,11 @@ namespace Volian.Controls.Library
|
||||
|
||||
#endregion
|
||||
#region Properties
|
||||
private static int _RTBMargin = 3;
|
||||
/// <summary>
|
||||
/// Margin between the EditItem and the StepRTB. Appears on the Right.
|
||||
/// Will allow space to draw a Change Bar on the right side of the EditItem.
|
||||
/// </summary>
|
||||
public static int RTBMargin
|
||||
{
|
||||
get { return _RTBMargin; }
|
||||
set { _RTBMargin = value; }
|
||||
}
|
||||
public static int RTBMargin { get; set; } = 3;
|
||||
private int? _CheckOffMargin = null;
|
||||
/// <summary>
|
||||
/// Margin between the EditItem and the StepRTB. Appears on the Right.
|
||||
@@ -238,24 +222,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
set { _CheckOffMargin = value; }
|
||||
}
|
||||
private EnhancedAddTypes _EnhAddType = EnhancedAddTypes.No;
|
||||
public EnhancedAddTypes EnhAddType
|
||||
{
|
||||
get { return _EnhAddType; }
|
||||
set { _EnhAddType = value; }
|
||||
}
|
||||
private ItemInfo _EnhAddFromItemInfo = null;
|
||||
public ItemInfo EnhAddFromItemInfo
|
||||
{
|
||||
get { return _EnhAddFromItemInfo; }
|
||||
set { _EnhAddFromItemInfo = value; }
|
||||
}
|
||||
private bool _DoingPasteReplace = false;
|
||||
public bool DoingPasteReplace
|
||||
{
|
||||
get { return _DoingPasteReplace; }
|
||||
set { _DoingPasteReplace = value; }
|
||||
}
|
||||
|
||||
public EnhancedAddTypes EnhAddType { get; set; } = EnhancedAddTypes.No;
|
||||
public ItemInfo EnhAddFromItemInfo { get; set; } = null;
|
||||
public bool DoingPasteReplace { get; set; } = false;
|
||||
#endregion
|
||||
#region Constructors
|
||||
public RTBItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand)
|
||||
@@ -263,7 +233,6 @@ namespace Volian.Controls.Library
|
||||
// B2016-179 If the parent is a section and the child is not a step then set expand to true.
|
||||
// B2016-211 Added subsection check - don't expand all of the sub sections when you open a section (Farley)
|
||||
expand |= (!itemInfo.IsStepPart && itemInfo.ActiveParent.IsSection) && !itemInfo.IsSubsection;
|
||||
//// TIMING: DisplayItem.TimeIt("CSLARTB Top");
|
||||
InitializeComponent();// TODO: Performance 25%
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, null, false);
|
||||
MyStepRTB.TextChanged += new EventHandler(MyStepRTB_TextChanged);
|
||||
@@ -273,7 +242,6 @@ namespace Volian.Controls.Library
|
||||
// B2016-179 If the parent is a section and the child is not a step then set expand to true.
|
||||
// B2016-211 Added subsection check - don't expand all of the sub sections when you open a section (Farley)
|
||||
expand |= (!itemInfo.IsStepPart && itemInfo.ActiveParent is SectionInfo) && !itemInfo.IsSubsection;
|
||||
//// TIMING: DisplayItem.TimeIt("CSLARTB Top");
|
||||
InitializeComponent();// TODO: Performance 25%
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
|
||||
MyStepRTB.TextChanged += new EventHandler(MyStepRTB_TextChanged);
|
||||
@@ -283,124 +251,10 @@ namespace Volian.Controls.Library
|
||||
// B2016-179 If the parent is a section and the child is not a step then set expand to true.
|
||||
// B2016-211 Added subsection check - don't expand all of the sub sections when you open a section (Farley)
|
||||
expand |= (!itemInfo.IsStepPart && itemInfo.ActiveParent is SectionInfo) && !itemInfo.IsSubsection;
|
||||
//// TIMING: DisplayItem.TimeIt("CSLARTB Top");
|
||||
InitializeComponent();// TODO: Performance 25%
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, null, addFirstChld);
|
||||
MyStepRTB.TextChanged += new EventHandler(MyStepRTB_TextChanged);
|
||||
}
|
||||
//private void SetupRTBItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem)
|
||||
//{
|
||||
// //if (itemInfo.ItemID == 225) _MyStepRTB.Resize += new EventHandler(_MyStepRTB_Resize);
|
||||
// //_MyStepRTB.MyRTBItem = this;
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB InitComp");
|
||||
// BackColor = myStepPanel.PanelColor;
|
||||
// //_MyStepRTB.BackColor = myStepPanel.InactiveColor;
|
||||
// // TODO: Adjust top based upon format
|
||||
// // TODO: Remove Label and just output ident on the paint event
|
||||
// lblTab.Left = 20;
|
||||
// SetupHeader(itemInfo);
|
||||
// this.Paint += new PaintEventHandler(RTBItem_Paint);
|
||||
// this.BackColorChanged += new EventHandler(RTBItem_BackColorChanged);
|
||||
// if (itemInfo != null)
|
||||
// {
|
||||
// ContentType = (int)itemInfo.MyContent.Type;
|
||||
// switch (ContentType / 10000)
|
||||
// {
|
||||
// case 0: // Procedure
|
||||
// _MyStepRTB.Font = myStepPanel.ProcFont;// lblTab.Font = myStepPanel.ProcFont;
|
||||
// lblTab.Font = itemInfo.MyTab.MyFont.WindowsFont;
|
||||
// break;
|
||||
// case 1: // Section
|
||||
// _MyStepRTB.Font = myStepPanel.SectFont;// lblTab.Font = myStepPanel.SectFont;
|
||||
// lblTab.Font = itemInfo.MyTab.MyFont.WindowsFont;
|
||||
// break;
|
||||
// case 2: // Steps
|
||||
// _MyStepRTB.Font = myStepPanel.StepFont;//lblTab.Font = myStepPanel.StepFont;
|
||||
// lblTab.Font = itemInfo.MyTab.MyFont.WindowsFont;
|
||||
// MyStepData = itemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[ContentType % 10000];
|
||||
// break;
|
||||
// }
|
||||
// //this.Move += new EventHandler(DisplayItem_Move);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (myStepPanel.MyFont != null) _MyStepRTB.Font = lblTab.Font = myStepPanel.MyFont;
|
||||
// }
|
||||
// if (expand) _MyvlnExpander.ShowExpanded();
|
||||
// MyStepPanel = myStepPanel;
|
||||
// if (itemInfo != null) myStepPanel._LookupEditItems.Add(itemInfo.ItemID, this);
|
||||
// _MyChildRelation = myChildRelation;
|
||||
// if (myParentEditItem != null) RNOLevel = myParentEditItem.RNOLevel;
|
||||
// if (itemInfo != null)
|
||||
// {
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB before _Layout");
|
||||
// MyStepSectionLayoutData = itemInfo.ActiveFormat.MyStepSectionLayoutData;
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB _Layout");
|
||||
// if (myParentEditItem != null)
|
||||
// SeqLevel = myParentEditItem.SeqLevel + ((myChildRelation == ChildRelation.After || myChildRelation == ChildRelation.Before) && itemInfo.IsSequential ? 1 : 0);
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB seqLevel");
|
||||
// MyItemInfo = itemInfo;
|
||||
// MyItemInfo.MyConfig.PropertyChanged += new PropertyChangedEventHandler(MyConfig_PropertyChanged);
|
||||
// }
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB MyItem");
|
||||
// myStepPanel.Controls.Add(this);
|
||||
|
||||
// switch (myChildRelation)
|
||||
// {
|
||||
// case ChildRelation.After:
|
||||
// AddItem(myParentEditItem, ref myParentEditItem._MyAfterEditItems, nextEditItem);
|
||||
// break;
|
||||
// case ChildRelation.Before:
|
||||
// AddItem(myParentEditItem, ref myParentEditItem._MyBeforeEditItems, nextEditItem);
|
||||
// break;
|
||||
// case ChildRelation.RNO:
|
||||
// RNOLevel = myParentEditItem.RNOLevel + 1;
|
||||
// AddItem(myParentEditItem, ref myParentEditItem._MyRNOEditItems, nextEditItem);
|
||||
// break;
|
||||
// case ChildRelation.None:
|
||||
// break;
|
||||
// }
|
||||
// if (itemInfo != null)
|
||||
// {
|
||||
// if (myChildRelation == ChildRelation.None)
|
||||
// {
|
||||
// if (ContentType == 0 && MyStepSectionLayoutData != null)
|
||||
// {
|
||||
// LastMethodsPush(string.Format("SetupRTBItem {0}", MyID));
|
||||
// Width = MyStepPanel.ToDisplay(MyStepSectionLayoutData.WidT);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB Parent");
|
||||
// SetText();
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB SetText");
|
||||
// if (itemInfo != null)
|
||||
// {
|
||||
// Name = string.Format("Item-{0}", itemInfo.ItemID);
|
||||
// SetExpandAndExpander(itemInfo);
|
||||
// if (expand && (itemInfo.MyContent.ContentPartCount != 0)) // If it should expand and it can expand
|
||||
// Expand(true);
|
||||
// else
|
||||
// if (myParentEditItem == null)// If it is the top node
|
||||
// if (ContentType >= 20000) // and it is a step - fully expand
|
||||
// Expand(true);
|
||||
// else // otherwise only expand one level
|
||||
// Expand(false);
|
||||
// }
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB before Controls Add");
|
||||
// //myStepPanel.Controls.Add(this);
|
||||
// int top = FindTop(0);
|
||||
// if (Top < top)
|
||||
// {
|
||||
// LastMethodsPush("SetupRTBItem");
|
||||
// MyStepPanel.ItemMoving++;
|
||||
// Top = top;
|
||||
// MyStepPanel.ItemMoving--;
|
||||
// LastMethodsPop();
|
||||
// }
|
||||
// _Loading = false;
|
||||
// //// TIMING: DisplayItem.TimeIt("CSLARTB Controls Add");
|
||||
//}
|
||||
private void SetupHeader()
|
||||
{
|
||||
SetupHeader(MyItemInfo);
|
||||
@@ -412,16 +266,13 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (MyStepPanel != null && this == MyStepPanel.SelectedEditItem)
|
||||
ScrollToCenter();
|
||||
//MyStepPanel.ScrollControlIntoView(this);
|
||||
}
|
||||
void MyStepRTB_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (MyStepPanel != null && this == MyStepPanel.SelectedEditItem)
|
||||
ScrollToCenter();
|
||||
//MyStepPanel.ScrollControlIntoView(this);
|
||||
}
|
||||
private Label lblHeader = null;
|
||||
private Label lblFooter = null;
|
||||
private void SetupHeaderFooter(ref Label lbl, string name, MetaTag mTag)
|
||||
{
|
||||
if (lbl == null) lbl = new Label();
|
||||
@@ -479,11 +330,9 @@ namespace Volian.Controls.Library
|
||||
if (ed.Type != 0)
|
||||
{
|
||||
ItemInfo ii = ItemInfo.Get(ed.ItemID);
|
||||
//if (MyStepPanel.MyStepTabPanel.MyDisplayTabControl.IsItemInfoProcedureOpen(ii))
|
||||
if (ii != null)
|
||||
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnRefreshEnhancedDocument(new ItemSelectedChangedEventArgs(ii));
|
||||
if (dti != null)
|
||||
dti.MyStepTabPanel.MyDisplayTabControl.OpenItem(this.MyItemInfo);
|
||||
dti?.MyStepTabPanel.MyDisplayTabControl.OpenItem(this.MyItemInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -511,7 +360,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
Cursor tmp = Cursor.Current;
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
int top = TopMostEditItem.Top;// This doesn't work - this is since the last time it was expanded.
|
||||
int topOffset = TopMostEditItem.Top + MyStepPanel.VerticalScroll.Value;
|
||||
Colapsing = true;
|
||||
// Hide Children
|
||||
@@ -519,7 +367,6 @@ namespace Volian.Controls.Library
|
||||
// Adjust Positions
|
||||
int topOffsetAfter = TopMostEditItem.Top + MyStepPanel.VerticalScroll.Value;
|
||||
ExpandPrefix = topOffset - topOffsetAfter;
|
||||
//ExpandSuffix = BottomMostEditItem.Bottom - Bottom;
|
||||
if (topOffsetAfter != topOffset)
|
||||
{
|
||||
LastMethodsPush(string.Format("Colapse {0}", MyID));
|
||||
@@ -569,7 +416,7 @@ namespace Volian.Controls.Library
|
||||
/// <param name="args"></param>
|
||||
private void _MyStepRTB_LinkGoTo(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
_MyLog.DebugFormat("_DisplayRTB_LinkGoTo " + args.LinkInfoText);
|
||||
_MyLog.DebugFormat($"_DisplayRTB_LinkGoTo {args.LinkInfoText}");
|
||||
MyStepPanel.OnLinkClicked(sender, args);
|
||||
}
|
||||
void _MyStepRTB_RoInsert(object sender, StepRTBRoEventArgs args)
|
||||
@@ -603,10 +450,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
MyStepPanel.CursorMovement(this, args.CursorLocation, args.Key);
|
||||
}
|
||||
//private void _MyStepRTB_ModeChange(object sender, StepRTBModeChangeEventArgs args)
|
||||
//{
|
||||
// MyStepPanel.OnModeChange(sender as StepRTB, args);
|
||||
//}
|
||||
void _MyStepRTB_SetMenu(object sender, StepRTBMenuEventArgs args)
|
||||
{
|
||||
if (args.MenuGroup == null)
|
||||
@@ -663,7 +506,6 @@ namespace Volian.Controls.Library
|
||||
foreach (string line in lines)
|
||||
{
|
||||
string lineAdj = Regex.Replace(line, @"\\u....\?", "X"); // Replace Special characters
|
||||
//line2 = Regex.Replace(line2, @"\\.*? ", ""); // Remove RTF Commands - Really should not be any
|
||||
lineAdj = StepRTB.RemoveLinkComments(lineAdj);
|
||||
// MeasureString doesn't work properly if the line include graphics characters.
|
||||
// So, Measure a string of the same length with 'M's.
|
||||
@@ -795,11 +637,10 @@ namespace Volian.Controls.Library
|
||||
bool success = MyStepRTB.OrigDisplayText.Save((RichTextBox)MyStepRTB);
|
||||
if (success)
|
||||
{
|
||||
StepConfig sc = MyStepRTB.MyItemInfo.MyConfig as StepConfig;
|
||||
// if the plant has the change id option, the change id was entered when the program started.
|
||||
// this should be saved for every piece of edited data. Note that the set of config
|
||||
// item Step_MultipleChangeID has the save built in to it.
|
||||
if (sc == null) sc = new StepConfig();
|
||||
if (!(MyStepRTB.MyItemInfo.MyConfig is StepConfig sc)) sc = new StepConfig();
|
||||
if (MyStepRTB.MyItemInfo.IsStep &&
|
||||
MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds
|
||||
&& !this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.EditorialChange)
|
||||
@@ -884,7 +725,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public override void IdentifyMe(bool highlight)
|
||||
{
|
||||
//this.BringToFront(); // B2017-187 when called all the time, slows down the display of step and confuses the scroll bar
|
||||
if (highlight)
|
||||
{
|
||||
MyStepRTB.BringToFront(); // B2017-187 when called all the time, slows down the display of step and confuses the scroll bar
|
||||
@@ -931,7 +771,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
_MyLog.WarnFormat("Attempt to give Focus to Disposed Object {0}", MyID);
|
||||
}
|
||||
// if (CanExpand) AutoExpand(); // Expand the item if you can
|
||||
ScrollToCenter();
|
||||
}
|
||||
/// <summary>
|
||||
@@ -942,18 +781,9 @@ namespace Volian.Controls.Library
|
||||
_MyStepRTB.Focus();
|
||||
ScrollToCenter();
|
||||
}
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg)
|
||||
{
|
||||
return MyStepRTB.ReplaceText(rpltxt, fndstr, caseSensitive, matchWholeWord, reverse, prompt, fndrpldlg);
|
||||
}
|
||||
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse)
|
||||
{
|
||||
return MyStepRTB.FindText(str, caseSensitive, matchWholeWord, reverse);
|
||||
}
|
||||
public override void PositionToEnd()
|
||||
{
|
||||
MyStepRTB.SelectionStart = MyStepRTB.Text.Length;
|
||||
}
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg) => MyStepRTB.ReplaceText(rpltxt, fndstr, caseSensitive, matchWholeWord, reverse, prompt, fndrpldlg);
|
||||
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse) => MyStepRTB.FindText(str, caseSensitive, matchWholeWord, reverse);
|
||||
public override void PositionToEnd() => MyStepRTB.SelectionStart = MyStepRTB.Text.Length;
|
||||
public override void PositionToStart()
|
||||
{
|
||||
return;
|
||||
@@ -973,41 +803,21 @@ namespace Volian.Controls.Library
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public override bool SpellCheckNext()
|
||||
{
|
||||
return MyStepRTB.SpellCheckNext();
|
||||
}
|
||||
public override void SetActive()
|
||||
{
|
||||
MyStepRTB.BackColor = MyStepPanel.ActiveColor;
|
||||
}
|
||||
public override bool SpellCheckNext() => MyStepRTB.SpellCheckNext();
|
||||
public override void SetActive() => MyStepRTB.BackColor = MyStepPanel.ActiveColor;
|
||||
public override bool Empty
|
||||
{
|
||||
get
|
||||
{
|
||||
// Console.WriteLine("step rtb is dirty {0} and rtf is {1}", MyStepRTB.IsDirty, MyStepRTB.Rtf);
|
||||
// string txt = MyStepRTB.Text;
|
||||
// Console.WriteLine("step rtb is dirty {0} and rtf is {1}", MyStepRTB.IsDirty, MyStepRTB.Rtf);
|
||||
// return txt == "";
|
||||
//return MyStepRTB.IsEmpty;
|
||||
return MyStepRTB.Text == "";
|
||||
}
|
||||
set { MyStepRTB.Text = value ? "" : " "; }
|
||||
}
|
||||
//public override bool IsEmpty() // this becomes 'Empty' property, i.e. get/set.
|
||||
//{ // for the set, emtpy is following line (= not ==).
|
||||
// // for not empty - it's code that is in 'MakeNotEmpty'
|
||||
// return MyStepRTB.Text == "";
|
||||
//}
|
||||
//public override void MakeNotEmpty()
|
||||
//{
|
||||
// MyStepRTB.Text = " ";
|
||||
//}
|
||||
public override void RefreshDisplay(bool activeMode)
|
||||
{
|
||||
MyStepRTB.VwMode = MyStepPanel.VwMode;
|
||||
MyStepRTB.RefreshDisplay(activeMode);
|
||||
//MyStepRTB.ViewRTB = !activeMode;
|
||||
}
|
||||
public override void ToggleEditView(E_ViewMode vwMode)
|
||||
{
|
||||
@@ -1026,8 +836,7 @@ namespace Volian.Controls.Library
|
||||
public override void SetupHeader(ItemInfo itemInfo)
|
||||
{
|
||||
lblTab.Top = 3 + ((itemInfo.HasHeader) ? 23 : 0);
|
||||
_MyStepRTB.Top = lblTab.Top; // 3 + ((itemInfo.HasHeader) ? 23 : 0);
|
||||
//lblTab.Move += new EventHandler(lblTab_Move);
|
||||
_MyStepRTB.Top = lblTab.Top;
|
||||
if (itemInfo.HasHeader)
|
||||
SetupHeaderFooter(ref lblHeader, "Header", itemInfo.MyHeader);
|
||||
else
|
||||
@@ -1037,10 +846,7 @@ namespace Volian.Controls.Library
|
||||
lblHeader = null;
|
||||
}
|
||||
}
|
||||
public override void ShowExpanded()
|
||||
{
|
||||
_MyvlnExpander.ShowExpanded();
|
||||
}
|
||||
public override void ShowExpanded() => _MyvlnExpander.ShowExpanded();
|
||||
/// <summary>
|
||||
/// Sets the Item and as a result the text for the RichTextBox
|
||||
/// </summary>
|
||||
@@ -1078,10 +884,7 @@ namespace Volian.Controls.Library
|
||||
break;
|
||||
}
|
||||
}
|
||||
public override void SaveCurrentAndContents()
|
||||
{
|
||||
SaveContents();
|
||||
}
|
||||
public override void SaveCurrentAndContents() => SaveContents();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Drawing;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
public static class RomanNumeral
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private enum RomanOffset : int
|
||||
{
|
||||
Hundreds = 2,
|
||||
Tens = 4,
|
||||
Units = 6
|
||||
}
|
||||
private static string _Romans = "MDCLXVI";
|
||||
private static readonly string _Romans = "MDCLXVI";
|
||||
private static string RomanPart(RomanOffset offset, int value)
|
||||
{
|
||||
int iFive = value / 5;
|
||||
@@ -34,21 +29,5 @@ namespace Volian.Controls.Library
|
||||
RomanPart(RomanOffset.Tens, tens) +
|
||||
RomanPart(RomanOffset.Units, units);
|
||||
}
|
||||
// private static int[] _TestRomans = new int[] {
|
||||
// 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,30,40,50,60,69,70,80,90,99,
|
||||
// 100,200,400,500,600,666,700,800,900,1000,1444,1666,1945,1997,1999,2000,2007,3000
|
||||
// };
|
||||
// public static void ShowRomans()
|
||||
// {
|
||||
// for (int i = 0; i < _TestRomans.Length; i++)
|
||||
// {
|
||||
// if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", _TestRomans[i], Convert(_TestRomans[i]));
|
||||
// }
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", 4, Convert(4));
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", 5, Convert(5));
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", 6, Convert(6));
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", 8, Convert(8));
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", 9, Convert(9));
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Base.Library;
|
||||
@@ -13,17 +9,8 @@ namespace Volian.Controls.Library
|
||||
public partial class RtfRawItem : EditItem
|
||||
{
|
||||
#region IEditItem
|
||||
public override StepRTB MyStepRTB
|
||||
{
|
||||
get { return _MyStepRTB; }
|
||||
}
|
||||
public override int TableWidth
|
||||
{
|
||||
get
|
||||
{
|
||||
return (int)_MyStepRTB.Width + RtfRawMargin;
|
||||
}
|
||||
}
|
||||
public override StepRTB MyStepRTB => _MyStepRTB;
|
||||
public override int TableWidth => (int)_MyStepRTB.Width + RtfRawMargin;
|
||||
/// <summary>
|
||||
/// The left edge of the Tab (no visible tab, but use this for EditItem interfacing
|
||||
/// </summary>
|
||||
@@ -62,7 +49,7 @@ namespace Volian.Controls.Library
|
||||
Width = value + lblTab.Left + lblTab.Width;
|
||||
}
|
||||
}
|
||||
public override int BorderWidth { get { return (_MyStepRTB.Width - _MyStepRTB.ClientRectangle.Width); } }
|
||||
public override int BorderWidth => (_MyStepRTB.Width - _MyStepRTB.ClientRectangle.Width);
|
||||
/// <summary>
|
||||
/// Location of the RichTextBox
|
||||
/// </summary>
|
||||
@@ -99,20 +86,14 @@ namespace Volian.Controls.Library
|
||||
_MyToolTip.SetSuperTooltip(MyStepRTB, tpi);
|
||||
ToolTipOnOff(); // B2025-050 Show the tooltip based on User Options Settings
|
||||
}
|
||||
public override void ToolTipOnOff()
|
||||
{
|
||||
_MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings
|
||||
}
|
||||
public override void ToolTipOnOff() => _MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings
|
||||
public override void RefreshContent()
|
||||
{
|
||||
IdentifyMe(false);
|
||||
MyStepRTB.Rtf = MyItemInfo.MyContent.Text;
|
||||
RefreshDisplay(false);
|
||||
}
|
||||
public override void RefreshOrdinal()
|
||||
{
|
||||
TabFormat = null;
|
||||
}
|
||||
public override void RefreshOrdinal() => TabFormat = null;
|
||||
public override void HandleResize() {}
|
||||
public override void MatchExpanded() {}
|
||||
public override void ItemSelect()
|
||||
@@ -136,10 +117,7 @@ namespace Volian.Controls.Library
|
||||
_MyStepRTB.Focus();
|
||||
ScrollToCenter();
|
||||
}
|
||||
public override void SetActive()
|
||||
{
|
||||
this.BackColor = MyStepPanel.ActiveColor;
|
||||
}
|
||||
public override void SetActive() => this.BackColor = MyStepPanel.ActiveColor;
|
||||
public override void SetText()
|
||||
{
|
||||
LastMethodsPush("SetText");
|
||||
@@ -150,14 +128,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
LastMethodsPop();
|
||||
}
|
||||
public override void SetExpandAndExpander(ItemInfo itemInfo)
|
||||
{
|
||||
CanExpand = false;
|
||||
}
|
||||
public override void SaveCurrentAndContents()
|
||||
{
|
||||
SaveContents();
|
||||
}
|
||||
public override void SetExpandAndExpander(ItemInfo itemInfo) => CanExpand = false;
|
||||
public override void SaveCurrentAndContents() => SaveContents();
|
||||
public override void RefreshDisplay(bool activeMode)
|
||||
{
|
||||
MyStepRTB.VwMode = MyStepPanel.VwMode;
|
||||
@@ -177,12 +149,9 @@ namespace Volian.Controls.Library
|
||||
Width = sz.Width;
|
||||
Height = _MyStepRTB.Height + _MyStepRTB.Top + 7;
|
||||
ItemWidth = Width;
|
||||
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling(true);
|
||||
}
|
||||
public override void ToggleEditView(E_ViewMode vwMode)
|
||||
{
|
||||
SaveContents();
|
||||
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling();
|
||||
}
|
||||
public override void ToggleEditView(E_ViewMode vwMode) => SaveContents();
|
||||
public override string TabFormat
|
||||
{
|
||||
get { return null; }
|
||||
@@ -204,14 +173,8 @@ namespace Volian.Controls.Library
|
||||
public override Point TabLocation { get { return lblTab.Location; } }
|
||||
public override Font ContentFont { get { return MyStepRTB.Font; } set { /*MyStepRTB.Font = value*/; } }
|
||||
public override float ContentTop { get { return MyStepRTB.Top; } }
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg)
|
||||
{
|
||||
return DialogResult.OK;
|
||||
}
|
||||
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg) => DialogResult.OK;
|
||||
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse) => false;
|
||||
public override void PositionToEnd()
|
||||
{
|
||||
return;
|
||||
@@ -220,14 +183,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
return;
|
||||
}
|
||||
public override string SelectedTextForFind
|
||||
{
|
||||
get {return null;}
|
||||
}
|
||||
public override bool SpellCheckNext()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override string SelectedTextForFind => null;
|
||||
public override bool SpellCheckNext() => false;
|
||||
public override bool Empty
|
||||
{
|
||||
get
|
||||
@@ -236,10 +193,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
set { _MyStepRTB.Text = value ? "" : " "; }
|
||||
}
|
||||
public override void RefreshTab()
|
||||
{
|
||||
TabFormat = null;
|
||||
}
|
||||
public override void RefreshTab() => TabFormat = null;
|
||||
public override void SetupHeader(ItemInfo itemInfo)
|
||||
{
|
||||
return;
|
||||
@@ -247,16 +201,11 @@ namespace Volian.Controls.Library
|
||||
public override void ShowExpanded() {}
|
||||
#endregion
|
||||
#region Properties
|
||||
private static int _RtfRawMargin = 6; // make it a little bigger than rtbitems so it can be seen
|
||||
/// <summary>
|
||||
/// Margin between the EditItem and the RtfRawItem. Appears on the Right.
|
||||
/// Will allow space to draw a Change Bar on the right side of the EditItem.
|
||||
/// </summary>
|
||||
public static int RtfRawMargin
|
||||
{
|
||||
get { return _RtfRawMargin; }
|
||||
set { _RtfRawMargin = value; }
|
||||
}
|
||||
public static int RtfRawMargin { get; set; } = 6;
|
||||
#endregion
|
||||
#region Constructors
|
||||
public RtfRawItem()
|
||||
@@ -315,11 +264,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region EventHandlers
|
||||
void RtfRawItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
//if (MyStepPanel.DisplayItemChanging) return;
|
||||
MyStepPanel.SelectedEditItem = this;
|
||||
}
|
||||
void RtfRawItem_Click(object sender, EventArgs e) => MyStepPanel.SelectedEditItem = this;
|
||||
private void _MyStepRTB_HeightChanged(object sender, EventArgs args)
|
||||
{
|
||||
if (this.Height != _MyStepRTB.Height + _MyStepRTB.Top + 7) // add in 7 to make it look good // + 10)
|
||||
@@ -351,10 +296,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Methods
|
||||
public override void SetFocus()
|
||||
{
|
||||
MyStepRTB.Focus();
|
||||
}
|
||||
public override void SetFocus() => MyStepRTB.Focus();
|
||||
public override void SaveContents()
|
||||
{
|
||||
SaveText();
|
||||
@@ -379,26 +321,27 @@ namespace Volian.Controls.Library
|
||||
_origBitmap = GetBitmap(res);
|
||||
MyStepRTB.ClearUndo();
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
//MessageBox.Show("The data could not be saved.", "Object Save", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
}
|
||||
public System.Drawing.Bitmap GetBitmap(string rtf)
|
||||
{
|
||||
Bitmap bmap = null;
|
||||
Bitmap bmap;
|
||||
try
|
||||
{
|
||||
System.Drawing.Size sz = RtfRawItem.GetRtfRawSize(rtf);
|
||||
Volian.Controls.Library.RTF myRtb = new RTF();
|
||||
myRtb.Size = sz;
|
||||
myRtb.Rtf = rtf;
|
||||
Volian.Controls.Library.RTF myRtb = new RTF
|
||||
{
|
||||
Size = sz,
|
||||
Rtf = rtf
|
||||
};
|
||||
bmap = new System.Drawing.Bitmap((int)sz.Width, (int)sz.Height);
|
||||
System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmap);
|
||||
myRtb.RenderClipped(gr, new System.Drawing.Rectangle(0, 0, (int)sz.Width, (int)sz.Height));
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -478,14 +421,8 @@ namespace Volian.Controls.Library
|
||||
if (MyStepPanel != null && this == MyStepPanel.SelectedEditItem)
|
||||
ScrollToCenter();
|
||||
}
|
||||
private void MyStepRTB_CursorKeyPress(object sender, KeyEventArgs args)
|
||||
{
|
||||
MyStepPanel.StepCursorKeys(this, args);
|
||||
}
|
||||
private void MyStepRTB_CursorMovement(object sender, StepRTBCursorMovementEventArgs args)
|
||||
{
|
||||
MyStepPanel.CursorMovement(this, args.CursorLocation, args.Key);
|
||||
}
|
||||
private void MyStepRTB_CursorKeyPress(object sender, KeyEventArgs args) => MyStepPanel.StepCursorKeys(this, args);
|
||||
private void MyStepRTB_CursorMovement(object sender, StepRTBCursorMovementEventArgs args) => MyStepPanel.CursorMovement(this, args.CursorLocation, args.Key);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using System.Drawing;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
@@ -16,29 +13,14 @@ namespace Volian.Controls.Library
|
||||
public partial class StepPanel : Panel
|
||||
{
|
||||
#region Fields
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
/// <summary>
|
||||
/// Procedure Item Info - Top ItemInfo
|
||||
/// </summary>
|
||||
private ItemInfo _MyProcedureItemInfo;
|
||||
private E_ViewMode _VwMode = E_ViewMode.Edit;
|
||||
public E_ViewMode VwMode
|
||||
{
|
||||
get { return _VwMode; }
|
||||
set { _VwMode = value; }
|
||||
}
|
||||
private EditItem _TopMostEditItem = null;
|
||||
public EditItem TopMostEditItem
|
||||
{
|
||||
get { return _TopMostEditItem; }
|
||||
set { _TopMostEditItem = value; }
|
||||
}
|
||||
private ItemInfo _ExpandingHLS = null;
|
||||
public ItemInfo ExpandingHLS
|
||||
{
|
||||
get { return _ExpandingHLS; }
|
||||
set { _ExpandingHLS = value; }
|
||||
}
|
||||
|
||||
public E_ViewMode VwMode { get; set; } = E_ViewMode.Edit;
|
||||
public EditItem TopMostEditItem { get; set; } = null;
|
||||
public ItemInfo ExpandingHLS { get; set; } = null;
|
||||
// TODO: This is not correct. There should be a dictionary of Section Layouts
|
||||
/// <summary>
|
||||
/// Lookup Table to convert ItemInfo.ItemID to EditItem
|
||||
@@ -60,16 +42,9 @@ namespace Volian.Controls.Library
|
||||
_ApplDisplayMode = value;
|
||||
foreach (Control c in Controls)
|
||||
{
|
||||
EditItem ei = c as EditItem;
|
||||
if (ei != null)
|
||||
if (c is EditItem ei)
|
||||
{
|
||||
ei.Enabled = ei.MyItemInfo.IsApplicable(value);
|
||||
//IItemConfig cfg = ei.MyItemInfo.MyConfig as IItemConfig;
|
||||
//List<int> apples = cfg.MasterSlave_Applicability.GetFlags();
|
||||
//if (value == -1 || apples.Count == 0)
|
||||
// ei.Enabled = true;
|
||||
//else
|
||||
// ei.Enabled = apples.Contains(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,24 +53,14 @@ namespace Volian.Controls.Library
|
||||
/// Currently selected ItemInfo
|
||||
/// </summary>
|
||||
internal ItemInfo _SelectedItemInfo;
|
||||
private int _ItemMoving = 0;
|
||||
private StepPanelSettings _MyStepPanelSettings;
|
||||
private int _MaxRNO = -1; // TODO: Need to calculate MaxRNO on a section basis rather than for a panel
|
||||
private Font _MyFont = null;
|
||||
private Font _ProcFont = new Font("Arial", 12, FontStyle.Bold);
|
||||
private Font _SectFont = new Font("Arial", 10, FontStyle.Bold);
|
||||
private Font _StepFont = new Font("Arial", 10);
|
||||
private Color _ActiveColor = Color.SkyBlue;
|
||||
private Color _InactiveColor = Color.Linen;
|
||||
private Color _AnnotationColor = Color.FromArgb(255, 255, 128);
|
||||
private Color _TabColor = Color.Beige;
|
||||
private Color _PanelColor = Color.LightGray;
|
||||
// Whether panel is in view or edit mode. Toggled from steprtb
|
||||
// or set based on approval/multi-user (these two will be done
|
||||
// later.
|
||||
//public E_ViewMode PanelViewEditMode = E_ViewMode.Edit;
|
||||
internal string _LastAdjust="";
|
||||
private bool _ShowLines = true;
|
||||
private Graphics _MyGraphics = null;
|
||||
private int _DPI = 0;
|
||||
#endregion
|
||||
@@ -111,7 +76,7 @@ namespace Volian.Controls.Library
|
||||
/// <param name="args"></param>
|
||||
internal void OnItemClick(object sender, StepPanelEventArgs args)
|
||||
{
|
||||
if (ItemClick != null) ItemClick(sender, args);
|
||||
ItemClick?.Invoke(sender, args);
|
||||
}
|
||||
public bool ItemSelectionChangeShown = false; // This keeps OnItemSelectedChanged from being called twice when an item is selected.
|
||||
/// <summary>
|
||||
@@ -127,7 +92,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ItemSelectionChangeShown = true;//Remember that you have run already
|
||||
//vlnStackTrace.ShowStack(string.Format("OnItemSelectedChanged {0}",args.MyItemInfo.ItemID));
|
||||
if (ItemSelectedChanged != null) ItemSelectedChanged(sender, args);
|
||||
ItemSelectedChanged?.Invoke(sender, args);
|
||||
}
|
||||
/// <summary>
|
||||
/// Occurs when the user clicks on the Attachment Expander
|
||||
@@ -143,39 +108,17 @@ namespace Volian.Controls.Library
|
||||
if (AttachmentClicked != null) AttachmentClicked(sender, args);
|
||||
else FlexibleMessageBox.Show(args.MyEditItem.MyItemInfo.MyContent.MyEntry.MyDocument.DocumentTitle, "Unhandled Attachment Click", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
// Edit/View mode change
|
||||
//public event StepPanelModeChangeEvent ModeChange;
|
||||
//internal void OnModeChange(object sender, StepRTBModeChangeEventArgs args)
|
||||
//{
|
||||
// PanelViewEditMode = args.ViewMode;
|
||||
// ModeChange(sender, args);
|
||||
//}
|
||||
// various selections from steptabribbon that need to filter up to frmveproms
|
||||
// such as 'global search', 'bookmarks'
|
||||
public event StepPanelTabDisplayEvent TabDisplay;
|
||||
internal void OnTabDisplay(object sender, StepPanelTabDisplayEventArgs args)
|
||||
{
|
||||
TabDisplay(sender, args);
|
||||
}
|
||||
internal void OnTabDisplay(object sender, StepPanelTabDisplayEventArgs args) => TabDisplay(sender, args);
|
||||
// close section, if deleting word doc section
|
||||
public event StepPanelWordSectionCloseEvent WordSectionClose;
|
||||
internal void OnWordSectionClose(object sender, WordSectionEventArgs args)
|
||||
{
|
||||
WordSectionClose(sender, args);
|
||||
}
|
||||
internal void OnWordSectionClose(object sender, WordSectionEventArgs args) => WordSectionClose(sender, args);
|
||||
// if section deleted, have event to flag in other UI panels
|
||||
public event StepPanelWordSectionDeletedEvent WordSectionDeleted;
|
||||
internal void OnWordSectionDeleted(object sender, WordSectionEventArgs args)
|
||||
{
|
||||
WordSectionDeleted(sender, args);
|
||||
}
|
||||
internal void OnWordSectionDeleted(object sender, WordSectionEventArgs args) => WordSectionDeleted(sender, args);
|
||||
// if item pasted, have event to flag in other UI panels
|
||||
public event StepPanelItemPastedEvent ItemPasted;
|
||||
internal void OnItemPasted(object sender, vlnTreeItemInfoPasteEventArgs args)
|
||||
{
|
||||
ItemPasted(sender, args);
|
||||
}
|
||||
internal void OnItemPasted(object sender, vlnTreeItemInfoPasteEventArgs args) => ItemPasted(sender, args);
|
||||
#endregion
|
||||
#region Link Events
|
||||
/// <summary>
|
||||
@@ -274,16 +217,15 @@ namespace Volian.Controls.Library
|
||||
this.BackColorChanged += new EventHandler(StepPanel_BackColorChanged);
|
||||
if (VlnSettings.DebugMode)
|
||||
{
|
||||
_InactiveColor = Color.Linen;
|
||||
_TabColor = Color.Beige;
|
||||
InactiveColor = Color.Linen;
|
||||
TabColor = Color.Beige;
|
||||
_PanelColor = Color.LightGray;
|
||||
this.Paint += new PaintEventHandler(StepPanel_Paint);
|
||||
this.DoubleClick += new EventHandler(StepPanel_DoubleClick); // Toggles Vertical lines on and off
|
||||
}
|
||||
else
|
||||
{
|
||||
_InactiveColor = Color.White;
|
||||
_TabColor = Color.White;
|
||||
InactiveColor = Color.White;
|
||||
TabColor = Color.White;
|
||||
_PanelColor = Color.White;
|
||||
this.BackColor = Color.White;
|
||||
}
|
||||
@@ -301,9 +243,8 @@ namespace Volian.Controls.Library
|
||||
InactiveColor = PanelColor = BackColor;
|
||||
foreach (Control ctrl in Controls)
|
||||
{
|
||||
if (ctrl is EditItem)
|
||||
if (ctrl is EditItem ei)
|
||||
{
|
||||
EditItem ei = (EditItem)ctrl;
|
||||
ei.BackColor = BackColor;
|
||||
}
|
||||
}
|
||||
@@ -323,9 +264,8 @@ namespace Volian.Controls.Library
|
||||
if (_LookupEditItems.ContainsKey(id)) // Expanding Parent should have added it to _LookupEditItems
|
||||
{
|
||||
EditItem itm = _LookupEditItems[id];
|
||||
ItemInfo ii = myItemInfo.ActiveParent as ItemInfo;
|
||||
if (itm.Visible == false && ii != null)
|
||||
ExpandAsNeeded((ItemInfo)myItemInfo.ActiveParent);
|
||||
if (!itm.Visible && myItemInfo.ActiveParent is ItemInfo ii)
|
||||
ExpandAsNeeded(ii);
|
||||
itm.AutoExpand(); // Expand it if it should expand
|
||||
}
|
||||
}
|
||||
@@ -342,19 +282,10 @@ namespace Volian.Controls.Library
|
||||
get { return _MyProcedureItemInfo; }
|
||||
set
|
||||
{
|
||||
//// TIMING: DisplayItem.TimeIt("pMyItem Start");
|
||||
_MyProcedureItemInfo = value;
|
||||
//// TIMING: DisplayItem.TimeIt("pMyItem Layout");
|
||||
//this.Layout += new LayoutEventHandler(DisplayPanel_Layout);
|
||||
//this.Scroll += new ScrollEventHandler(DisplayPanel_Scroll);
|
||||
//// TIMING: DisplayItem.TimeIt("pMyItem Scroll");
|
||||
Controls.Clear();
|
||||
_LookupEditItems = new Dictionary<int, EditItem>();
|
||||
//// TIMING: DisplayItem.TimeIt("pMyItem Clear");
|
||||
//SuspendLayout();
|
||||
new RTBItem(_MyProcedureItemInfo, this, null, ChildRelation.None, false);
|
||||
//ResumeLayout();
|
||||
//// TIMING: DisplayItem.TimeIt("pMyItem End");
|
||||
}
|
||||
}
|
||||
public bool AutoExpand
|
||||
@@ -369,8 +300,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public void Reset()
|
||||
{
|
||||
ItemInfo parent = SelectedItemInfo.ActiveParent as ItemInfo;
|
||||
if (parent != null) ItemInfo.ResetParts(parent.ItemID); // Force data to reload
|
||||
if (SelectedItemInfo.ActiveParent is ItemInfo parent) ItemInfo.ResetParts(parent.ItemID); // Force data to reload
|
||||
else ItemInfo.ResetParts(SelectedItemInfo.ItemID);
|
||||
// The following line actually reloads the procedure item
|
||||
MyProcedureItemInfo = MyProcedureItemInfo; // see get/set above. - Load Procedure and Sections
|
||||
@@ -379,8 +309,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public void Reset(ItemInfo myItemInfo)
|
||||
{
|
||||
ItemInfo parent = myItemInfo.ActiveParent as ItemInfo;
|
||||
if (parent != null) ItemInfo.ResetParts(parent.ItemID); // Force data to reload
|
||||
if (myItemInfo.ActiveParent is ItemInfo parent) ItemInfo.ResetParts(parent.ItemID); // Force data to reload
|
||||
else ItemInfo.ResetParts(myItemInfo.ItemID);
|
||||
// The following line actually reloads the procedure item
|
||||
MyProcedureItemInfo = MyProcedureItemInfo; // see get/set above. - Load Procedure and Sections
|
||||
@@ -406,16 +335,6 @@ namespace Volian.Controls.Library
|
||||
// The following line expands the items needed to display SelectedItemInfo
|
||||
ExpandAsNeeded(SelectedItemInfo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Currently selected StepRTB
|
||||
/// </summary>
|
||||
//private StepRTB _SelectedStepRTB = null;
|
||||
//public StepRTB SelectedStepRTB
|
||||
//{
|
||||
// get { return _SelectedStepRTB; }
|
||||
// set { _SelectedStepRTB=value;}
|
||||
//}
|
||||
/// <summary>
|
||||
/// Gets or Sets the SelectedItemInfo
|
||||
/// Activates and Expands as necessary
|
||||
@@ -435,7 +354,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ExpandAsNeeded(itemInfo);
|
||||
if (_SelectedItemInfo == null) _SelectedItemInfo = itemInfo;
|
||||
//if (!_LookupEditItems.ContainsKey(itemInfo.ItemID)) Reset();
|
||||
if (itemInfo.Moving)
|
||||
{
|
||||
Reset(itemInfo);
|
||||
@@ -445,12 +363,8 @@ namespace Volian.Controls.Library
|
||||
if (!_LookupEditItems.ContainsKey(itemInfo.ItemID)) return null;
|
||||
return _LookupEditItems[itemInfo.ItemID];
|
||||
}
|
||||
private bool _DisplayItemChanging = false;
|
||||
public bool DisplayItemChanging
|
||||
{
|
||||
get { return _DisplayItemChanging; }
|
||||
set { _DisplayItemChanging = value; }
|
||||
}
|
||||
|
||||
public bool DisplayItemChanging { get; set; } = false;
|
||||
/// <summary>
|
||||
/// Returns the SelectedEditItem
|
||||
/// </summary>
|
||||
@@ -460,14 +374,13 @@ namespace Volian.Controls.Library
|
||||
get
|
||||
{
|
||||
return _SelectedEditItem;
|
||||
//return (_SelectedItemInfo != null) ? _LookupEditItems[_SelectedItemInfo.ItemID] : null;
|
||||
}
|
||||
set
|
||||
{
|
||||
EditItem newFocus = null; // B2018-152 when empty step is deleted, will contain the new step element focus
|
||||
bool deletingParent = false; // B2018-152 used to tell us user clicked on subtep of step element who's text was removed (special case)
|
||||
EditItem lastEI = _SelectedEditItem;
|
||||
if (value != null) value.SetActive(); // Set the active color
|
||||
value?.SetActive(); // Set the active color
|
||||
if (lastEI == value) return; // Same - No Change
|
||||
// B2018-002 - Invalid Transitions - If the current step contains an invalid transition convert it to text
|
||||
if(value != null) ItemInfo.ConvertInvalidTransitionsToText(value.MyItemInfo);
|
||||
@@ -486,16 +399,16 @@ namespace Volian.Controls.Library
|
||||
string msg3 = "Select NO to keep the empty step which can be restored via the History tab on the Step Properties panel.";
|
||||
if (value != null && value.MyItemInfo.HasAncestor(lastEI.MyItemInfo))
|
||||
{
|
||||
msg1 = "This step does not have text but you had selected one of its substeps. " + msg1;
|
||||
msg2 = msg2 + " including the substep you had selected. You will be placed at the next location.";
|
||||
msg1 = $"This step does not have text but you had selected one of its substeps. {msg1}";
|
||||
msg2 += " including the substep you had selected. You will be placed at the next location.";
|
||||
deletingParent = true; // B2018-152 this will tell us that the user selected a substep of a parent being deleted
|
||||
}
|
||||
else
|
||||
{
|
||||
msg1 = "This step does not have text but has substeps. " + msg1;
|
||||
msg2 = msg2 + " and its substeps.";
|
||||
msg1 = $"This step does not have text but has substeps. {msg1}";
|
||||
msg2 += " and its substeps.";
|
||||
}
|
||||
DialogResult result = FlexibleMessageBox.Show(msg1 + "\n\n" + msg2 + "\n\n" + msg3, "Verify Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
DialogResult result = FlexibleMessageBox.Show($"{msg1}\n\n{msg2}\n\n{msg3}", "Verify Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (result == DialogResult.No) shouldDelete = false;
|
||||
}
|
||||
}
|
||||
@@ -504,16 +417,14 @@ namespace Volian.Controls.Library
|
||||
// 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;
|
||||
if (lastEI.MyItemInfo.MyConfig is StepConfig sc) 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 (lastEI.MyItemInfo.MyConfig is SectionConfig sec)
|
||||
{
|
||||
if (sec.Section_LnkEnh == "Y") eds = sec.MyEnhancedDocuments;
|
||||
else lastEI.MyItemInfo.ClearEnhancedSectionLink();
|
||||
@@ -593,8 +504,7 @@ namespace Volian.Controls.Library
|
||||
SelectedItemInfo = value.MyItemInfo;
|
||||
}
|
||||
}
|
||||
if (lastEI != null)
|
||||
lastEI.IdentifyMe(false);
|
||||
lastEI?.IdentifyMe(false);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
@@ -608,20 +518,13 @@ namespace Volian.Controls.Library
|
||||
OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(SelectedEditItem));
|
||||
}
|
||||
}
|
||||
public new void MouseWheel(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseWheel(e);
|
||||
}
|
||||
public new void MouseWheel(MouseEventArgs e) => base.OnMouseWheel(e);
|
||||
/// <summary>
|
||||
/// Used to track movement other than scrolling
|
||||
/// 0 - Indicates no other movement
|
||||
/// > 0 - Indicates that other movement is happening
|
||||
/// </summary>
|
||||
public int ItemMoving
|
||||
{
|
||||
get { return _ItemMoving; }
|
||||
set { _ItemMoving = value; }
|
||||
}
|
||||
public int ItemMoving { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Lazy loaded StepPanelSettings
|
||||
/// </summary>
|
||||
@@ -640,32 +543,20 @@ namespace Volian.Controls.Library
|
||||
public Font MyFont
|
||||
{
|
||||
get { return _MyFont; }
|
||||
set { _ProcFont = _SectFont = _StepFont = _MyFont = value; }
|
||||
set { ProcFont = SectFont = StepFont = _MyFont = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets or sets the font for the Procedure Text
|
||||
/// </summary>
|
||||
public Font ProcFont
|
||||
{
|
||||
get { return _ProcFont; }
|
||||
set { _ProcFont = value; }
|
||||
}
|
||||
public Font ProcFont { get; set; } = new Font("Arial", 12, FontStyle.Bold);
|
||||
/// <summary>
|
||||
/// Gets or sets the font for the Section Text
|
||||
/// </summary>
|
||||
public Font SectFont
|
||||
{
|
||||
get { return _SectFont; }
|
||||
set { _SectFont = value; }
|
||||
}
|
||||
public Font SectFont { get; set; } = new Font("Arial", 10, FontStyle.Bold);
|
||||
/// <summary>
|
||||
/// Gets or sets the Step Font
|
||||
/// </summary>
|
||||
public Font StepFont
|
||||
{
|
||||
get { return _StepFont; }
|
||||
set { _StepFont = value; }
|
||||
}
|
||||
public Font StepFont { get; set; } = new Font("Arial", 10);
|
||||
/// <summary>
|
||||
/// Gets or Sets the Active Color for the Panel
|
||||
/// </summary>
|
||||
@@ -682,27 +573,15 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Gets or Sets the Annotation backcolor for StepRTBs in the Panel
|
||||
/// </summary>
|
||||
public Color AnnotationColor
|
||||
{
|
||||
get { return _AnnotationColor; }
|
||||
set { _AnnotationColor = value; }
|
||||
}
|
||||
public Color AnnotationColor { get; set; } = Color.FromArgb(255, 255, 128);
|
||||
/// <summary>
|
||||
/// Gets or sets the InActive Color for the Panel
|
||||
/// </summary>
|
||||
public Color InactiveColor
|
||||
{
|
||||
get { return _InactiveColor; }
|
||||
set { _InactiveColor = value; }
|
||||
}
|
||||
public Color InactiveColor { get; set; } = Color.Linen;
|
||||
/// <summary>
|
||||
/// Gets or sets the Tab Color
|
||||
/// </summary>
|
||||
public Color TabColor
|
||||
{
|
||||
get { return _TabColor; }
|
||||
set { _TabColor = value; }
|
||||
}
|
||||
public Color TabColor { get; set; } = Color.Beige;
|
||||
/// <summary>
|
||||
/// Gets or sets the Panel Color
|
||||
/// </summary>
|
||||
@@ -744,34 +623,20 @@ namespace Volian.Controls.Library
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public int ToDisplay(int value)
|
||||
{
|
||||
//return (DPI * value) / 864;
|
||||
return (DPI * value) / 72;
|
||||
}
|
||||
public int ToDisplay(float? value)
|
||||
{
|
||||
//return (DPI * value) / 864;
|
||||
return (int)(DPI * (value??0)) / 72;
|
||||
}
|
||||
public int ToDisplay(int value) => (DPI * value) / 72;
|
||||
public int ToDisplay(float? value) => (int)(DPI * (value ?? 0)) / 72;
|
||||
/// <summary>
|
||||
/// Converts an integer? value from Twips to Pixels
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public int ToDisplay(int? value)
|
||||
{
|
||||
return ToDisplay((int)value);
|
||||
}
|
||||
public int ToDisplay(int? value) => ToDisplay((int)value);
|
||||
/// <summary>
|
||||
/// Converts an string value from Twips to Pixels
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public int ToDisplay(string value)
|
||||
{
|
||||
return ToDisplay(Convert.ToSingle(value));
|
||||
}
|
||||
public int ToDisplay(string value) => ToDisplay(Convert.ToSingle(value));
|
||||
/// <summary>
|
||||
/// Converts a value from a list in a string from Twips to Pixels
|
||||
/// </summary>
|
||||
@@ -788,21 +653,7 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Gets or sets ShowLines so that vertical lines are shown for debugging purposes
|
||||
/// </summary>
|
||||
public bool ShowLines
|
||||
{
|
||||
get { return _ShowLines; }
|
||||
set { _ShowLines = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Draw a vertical line
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
/// <param name="x"></param>
|
||||
private void VerticalLine(Graphics g, int x)
|
||||
{
|
||||
Pen bluePen = new Pen(Color.CornflowerBlue,1);
|
||||
g.DrawLine(bluePen, x, 0, x, this.Height);
|
||||
}
|
||||
public bool ShowLines { get; set; } = true;
|
||||
/// <summary>
|
||||
/// Toggle the vertical lines on and off
|
||||
/// </summary>
|
||||
@@ -813,38 +664,6 @@ namespace Volian.Controls.Library
|
||||
ShowLines = !ShowLines;
|
||||
Refresh();
|
||||
}
|
||||
private void StepPanel_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
if (ShowLines)
|
||||
{
|
||||
//int fifth = Height / 5;
|
||||
//Rectangle r1 = new Rectangle(0, 0, Width, Height - fifth);
|
||||
////Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(r1, Color.FromArgb(128, 0, 32), Color.FromArgb(96, 0, 16), 90);
|
||||
//Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(r1, Color.FromArgb(255,128, 0, 32), Color.FromArgb(255,96, 0, 16),System.Drawing.Drawing2D.LinearGradientMode.Vertical);
|
||||
//e.Graphics.FillRectangle(b, r1);
|
||||
//r1 = new Rectangle(0, Height - fifth, Width, fifth);
|
||||
//b = new System.Drawing.Drawing2D.LinearGradientBrush(r1, Color.FromArgb(255,96, 0, 16), Color.FromArgb(255,128, 0, 32), 90);
|
||||
//e.Graphics.FillRectangle(b, r1);
|
||||
//VerticalLine(e.Graphics, 60);
|
||||
//VerticalLine(e.Graphics, 102);
|
||||
//VerticalLine(e.Graphics, 415);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Output all of the EditItem controls to the log
|
||||
/// </summary>
|
||||
private void ListControls()
|
||||
{
|
||||
// Walk through the controls and find the next control for each
|
||||
if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("'Item','Next'");
|
||||
foreach (Control control in Controls)
|
||||
if (control is EditItem)
|
||||
{
|
||||
EditItem ei = (EditItem)control;
|
||||
EditItem nxt = ei.NextDownEditItem;
|
||||
if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", ei.MyID, nxt == null ? 0 : nxt.MyID);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region Cursor Movement Methods
|
||||
/// <summary>
|
||||
@@ -880,6 +699,8 @@ namespace Volian.Controls.Library
|
||||
/// <param name="rtb">StepRTB</param>
|
||||
/// <param name="position">Point</param>
|
||||
/// <param name="arrow">E_ArrowKeys</param>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "Values assigned to ItemInfo ii for Debugging")]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Point position kept for consistancy")]
|
||||
public void CursorMovement(EditItem ei, Point position, E_ArrowKeys arrow)
|
||||
{
|
||||
ItemInfo ii = null;
|
||||
@@ -907,11 +728,8 @@ namespace Volian.Controls.Library
|
||||
ii = MoveDown(ei, ii);
|
||||
break;
|
||||
case E_ArrowKeys.Left:
|
||||
//case E_ArrowKeys.CtrlLeft:
|
||||
if (!ei.MyItemInfo.IsProcedure)
|
||||
{
|
||||
EditItem tmpEI = null;
|
||||
//SelectedEditItem = _LookupEditItems[ei.MyItemInfo.MyParent.ItemID];
|
||||
ii = ArrowUp(ei.MyItemInfo);
|
||||
if (ii != null)
|
||||
{
|
||||
@@ -948,6 +766,7 @@ namespace Volian.Controls.Library
|
||||
return tmpEI.MyItemInfo;
|
||||
}
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "ItemInfo ii Kept for Debugging")]
|
||||
private ItemInfo MoveDown(EditItem ei, ItemInfo ii)
|
||||
{
|
||||
ii = ArrowDown(ei.MyItemInfo);
|
||||
@@ -984,10 +803,7 @@ namespace Volian.Controls.Library
|
||||
if (!ii.IsProcedure) return (ii.MyParent);
|
||||
return null;
|
||||
}
|
||||
private ItemInfo ArrowDown(ItemInfo ii)
|
||||
{
|
||||
return ArrowDown(ii, true, true);
|
||||
}
|
||||
private ItemInfo ArrowDown(ItemInfo ii) => ArrowDown(ii, true, true);
|
||||
private ItemInfo ArrowDown(ItemInfo ii, bool lookAtSub, bool lookAtRNO)
|
||||
{
|
||||
if (ii.IsSection || ii.IsProcedure)
|
||||
@@ -1062,28 +878,20 @@ namespace Volian.Controls.Library
|
||||
[TypeConverter(typeof(ExpandableObjectConverter))]
|
||||
public partial class StepPanelSettings
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
public StepPanelSettings(StepPanel panel)
|
||||
{
|
||||
_MyStepPanel = panel;
|
||||
}
|
||||
public StepPanelSettings(StepPanel panel) => MyStepPanel = panel;
|
||||
public StepPanelSettings()
|
||||
{
|
||||
}
|
||||
private StepPanel _MyStepPanel;
|
||||
|
||||
[Browsable(false)]
|
||||
public StepPanel MyStepPanel
|
||||
{
|
||||
get { return _MyStepPanel; }
|
||||
set { _MyStepPanel = value; }
|
||||
}
|
||||
public StepPanel MyStepPanel { get; set; }
|
||||
private float _CircleXOffset = -4;
|
||||
[Category("Circle")]
|
||||
[DisplayName("Circle Horizontal Offset")]
|
||||
public float CircleXOffset
|
||||
{
|
||||
get { return _CircleXOffset; }
|
||||
set { _CircleXOffset = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CircleXOffset = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private float _CircleYOffset = -13;
|
||||
[Category("Circle")]
|
||||
@@ -1091,24 +899,15 @@ namespace Volian.Controls.Library
|
||||
public float CircleYOffset
|
||||
{
|
||||
get { return _CircleYOffset; }
|
||||
set { _CircleYOffset = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CircleYOffset = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
// Appears to not be used - JSJ - 11-13-2017
|
||||
//private Font _CircleFont = new Font("Arial Unicode MS", 23);
|
||||
//[Category("Circle")]
|
||||
//[DisplayName("Circle Font")]
|
||||
//public Font CircleFont
|
||||
//{
|
||||
// get { return _CircleFont; }
|
||||
// set { _CircleFont = value; if(_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
//}
|
||||
private Color _CircleColor = Color.Black;
|
||||
[Category("Circle")]
|
||||
[DisplayName("Circle Color")]
|
||||
public Color CircleColor
|
||||
{
|
||||
get { return _CircleColor; }
|
||||
set { _CircleColor = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CircleColor = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _CircleDiameter = 25;
|
||||
[Category("Circle")]
|
||||
@@ -1116,7 +915,7 @@ namespace Volian.Controls.Library
|
||||
public int CircleDiameter
|
||||
{
|
||||
get { return _CircleDiameter; }
|
||||
set { _CircleDiameter = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CircleDiameter = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _CircleWeight = 2;
|
||||
[Category("Circle")]
|
||||
@@ -1124,7 +923,7 @@ namespace Volian.Controls.Library
|
||||
public int CircleWeight
|
||||
{
|
||||
get { return _CircleWeight; }
|
||||
set { _CircleWeight = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CircleWeight = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private float _NumberLocationX = 20F;
|
||||
[Category("Number")]
|
||||
@@ -1132,7 +931,7 @@ namespace Volian.Controls.Library
|
||||
public float NumberLocationX
|
||||
{
|
||||
get { return _NumberLocationX; }
|
||||
set { _NumberLocationX = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _NumberLocationX = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private float _NumberLocationY = 4;
|
||||
[Category("Number")]
|
||||
@@ -1140,7 +939,7 @@ namespace Volian.Controls.Library
|
||||
public float NumberLocationY
|
||||
{
|
||||
get { return _NumberLocationY; }
|
||||
set { _NumberLocationY = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _NumberLocationY = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private SizeF _NumberSize = new SizeF(200F, 23F);
|
||||
[Category("Number")]
|
||||
@@ -1148,7 +947,7 @@ namespace Volian.Controls.Library
|
||||
public SizeF NumberSize
|
||||
{
|
||||
get { return _NumberSize; }
|
||||
set { _NumberSize = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _NumberSize = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _TableWidthAdjust = 4;
|
||||
[Category("Table")]
|
||||
@@ -1156,7 +955,7 @@ namespace Volian.Controls.Library
|
||||
public int TableWidthAdjust
|
||||
{
|
||||
get { return _TableWidthAdjust; }
|
||||
set { _TableWidthAdjust = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _TableWidthAdjust = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _CheckOffWeight = 1;
|
||||
[Category("CheckOff")]
|
||||
@@ -1164,7 +963,7 @@ namespace Volian.Controls.Library
|
||||
public int CheckOffWeight
|
||||
{
|
||||
get { return _CheckOffWeight; }
|
||||
set { _CheckOffWeight = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CheckOffWeight = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private Color _CheckOffColor = Color.Black;
|
||||
[Category("CheckOff")]
|
||||
@@ -1172,7 +971,7 @@ namespace Volian.Controls.Library
|
||||
public Color CheckOffColor
|
||||
{
|
||||
get { return _CheckOffColor; }
|
||||
set { _CheckOffColor = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CheckOffColor = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _CheckOffSize =12;
|
||||
[Category("CheckOff")]
|
||||
@@ -1180,7 +979,7 @@ namespace Volian.Controls.Library
|
||||
public int CheckOffSize
|
||||
{
|
||||
get { return _CheckOffSize; }
|
||||
set { _CheckOffSize = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CheckOffSize = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _CheckOffX =0;
|
||||
[Category("CheckOff")]
|
||||
@@ -1188,7 +987,7 @@ namespace Volian.Controls.Library
|
||||
public int CheckOffX
|
||||
{
|
||||
get { return _CheckOffX; }
|
||||
set { _CheckOffX = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CheckOffX = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private int _CheckOffY =5;
|
||||
[Category("CheckOff")]
|
||||
@@ -1196,7 +995,7 @@ namespace Volian.Controls.Library
|
||||
public int CheckOffY
|
||||
{
|
||||
get { return _CheckOffY; }
|
||||
set { _CheckOffY = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _CheckOffY = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
|
||||
private int _ChangeBarWeight = 1;
|
||||
@@ -1205,7 +1004,7 @@ namespace Volian.Controls.Library
|
||||
public int ChangeBarWeight
|
||||
{
|
||||
get { return _ChangeBarWeight; }
|
||||
set { _ChangeBarWeight = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _ChangeBarWeight = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
private Color _ChangeBarColor = Color.Black;
|
||||
[Category("ChangeBar")]
|
||||
@@ -1213,116 +1012,65 @@ namespace Volian.Controls.Library
|
||||
public Color ChangeBarColor
|
||||
{
|
||||
get { return _ChangeBarColor; }
|
||||
set { _ChangeBarColor = value; if (_MyStepPanel != null) _MyStepPanel.Refresh(); }
|
||||
set { _ChangeBarColor = value; MyStepPanel?.Refresh(); }
|
||||
}
|
||||
}
|
||||
public partial class StepPanelEventArgs
|
||||
{
|
||||
private EditItem _MyEditItem;
|
||||
public EditItem MyEditItem
|
||||
{
|
||||
get { return _MyEditItem; }
|
||||
set { _MyEditItem = value; }
|
||||
}
|
||||
private MouseEventArgs _MyMouseEventArgs;
|
||||
public MouseEventArgs MyMouseEventArgs
|
||||
{
|
||||
get { return _MyMouseEventArgs; }
|
||||
set { _MyMouseEventArgs = value; }
|
||||
}
|
||||
public EditItem MyEditItem { get; set; }
|
||||
public MouseEventArgs MyMouseEventArgs { get; set; }
|
||||
|
||||
public StepPanelEventArgs(EditItem myEditItem, MouseEventArgs myMouseEventArgs)
|
||||
{
|
||||
_MyEditItem = myEditItem;
|
||||
_MyMouseEventArgs = myMouseEventArgs;
|
||||
MyEditItem = myEditItem;
|
||||
MyMouseEventArgs = myMouseEventArgs;
|
||||
}
|
||||
}
|
||||
public partial class ItemSelectedChangedEventArgs
|
||||
{
|
||||
private ItemInfo _MyItemInfo;
|
||||
public ItemInfo MyItemInfo
|
||||
{
|
||||
get { return _MyItemInfo; }
|
||||
set { _MyItemInfo = value; }
|
||||
}
|
||||
private EditItem _MyEditItem = null;
|
||||
public EditItem MyEditItem
|
||||
{
|
||||
get { return _MyEditItem; }
|
||||
set { _MyEditItem = value; }
|
||||
}
|
||||
public ItemInfo MyItemInfo { get; set; }
|
||||
public EditItem MyEditItem { get; set; } = null;
|
||||
public ItemSelectedChangedEventArgs(ItemInfo myItemInfo)
|
||||
{
|
||||
_MyItemInfo = myItemInfo;
|
||||
MyItemInfo = myItemInfo;
|
||||
}
|
||||
public ItemSelectedChangedEventArgs(EditItem myEditItem)
|
||||
{
|
||||
_MyItemInfo = myEditItem?.MyItemInfo;
|
||||
_MyEditItem = myEditItem;
|
||||
MyItemInfo = myEditItem?.MyItemInfo;
|
||||
MyEditItem = myEditItem;
|
||||
}
|
||||
}
|
||||
public partial class StepPanelAttachmentEventArgs
|
||||
{
|
||||
private EditItem _MyEditItem;
|
||||
public EditItem MyEditItem
|
||||
{
|
||||
get { return _MyEditItem; }
|
||||
set { _MyEditItem = value; }
|
||||
}
|
||||
public EditItem MyEditItem { get; set; }
|
||||
public StepPanelAttachmentEventArgs(EditItem myEditItem)
|
||||
{
|
||||
_MyEditItem = myEditItem;
|
||||
MyEditItem = myEditItem;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class StepPanelLinkEventArgs : EventArgs
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
//private EditItem _LinkedEditItem;
|
||||
//public EditItem LinkedEditItem
|
||||
//{
|
||||
// get { return _LinkedEditItem; }
|
||||
//}
|
||||
private string _LinkInfoText;
|
||||
public string LinkInfoText
|
||||
{
|
||||
get { return _LinkInfoText; }
|
||||
}
|
||||
private LinkText _MyLinkText;
|
||||
public LinkText MyLinkText
|
||||
{
|
||||
get { return _MyLinkText;}
|
||||
}
|
||||
public string LinkInfoText { get; }
|
||||
public LinkText MyLinkText { get; }
|
||||
public StepPanelLinkEventArgs(string linkInfoText)
|
||||
{
|
||||
//_LinkedEditItem = linkedEditItem;
|
||||
_LinkInfoText = linkInfoText;
|
||||
_MyLinkText = new LinkText(_LinkInfoText);
|
||||
//if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("\r\n LinkInfo '{0}'\r\n", linkInfo.LinkText);
|
||||
LinkInfoText = linkInfoText;
|
||||
MyLinkText = new LinkText(LinkInfoText);
|
||||
//for Debugging: linkInfo.LinkText
|
||||
}
|
||||
}
|
||||
public partial class StepPanelTabDisplayEventArgs : EventArgs
|
||||
{
|
||||
private string _PanelTabName;
|
||||
public string PanelTabName
|
||||
{
|
||||
get { return _PanelTabName; }
|
||||
}
|
||||
public StepPanelTabDisplayEventArgs(string panelTabname)
|
||||
{
|
||||
_PanelTabName = panelTabname;
|
||||
}
|
||||
public string PanelTabName { get; }
|
||||
public StepPanelTabDisplayEventArgs(string panelTabname) => PanelTabName = panelTabname;
|
||||
}
|
||||
public partial class WordSectionEventArgs : EventArgs
|
||||
{
|
||||
private SectionInfo _MySectionInfo;
|
||||
public SectionInfo MySectionInfo
|
||||
{
|
||||
get { return _MySectionInfo; }
|
||||
}
|
||||
public SectionInfo MySectionInfo { get; }
|
||||
public WordSectionEventArgs(SectionInfo mySectionInfo)
|
||||
{
|
||||
_MySectionInfo = mySectionInfo;
|
||||
MySectionInfo = mySectionInfo;
|
||||
}
|
||||
}
|
||||
public delegate void StepPanelEvent(object sender, StepPanelEventArgs args);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,6 @@ namespace Volian.Controls.Library
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (_Disposed) return;
|
||||
_CountDisposed++;
|
||||
_Disposed = true;
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Controls.Library;
|
||||
using System.Windows.Forms;
|
||||
using JR.Utils.GUI.Forms;
|
||||
|
||||
@@ -14,41 +8,24 @@ namespace Volian.Controls.Library
|
||||
public partial class StepTabPanel : DevComponents.DotNetBar.PanelDockContainer
|
||||
{
|
||||
#region Private Fields
|
||||
private DisplayTabControl _MyDisplayTabControl;
|
||||
private StepTabRibbon _MyStepTabRibbon;
|
||||
public StepTabRibbon MyStepTabRibbon
|
||||
{
|
||||
get { return _MyStepTabRibbon; }
|
||||
set { _MyStepTabRibbon = value; }
|
||||
}
|
||||
private readonly DisplayTabControl _MyDisplayTabControl;
|
||||
|
||||
public StepTabRibbon MyStepTabRibbon { get; set; }
|
||||
private StepPanel _MyStepPanel;
|
||||
private DisplayTabItem _MyDisplayTabItem;
|
||||
#endregion
|
||||
#region Properties
|
||||
/// <summary>
|
||||
/// Container
|
||||
/// </summary>
|
||||
public DisplayTabControl MyDisplayTabControl
|
||||
{
|
||||
get { return _MyDisplayTabControl; }
|
||||
//set { _MyDisplayTabControl = value; }
|
||||
}
|
||||
public DisplayTabControl MyDisplayTabControl => _MyDisplayTabControl;
|
||||
/// <summary>
|
||||
/// StepPanel contained in this control.
|
||||
/// </summary>
|
||||
public Volian.Controls.Library.StepPanel MyStepPanel
|
||||
{
|
||||
get { return _MyStepPanel; }
|
||||
//set { _MyStepPanel = value; }
|
||||
}
|
||||
public Volian.Controls.Library.StepPanel MyStepPanel => _MyStepPanel;
|
||||
/// <summary>
|
||||
/// related DisplayTabItem
|
||||
/// </summary>
|
||||
public DisplayTabItem MyDisplayTabItem
|
||||
{
|
||||
get { return _MyDisplayTabItem; }
|
||||
set { _MyDisplayTabItem = value; }
|
||||
}
|
||||
public DisplayTabItem MyDisplayTabItem { get; set; }
|
||||
/// <summary>
|
||||
/// Currently Selected ItemInfo
|
||||
/// </summary>
|
||||
@@ -63,18 +40,14 @@ namespace Volian.Controls.Library
|
||||
FlexibleMessageBox.Show("The selected item is not available in the editor. One possible cause is that the data is 'not editable', check the section properties 'Editable Data' checkbox.", "Inaccessible Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
if (_MyStepPanel.SelectedEditItem != null)
|
||||
_MyStepPanel.SelectedEditItem.ItemSelect();
|
||||
_MyStepPanel.SelectedEditItem?.ItemSelect();
|
||||
if (!_MyStepPanel.ItemSelectionChangeShown) _MyStepPanel.OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(_MyStepPanel.SelectedEditItem));
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Currently Selected EditItem
|
||||
/// </summary>
|
||||
public EditItem SelectedEditItem
|
||||
{
|
||||
get { return _MyStepPanel.SelectedEditItem; }
|
||||
}
|
||||
public EditItem SelectedEditItem => _MyStepPanel.SelectedEditItem;
|
||||
/// <summary>
|
||||
/// Procedure ItemInfo
|
||||
/// </summary>
|
||||
@@ -120,14 +93,16 @@ namespace Volian.Controls.Library
|
||||
/// </summary>
|
||||
private void SetupStepTabRibbon()
|
||||
{
|
||||
_MyStepTabRibbon = new StepTabRibbon(_MyDisplayTabControl.IsInEditorialMode);
|
||||
_MyStepTabRibbon.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
_MyStepTabRibbon.Location = new System.Drawing.Point(0, 0);
|
||||
_MyStepTabRibbon.Name = "displayTabRibbon1";
|
||||
MyStepTabRibbon = new StepTabRibbon(_MyDisplayTabControl.IsInEditorialMode)
|
||||
{
|
||||
Dock = System.Windows.Forms.DockStyle.Top,
|
||||
Location = new System.Drawing.Point(0, 0),
|
||||
Name = "displayTabRibbon1",
|
||||
//_MyTabRibbon.MyDisplayRTB = null;
|
||||
_MyStepTabRibbon.MyEditItem = null;
|
||||
this.Controls.Add(_MyStepTabRibbon);
|
||||
_MyStepTabRibbon.Expanded = _MyDisplayTabControl.RibbonExpanded;
|
||||
MyEditItem = null
|
||||
};
|
||||
this.Controls.Add(MyStepTabRibbon);
|
||||
MyStepTabRibbon.Expanded = _MyDisplayTabControl.RibbonExpanded;
|
||||
}
|
||||
/// <summary>
|
||||
/// Setup this within control
|
||||
@@ -142,7 +117,6 @@ namespace Volian.Controls.Library
|
||||
/// </summary>
|
||||
private void SetupStepPanel()
|
||||
{
|
||||
//this.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
|
||||
_MyStepPanel = new Volian.Controls.Library.StepPanel(this.components);
|
||||
this.Controls.Add(_MyStepPanel);
|
||||
//
|
||||
@@ -159,7 +133,6 @@ namespace Volian.Controls.Library
|
||||
_MyStepPanel.ItemClick +=new Volian.Controls.Library.StepPanelEvent(_MyStepPanel_ItemClick);
|
||||
_MyStepPanel.AttachmentClicked += new Volian.Controls.Library.StepPanelAttachmentEvent(_MyStepPanel_AttachmentClicked);
|
||||
_MyStepPanel.ItemSelectedChanged += new ItemSelectedChangedEvent(_MyStepPanel_ItemSelectedChanged);
|
||||
//_MyStepPanel.ModeChange += new Volian.Controls.Library.StepPanelModeChangeEvent(_MyStepPanel_ModeChange);
|
||||
_MyStepPanel.TabDisplay += new Volian.Controls.Library.StepPanelTabDisplayEvent(_MyStepPanel_TabDisplay);
|
||||
_MyStepPanel.WordSectionClose += new StepPanelWordSectionCloseEvent(_MyStepPanel_WordSectionClose);
|
||||
_MyStepPanel.WordSectionDeleted += new StepPanelWordSectionDeletedEvent(_MyStepPanel_WordSectionDeleted);
|
||||
@@ -169,12 +142,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
#endregion
|
||||
#region Event Handlers
|
||||
private bool _ShowingItem = false;
|
||||
public bool ShowingItem
|
||||
{
|
||||
get { return _ShowingItem; }
|
||||
set { _ShowingItem = value; }
|
||||
}
|
||||
public bool ShowingItem { get; set; } = false;
|
||||
/// <summary>
|
||||
/// Occurs when the user clicks on a StepTabPanel
|
||||
/// </summary>
|
||||
@@ -182,15 +150,14 @@ namespace Volian.Controls.Library
|
||||
/// <param name="e"></param>
|
||||
private void StepTabPanel_Enter(object sender, EventArgs e)
|
||||
{
|
||||
if (_ShowingItem) return;
|
||||
if (ShowingItem) return;
|
||||
// B2019-029: added to save a dirty annotation when the btnsave was not clicked (user just moves to another steprtb but had added annotationi text):
|
||||
if (MyDisplayTabControl.MyAnnotationDetails.AnnotationDirty) MyDisplayTabControl.MyAnnotationDetails.SaveAnnotation();
|
||||
_ShowingItem = true;
|
||||
//if (ItemSelected != null)
|
||||
ShowingItem = true;
|
||||
_MyStepPanel.ItemShow();
|
||||
if (_MyStepPanel.MyStepTabPanel != null) // B2014-024 if MyStepTabPanel is null then we are in the process of closing the procedure in that step panel
|
||||
_MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetUpdRoValBtn(_MyStepPanel.MyStepTabPanel.MyStepTabRibbon.NewerRoFst());
|
||||
_ShowingItem = false;
|
||||
// B2014-024 if MyStepTabPanel is null then we are in the process of closing the procedure in that step panel
|
||||
_MyStepPanel.MyStepTabPanel?.MyStepTabRibbon.SetUpdRoValBtn(_MyStepPanel.MyStepTabPanel.MyStepTabRibbon.NewerRoFst());
|
||||
ShowingItem = false;
|
||||
_MyDisplayTabControl.SelectedDisplayTabItem = MyDisplayTabItem;
|
||||
}
|
||||
/// <summary>
|
||||
@@ -198,46 +165,31 @@ namespace Volian.Controls.Library
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
void _MyStepPanel_LinkActiveChanged(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnLinkActiveChanged(sender, args);
|
||||
}
|
||||
void _MyStepPanel_LinkActiveChanged(object sender, StepPanelLinkEventArgs args) => _MyDisplayTabControl.OnLinkActiveChanged(sender, args);
|
||||
/// <summary>
|
||||
/// Occurs when the user chooses to add a transition
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
void _MyStepPanel_LinkInsertTran(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnLinkInsertTran(sender, args);
|
||||
}
|
||||
void _MyStepPanel_LinkInsertTran(object sender, StepPanelLinkEventArgs args) => _MyDisplayTabControl.OnLinkInsertTran(sender, args);
|
||||
/// <summary>
|
||||
/// Occurs when the user chooses to add an RO
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
void _MyStepPanel_LinkInsertRO(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnLinkInsertRO(sender, args);
|
||||
}
|
||||
void _MyStepPanel_LinkInsertRO(object sender, StepPanelLinkEventArgs args) => _MyDisplayTabControl.OnLinkInsertRO(sender, args);
|
||||
/// <summary>
|
||||
/// Occurs when the user chosses to modify a transition
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
void _MyStepPanel_LinkModifyTran(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnLinkModifyTran(sender, args);
|
||||
}
|
||||
void _MyStepPanel_LinkModifyTran(object sender, StepPanelLinkEventArgs args) => _MyDisplayTabControl.OnLinkModifyTran(sender, args);
|
||||
/// <summary>
|
||||
/// Occurs when the user chooses to Modify an RO
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
void _MyStepPanel_LinkModifyRO(object sender, StepPanelLinkEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnLinkModifyRO(sender, args);
|
||||
}
|
||||
void _MyStepPanel_LinkModifyRO(object sender, StepPanelLinkEventArgs args) => _MyDisplayTabControl.OnLinkModifyRO(sender, args);
|
||||
/// <summary>
|
||||
/// Occurs when the Selected Item changes
|
||||
/// </summary>
|
||||
@@ -245,15 +197,9 @@ namespace Volian.Controls.Library
|
||||
/// <param name="args"></param>
|
||||
void _MyStepPanel_ItemSelectedChanged(object sender, ItemSelectedChangedEventArgs args)
|
||||
{
|
||||
_MyStepTabRibbon.MyEditItem = args.MyEditItem;
|
||||
MyStepTabRibbon.MyEditItem = args.MyEditItem;
|
||||
_MyDisplayTabControl.OnItemSelectedChanged(sender, args);
|
||||
}
|
||||
// Occurs when the Mode Changes
|
||||
//void _MyStepPanel_ModeChange(object sender, StepRTBModeChangeEventArgs args)
|
||||
//{
|
||||
// _MyDisplayTabControl.OnModeChange(sender, args);
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when the user clicks on the Attachment Expander
|
||||
/// </summary>
|
||||
@@ -302,27 +248,12 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
Console.WriteLine("Bring Up roeditor"); //TODO: Need to bring up roeditor or infopanel
|
||||
}
|
||||
void _MyStepPanel_TabDisplay(object sender, StepPanelTabDisplayEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnPanelTabDisplay(sender, args);
|
||||
}
|
||||
void _MyStepPanel_WordSectionClose(object sender, WordSectionEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnWordSectionClose(sender, args);
|
||||
}
|
||||
void _MyStepPanel_WordSectionDeleted(object sender, WordSectionEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnWordSectionDeleted(sender, args);
|
||||
}
|
||||
void _MyStepPanel_ItemPasted(object sender, vlnTreeItemInfoPasteEventArgs args)
|
||||
{
|
||||
_MyDisplayTabControl.OnItemPaste(sender, args);
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("StepTabPanel Procedure Item {0} {1}",
|
||||
void _MyStepPanel_TabDisplay(object sender, StepPanelTabDisplayEventArgs args) => _MyDisplayTabControl.OnPanelTabDisplay(sender, args);
|
||||
void _MyStepPanel_WordSectionClose(object sender, WordSectionEventArgs args) => _MyDisplayTabControl.OnWordSectionClose(sender, args);
|
||||
void _MyStepPanel_WordSectionDeleted(object sender, WordSectionEventArgs args) => _MyDisplayTabControl.OnWordSectionDeleted(sender, args);
|
||||
void _MyStepPanel_ItemPasted(object sender, vlnTreeItemInfoPasteEventArgs args) => _MyDisplayTabControl.OnItemPaste(sender, args);
|
||||
public override string ToString() => string.Format("StepTabPanel Procedure Item {0} {1}",
|
||||
MyDisplayTabItem.MyItemInfo.ItemID, MyDisplayTabItem.MyItemInfo.DisplayNumber);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -24,6 +24,7 @@ namespace Volian.Controls.Library
|
||||
};
|
||||
|
||||
private DataTable values;
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping bindingSource flexible")]
|
||||
private BindingSource bindingSource = null;
|
||||
private int totalrows = 1;
|
||||
private int totalcols = 1;
|
||||
@@ -104,8 +105,10 @@ namespace Volian.Controls.Library
|
||||
|
||||
void FormLoad_setDefaults(object sender, EventArgs e)
|
||||
{
|
||||
BindingSource bindingSourceDropDown = new BindingSource();
|
||||
bindingSourceDropDown.DataSource = Enum.GetNames(typeof(EPinputtype));
|
||||
BindingSource bindingSourceDropDown = new BindingSource
|
||||
{
|
||||
DataSource = Enum.GetNames(typeof(EPinputtype))
|
||||
};
|
||||
|
||||
//in order to achieve a dropdown of possible values need
|
||||
//to remove the auto-inserted columns
|
||||
@@ -114,8 +117,10 @@ namespace Volian.Controls.Library
|
||||
for (int c = 0; c < totalcols; c++)
|
||||
{
|
||||
dataview.Columns.RemoveAt(c);
|
||||
var cName = new DataGridViewComboBoxColumn();
|
||||
cName.DataSource = bindingSourceDropDown;
|
||||
var cName = new DataGridViewComboBoxColumn
|
||||
{
|
||||
DataSource = bindingSourceDropDown
|
||||
};
|
||||
cName.DefaultCellStyle.NullValue = "none";
|
||||
dataview.Columns.Insert(c, cName);
|
||||
}
|
||||
@@ -200,8 +205,10 @@ namespace Volian.Controls.Library
|
||||
int endNumCols = (int)NumCols.Value;
|
||||
int curNumCols = totalcols;
|
||||
|
||||
BindingSource bindingSourceDropDown = new BindingSource();
|
||||
bindingSourceDropDown.DataSource = Enum.GetNames(typeof(EPinputtype));
|
||||
BindingSource bindingSourceDropDown = new BindingSource
|
||||
{
|
||||
DataSource = Enum.GetNames(typeof(EPinputtype))
|
||||
};
|
||||
|
||||
//remove cols till equal
|
||||
while (curNumCols > endNumCols)
|
||||
@@ -215,8 +222,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
values.Columns.Add(new DataColumn($"Column{curNumCols + 1}") { DefaultValue = "none"});
|
||||
if (dataview.Columns.Count > curNumCols) dataview.Columns.RemoveAt(curNumCols);
|
||||
var cName = new DataGridViewComboBoxColumn();
|
||||
cName.DataSource = bindingSourceDropDown;
|
||||
var cName = new DataGridViewComboBoxColumn
|
||||
{
|
||||
DataSource = bindingSourceDropDown
|
||||
};
|
||||
cName.DefaultCellStyle.NullValue = "none";
|
||||
dataview.Columns.Add(cName);
|
||||
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
//using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
//using System.Data;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -52,8 +48,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
SizeF txtSize = e.Graphics.MeasureString(_Caption, this.Font);
|
||||
//Use a gray rectangle to show that the underlying control is inactive
|
||||
//using (Brush b2 = new SolidBrush(Color.FromArgb(_Alpha, this.BackColor)))
|
||||
// e.Graphics.FillRectangle(b2, this.ClientRectangle);
|
||||
using (Brush b = new SolidBrush(Color.FromArgb(_Alpha, this.ForeColor)))
|
||||
e.Graphics.DrawString(_Caption, this.Font, b, this.Width - txtSize.Width, 2);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
using System.Xml.Schema;
|
||||
using System.Drawing;
|
||||
using Volian.Base.Library;
|
||||
|
||||
@@ -164,18 +160,9 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Serialize
|
||||
public string ConvertToString()
|
||||
{
|
||||
return GenericSerializer<VlnBorders>.StringSerialize(this);
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return "Volian Custom Borders";
|
||||
}
|
||||
public static VlnBorders Get(string xml)
|
||||
{
|
||||
return GenericSerializer<VlnBorders>.StringDeserialize(xml);
|
||||
}
|
||||
public string ConvertToString() => GenericSerializer<VlnBorders>.StringSerialize(this);
|
||||
public override string ToString() => "Volian Custom Borders";
|
||||
public static VlnBorders Get(string xml) => GenericSerializer<VlnBorders>.StringDeserialize(xml);
|
||||
#endregion
|
||||
#region Line Pattern Static Methods
|
||||
public static int LineWidth(GridLinePattern linePattern)
|
||||
@@ -322,10 +309,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Insert and Delete Rows and Columns
|
||||
public void InsertRow(int row)
|
||||
{
|
||||
InsertRows(row, 1);
|
||||
}
|
||||
public void InsertRow(int row) => InsertRows(row, 1);
|
||||
public void InsertRows(int row, int count)
|
||||
{
|
||||
// Create a new Array of the correct size
|
||||
@@ -343,10 +327,7 @@ namespace Volian.Controls.Library
|
||||
Lines = newLines;
|
||||
Rows = newRows;
|
||||
}
|
||||
public void DeleteRow(int row)
|
||||
{
|
||||
DeleteRows(row, 1);
|
||||
}
|
||||
public void DeleteRow(int row) => DeleteRows(row, 1);
|
||||
public void DeleteRows(int row, int count)
|
||||
{
|
||||
GridLinePattern[] newLines = new GridLinePattern[(Rows - count) * Columns];
|
||||
@@ -362,10 +343,7 @@ namespace Volian.Controls.Library
|
||||
Lines = newLines;
|
||||
Rows = newRows;
|
||||
}
|
||||
public void InsertColumn(int column)
|
||||
{
|
||||
InsertColumns(column, 1);
|
||||
}
|
||||
public void InsertColumn(int column) => InsertColumns(column, 1);
|
||||
public void InsertColumns(int column, int count)
|
||||
{
|
||||
// Create a new Array of the correct size
|
||||
@@ -382,10 +360,7 @@ namespace Volian.Controls.Library
|
||||
Lines = newLines;
|
||||
Columns = newColumns;
|
||||
}
|
||||
public void DeleteColumn(int column)
|
||||
{
|
||||
DeleteColumns(column, 1);
|
||||
}
|
||||
public void DeleteColumn(int column) => DeleteColumns(column, 1);
|
||||
public void DeleteColumns(int column, int count)
|
||||
{
|
||||
GridLinePattern[] newLines = new GridLinePattern[Rows * (Columns - count)];
|
||||
|
||||
+2
-3
@@ -49,12 +49,11 @@ namespace Volian.Controls.Library
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (_Disposed) return;
|
||||
_CountDisposed++;
|
||||
_Disposed = true;
|
||||
_MyBorders = null;
|
||||
_MyShading = null;
|
||||
_SpellChecker = null;
|
||||
_tableCellEditor = null;
|
||||
SpellChecker = null;
|
||||
TableCellEditor = null;
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
using System.Xml.Schema;
|
||||
using System.Drawing;
|
||||
using Volian.Base.Library;
|
||||
|
||||
@@ -89,69 +84,26 @@ namespace Volian.Controls.Library
|
||||
string strARGB = string.Format("[A={0}, R={1}, G={2}, B={3}]", clr.A, clr.R, clr.G, clr.B);
|
||||
return strARGB;
|
||||
}
|
||||
public void SetColor(int row, int col, Color CellColor)
|
||||
{
|
||||
// Set the table cell to the ARGB representation of the passed in color
|
||||
string cellShadeColor = GetARGBstring(CellColor);
|
||||
TableShadingInfo[row, col] = cellShadeColor;
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
#region Insert and Remove Rows and Columns
|
||||
public void InsertRow(int row)
|
||||
{
|
||||
TableShadingInfo.InsertRow(row);
|
||||
}
|
||||
public void InsertRows(int row, int count)
|
||||
{
|
||||
TableShadingInfo.InsertRows(row, count);
|
||||
}
|
||||
public void DeleteRow(int row)
|
||||
{
|
||||
TableShadingInfo.DeleteRow(row);
|
||||
}
|
||||
public void DeleteRows(int row, int count)
|
||||
{
|
||||
TableShadingInfo.DeleteRows(row, count);
|
||||
}
|
||||
public void InsertColumn(int column)
|
||||
{
|
||||
TableShadingInfo.InsertColumn(column);
|
||||
}
|
||||
public void InsertColumns(int column, int count)
|
||||
{
|
||||
TableShadingInfo.InsertColumns(column, count);
|
||||
}
|
||||
public void DeleteColumn(int column)
|
||||
{
|
||||
TableShadingInfo.DeleteColumn(column);
|
||||
}
|
||||
public void DeleteColumns(int column, int count)
|
||||
{
|
||||
TableShadingInfo.DeleteColumns(column, count);
|
||||
}
|
||||
public void InsertRow(int row) => TableShadingInfo.InsertRow(row);
|
||||
public void InsertRows(int row, int count) => TableShadingInfo.InsertRows(row, count);
|
||||
public void DeleteRow(int row) => TableShadingInfo.DeleteRow(row);
|
||||
public void DeleteRows(int row, int count) => TableShadingInfo.DeleteRows(row, count);
|
||||
public void InsertColumn(int column) => TableShadingInfo.InsertColumn(column);
|
||||
public void InsertColumns(int column, int count) => TableShadingInfo.InsertColumns(column, count);
|
||||
public void DeleteColumns(int column, int count) => TableShadingInfo.DeleteColumns(column, count);
|
||||
#endregion
|
||||
#region Serialize
|
||||
public string ConvertToString()
|
||||
{
|
||||
return GenericSerializer<VlnGridCellShading>.StringSerialize(this);
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return "Volian Custom Cell Shading";
|
||||
}
|
||||
public static VlnGridCellShading Get(string xml)
|
||||
{
|
||||
return GenericSerializer<VlnGridCellShading>.StringDeserialize(xml);
|
||||
}
|
||||
#endregion
|
||||
// Adjust the cell shading array if needed
|
||||
public void CheckAndFixShadingArraySize(int grdRows, int grdCols, Color defaultCellShading)
|
||||
{
|
||||
if (TableShadingInfo.Columns != grdCols || TableShadingInfo.Rows != grdRows)
|
||||
TableShadingInfo = new CellShadingArray(defaultCellShading, grdRows, grdCols, TableShadingInfo.CellShadingColor);
|
||||
}
|
||||
|
||||
}
|
||||
[Serializable]
|
||||
public class CellShadingArray
|
||||
@@ -200,22 +152,6 @@ namespace Volian.Controls.Library
|
||||
for (int c = 0; c < Columns; c++)
|
||||
CellShadingColor[r * Columns + c] = defaultShadingColorARGB;
|
||||
}
|
||||
// Used to automatically adjust the cell shading color array
|
||||
public CellShadingArray(Color defaultShadingColor, int rows, int columns, string[] shadeAry)
|
||||
{
|
||||
Rows = rows;
|
||||
Columns = columns;
|
||||
CellShadingColor = new string[rows * columns];
|
||||
for (int r = 0; r < Rows; r++)
|
||||
for (int c = 0; c < Columns; c++)
|
||||
{
|
||||
int idx = r * Columns + c;
|
||||
if (idx < shadeAry.Length)
|
||||
CellShadingColor[idx] = shadeAry[idx];
|
||||
else
|
||||
CellShadingColor[idx] = defaultShadingColor.ToString();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region Array Access
|
||||
public string this[int r, int c]
|
||||
@@ -234,10 +170,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Insert and Delete Rows and Columns
|
||||
public void InsertRow(int row)
|
||||
{
|
||||
InsertRows(row, 1);
|
||||
}
|
||||
public void InsertRow(int row) => InsertRows(row, 1);
|
||||
public void InsertRows(int row, int count)
|
||||
{
|
||||
// Create a new Array of the correct size
|
||||
@@ -255,10 +188,7 @@ namespace Volian.Controls.Library
|
||||
CellShadingColor = newLines;
|
||||
Rows = newRows;
|
||||
}
|
||||
public void DeleteRow(int row)
|
||||
{
|
||||
DeleteRows(row, 1);
|
||||
}
|
||||
public void DeleteRow(int row) => DeleteRows(row, 1);
|
||||
public void DeleteRows(int row, int count)
|
||||
{
|
||||
string[] newLines = new string[(Rows - count) * Columns];
|
||||
@@ -274,10 +204,7 @@ namespace Volian.Controls.Library
|
||||
CellShadingColor = newLines;
|
||||
Rows = newRows;
|
||||
}
|
||||
public void InsertColumn(int column)
|
||||
{
|
||||
InsertColumns(column, 1);
|
||||
}
|
||||
public void InsertColumn(int column) => InsertColumns(column, 1);
|
||||
public void InsertColumns(int column, int count)
|
||||
{
|
||||
// Create a new Array of the correct size
|
||||
@@ -294,10 +221,7 @@ namespace Volian.Controls.Library
|
||||
CellShadingColor = newLines;
|
||||
Columns = newColumns;
|
||||
}
|
||||
public void DeleteColumn(int column)
|
||||
{
|
||||
DeleteColumns(column, 1);
|
||||
}
|
||||
public void DeleteColumn(int column) => DeleteColumns(column, 1);
|
||||
public void DeleteColumns(int column, int count)
|
||||
{
|
||||
string[] newLines = new string[Rows * (Columns - count)];
|
||||
|
||||
@@ -1,21 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
public class VlnSpellCheck
|
||||
{
|
||||
private EditItem _MyEditItem;
|
||||
public EditItem MyEditItem
|
||||
{
|
||||
get { return _MyEditItem; }
|
||||
set
|
||||
{
|
||||
_MyEditItem = value;
|
||||
}
|
||||
}
|
||||
public EditItem MyEditItem { get; set; }
|
||||
|
||||
|
||||
public VlnSpellCheck()
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using DevComponents.DotNetBar;
|
||||
using C1.Win.C1SpellChecker;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
@@ -19,24 +14,19 @@ namespace Volian.Controls.Library
|
||||
private int _ErrorCount;
|
||||
private int _ErrorIndex = -1; // current error index
|
||||
private bool _AutoSuggest = true;
|
||||
private string _NoSuggestionsText = "(no suggestions)";
|
||||
private readonly string _NoSuggestionsText = "(no suggestions)";
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
Dictionary<string, string> _changeAll = new Dictionary<string, string>();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="CharRange"/> object that represents the error currently
|
||||
/// displayed in the dialog.
|
||||
/// </summary>
|
||||
public CharRange CurrentError
|
||||
{
|
||||
get { return _Errors[_ErrorIndex]; }
|
||||
}
|
||||
public CharRange CurrentError => _Errors[_ErrorIndex];
|
||||
public bool DidCorrectSpelling = false; // B2015-024 have Spell Checker text changes be in editorial mode (not assign a change bar but keep existing change bar)
|
||||
|
||||
public VlnSpellCheckDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public VlnSpellCheckDlg() => InitializeComponent();
|
||||
/// <summary>
|
||||
/// Initializes the dialog to use the given parameters.
|
||||
/// </summary>
|
||||
@@ -58,10 +48,7 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Gets the total number of errors detected in the control.
|
||||
/// </summary>
|
||||
public int ErrorCount
|
||||
{
|
||||
get { return _ErrorCount; }
|
||||
}
|
||||
public int ErrorCount => _ErrorCount;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the index of the current error into the <see cref="Errors"/> list.
|
||||
@@ -105,7 +92,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
// fire load event
|
||||
base.OnLoad(e);
|
||||
//AddHandle();
|
||||
//AddHandle(); //For Debugging
|
||||
// show first error (after firing load event)
|
||||
ErrorIndex = 0;
|
||||
}
|
||||
@@ -204,8 +191,6 @@ namespace Volian.Controls.Library
|
||||
// show 'Add' button only if user dictionary is enabled
|
||||
btnAddToDictionary.Visible = _Spell.UserDictionary.Enabled;
|
||||
|
||||
// all ready, fire ErrorDisplayed event
|
||||
//OnErrorDisplayed(EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void SetupSuggestions(string badWord)
|
||||
@@ -251,10 +236,7 @@ namespace Volian.Controls.Library
|
||||
return false;
|
||||
}
|
||||
|
||||
private void btnChange_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateEditor(txbBadWord.Text);
|
||||
}
|
||||
private void btnChange_Click(object sender, EventArgs e) => UpdateEditor(txbBadWord.Text);
|
||||
|
||||
private void btnChangeAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -262,10 +244,7 @@ namespace Volian.Controls.Library
|
||||
UpdateEditor(txbBadWord.Text);
|
||||
}
|
||||
|
||||
private void btnIgnore_Click(object sender, EventArgs e)
|
||||
{
|
||||
ErrorIndex++;
|
||||
}
|
||||
private void btnIgnore_Click(object sender, EventArgs e) => ErrorIndex++;
|
||||
|
||||
private void btnIgnoreAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -299,9 +278,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
private void btnRemove_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateEditor("");
|
||||
}
|
||||
private void btnRemove_Click(object sender, EventArgs e) => UpdateEditor("");
|
||||
}
|
||||
}
|
||||
@@ -126,7 +126,6 @@
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AlphabeticalNumbering.cs" />
|
||||
<Compile Include="AnnotationDetails.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
@@ -238,6 +237,9 @@
|
||||
<Compile Include="FindReplace.designer.cs">
|
||||
<DependentUpon>FindReplace.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FlagEnumEditor.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormatUtility.cs" />
|
||||
<Compile Include="frmEnhanced.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -269,6 +271,7 @@
|
||||
<Compile Include="frmViewTextFile.designer.cs">
|
||||
<DependentUpon>frmViewTextFile.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="GridItem.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
@@ -368,9 +371,6 @@
|
||||
<Compile Include="DSOTabPanel.designer.cs">
|
||||
<DependentUpon>DSOTabPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FlagEnumEditor.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MostRecentItem.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
@@ -443,12 +443,6 @@
|
||||
<Compile Include="vlnTreeView3.Designer.cs">
|
||||
<DependentUpon>vlnTreeView3.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WebBrowser.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="WebBrowser.designer.cs">
|
||||
<DependentUpon>WebBrowser.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -557,10 +551,6 @@
|
||||
<DependentUpon>VlnSpellCheckDlg.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="WebBrowser.resx">
|
||||
<DependentUpon>WebBrowser.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\DropDownPanel\DropDownPanel.csproj">
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
partial class WebBrowser
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.WebBrowserWindow = new System.Windows.Forms.WebBrowser();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// WebBrowserWindow
|
||||
//
|
||||
this.WebBrowserWindow.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.WebBrowserWindow.Location = new System.Drawing.Point(0, 0);
|
||||
this.WebBrowserWindow.MinimumSize = new System.Drawing.Size(20, 20);
|
||||
this.WebBrowserWindow.Name = "WebBrowserWindow";
|
||||
this.WebBrowserWindow.Size = new System.Drawing.Size(1039, 723);
|
||||
this.WebBrowserWindow.TabIndex = 0;
|
||||
//this.WebBrowserWindow.Url = new System.Uri("http://www.volian.com", System.UriKind.Absolute);
|
||||
//this.WebBrowserWindow.Url = new System.Uri(_currentURL, System.UriKind.Absolute);
|
||||
//this.WebBrowserWindow.Navigate(_currentURL);
|
||||
//
|
||||
// WebBrowser
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1039, 723);
|
||||
this.Controls.Add(this.WebBrowserWindow);
|
||||
this.Name = "WebBrowser";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "WebBrowser";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.WebBrowser WebBrowserWindow;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
public partial class WebBrowser : DevComponents.DotNetBar.Office2007Form //Form
|
||||
{
|
||||
private string _currentURL = @"http:/www.volian.com"; // default to volain web site
|
||||
|
||||
/// <summary>
|
||||
/// Display an instance of the default internet web browser.
|
||||
/// Note that besides a web site address, you can pass in a PDF file name (include the path).
|
||||
/// This assumes that the user's web browser can display PDF files.
|
||||
/// If nothing is passed in, then this will default to displaying the Volian Web Site.
|
||||
/// </summary>
|
||||
/// <param name="url">The URL of the web site you want to display</param>
|
||||
public WebBrowser(string url)
|
||||
{
|
||||
_currentURL = url;
|
||||
//this.Text = url;
|
||||
InitializeComponent();
|
||||
this.WebBrowserWindow.Navigate(_currentURL);
|
||||
this.TitleText = _currentURL;
|
||||
}
|
||||
public WebBrowser()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.WebBrowserWindow.Navigate(_currentURL);
|
||||
this.TitleText = _currentURL;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,16 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
public partial class dlgChgId : Form
|
||||
{
|
||||
DisplayTabControl TabControl;
|
||||
readonly DisplayTabControl TabControl;
|
||||
public dlgChgId(DisplayTabControl tc)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
@@ -12,11 +7,11 @@ namespace Volian.Controls.Library
|
||||
// (a few users said that procedures 'disappeared' but this could not be reproduced)
|
||||
public partial class dlgDelProcReason : Form
|
||||
{
|
||||
vlnTreeView VTreeView;
|
||||
readonly vlnTreeView VTreeView;
|
||||
public dlgDelProcReason(vlnTreeView tv)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = "Verify Delete By " + Volian.Base.Library.VlnSettings.UserID;
|
||||
this.Text = $"Verify Delete By {Volian.Base.Library.VlnSettings.UserID}";
|
||||
VTreeView = tv;
|
||||
tbDelProcReason.Focus();
|
||||
}
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
@@ -13,10 +7,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
public partial class dlgEnhMissingItem : Form
|
||||
{
|
||||
StepTabRibbon STRibbon = null;
|
||||
private ItemInfo _SourceItem = null;
|
||||
private int _EnhType = -1;
|
||||
private bool _Initializing = false;
|
||||
readonly StepTabRibbon STRibbon = null;
|
||||
private readonly ItemInfo _SourceItem = null;
|
||||
private readonly int _EnhType = -1;
|
||||
private readonly bool _Initializing = false;
|
||||
public bool OKSelected = false;
|
||||
public dlgEnhMissingItem(StepTabRibbon strbn, ItemInfo srcItem, int enhType)
|
||||
{
|
||||
@@ -40,7 +34,7 @@ namespace Volian.Controls.Library
|
||||
cbUnlinkedEnhancedItems.SelectedIndex = -1;
|
||||
cbUnlinkedEnhancedItems.Enabled = false;
|
||||
}
|
||||
if (srcItem.IsProcedure) this.Text = "Create Missing Enhanced Item for " + srcItem.DisplayNumber;
|
||||
if (srcItem.IsProcedure) this.Text = $"Create Missing Enhanced Item for {srcItem.DisplayNumber}";
|
||||
else this.Text = "Create Missing Enhanced Item";
|
||||
_Initializing = false;
|
||||
}
|
||||
@@ -90,8 +84,7 @@ namespace Volian.Controls.Library
|
||||
// convert the data. If so, convert all items within it that can be linked. If not, just link as before.
|
||||
if (_SourceItem.IsProcedure)
|
||||
{
|
||||
ItemInfo ii = cbUnlinkedEnhancedItems.SelectedItem as ItemInfo;
|
||||
if (ii == null) return;
|
||||
if (!(cbUnlinkedEnhancedItems.SelectedItem is ItemInfo ii)) return;
|
||||
ContentInfoList cil = ContentInfoList.Get16BitEnhancedContents(_SourceItem.ItemID, ii.ItemID, _EnhType);
|
||||
bool foundSubItem = false; // in returned list, see if there are any sections/steps. If none, don't prompt
|
||||
foreach (ContentInfo ci in cil)
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Controls.Library;
|
||||
using System.Linq;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
@@ -16,34 +13,25 @@ namespace Volian.Controls.Library
|
||||
get { return tc.MySessionInfo; }
|
||||
set { tc.MySessionInfo = value; }
|
||||
}
|
||||
private ItemInfo _MyItemInfo;
|
||||
|
||||
public ItemInfo MyItemInfo
|
||||
{
|
||||
get { return _MyItemInfo; }
|
||||
set { _MyItemInfo = value; }
|
||||
}
|
||||
public ItemInfo MyItemInfo { get; set; }
|
||||
public frmEnhanced(ItemInfo ii)
|
||||
{
|
||||
_MyItemInfo = ii;
|
||||
MyItemInfo = ii;
|
||||
InitializeComponent();
|
||||
SetCaption();
|
||||
}
|
||||
public void OpenItem()
|
||||
{
|
||||
tc.OpenItem(_MyItemInfo);
|
||||
tc.OpenItem(MyItemInfo);
|
||||
}
|
||||
private void frmEnhanced_Load(object sender, EventArgs e)
|
||||
{
|
||||
OpenItem();
|
||||
}
|
||||
public DisplayTabControl MyDisplayTabClntrol
|
||||
{
|
||||
get { return this.tc; }
|
||||
}
|
||||
private void SetCaption()
|
||||
{
|
||||
FolderInfo myfolder = _MyItemInfo.MyDocVersion.MyFolder;
|
||||
FolderInfo myfolder = MyItemInfo.MyDocVersion.MyFolder;
|
||||
string sep = "";
|
||||
string fPath = "";
|
||||
while (myfolder.FolderID != myfolder.ParentID)
|
||||
@@ -57,18 +45,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
public class VersionWindow
|
||||
{
|
||||
private int _VersionID;
|
||||
public int VersionID
|
||||
{
|
||||
get { return _VersionID; }
|
||||
set { _VersionID = value; }
|
||||
}
|
||||
private int _DBId;
|
||||
public int DBId
|
||||
{
|
||||
get { return _DBId; }
|
||||
set { _DBId = value; }
|
||||
}
|
||||
public int VersionID { get; set; }
|
||||
public int DBId { get; set; }
|
||||
private Rectangle _MyRectangle;
|
||||
public Rectangle MyRectangle
|
||||
{
|
||||
@@ -78,12 +56,12 @@ namespace Volian.Controls.Library
|
||||
public override string ToString()
|
||||
{
|
||||
RectangleConverter rc = new RectangleConverter();
|
||||
return string.Format("{0}~{1}", _VersionID, rc.ConvertToString(_MyRectangle));
|
||||
return string.Format("{0}~{1}", VersionID, rc.ConvertToString(_MyRectangle));
|
||||
}
|
||||
public VersionWindow(string str)
|
||||
{
|
||||
string[] parts = str.Split('~');
|
||||
_VersionID = int.Parse(parts[0]);
|
||||
VersionID = int.Parse(parts[0]);
|
||||
RectangleConverter rc = new RectangleConverter();
|
||||
_MyRectangle = (Rectangle)rc.ConvertFromString(parts[1]);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
@@ -109,7 +107,6 @@ namespace Volian.Controls.Library
|
||||
// C2019-021 RHM 5/15/2019 Added new methods and properties for Import Word Content
|
||||
_WordApp.Selection.MoveUp(LBWdUnits.wdParagraph, 1, 0); // Move to previous paragraph
|
||||
_WordApp.Selection.MoveUp(LBWdUnits.wdParagraph, 1, 1); // Select paragraph
|
||||
//_WordApp.Selection.MoveEnd(LBWdUnits.wdCharacter, -1); // Move 1 Character Back
|
||||
try
|
||||
{
|
||||
// C2019-021 Use generic function CopyWordText
|
||||
@@ -294,34 +291,6 @@ namespace Volian.Controls.Library
|
||||
// incase user manually closed word
|
||||
}
|
||||
}
|
||||
//C2019-021 Remove old method.
|
||||
//private void btnNextIns_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// if (MyStepRTB != null)
|
||||
// {
|
||||
// if (MyStepRTB.MyItemInfo.IsSection)
|
||||
// {
|
||||
// MyStepRTB.RtbSendKeys("^{DOWN}"); // <Ctrl><down arrow> - next edit window
|
||||
// MyStepRTB.RtbSendKeys("^+b"); // insert previous
|
||||
// }
|
||||
// else
|
||||
// MyStepRTB.RtbSendKeys("^+i"); // insert next (same type and level)
|
||||
// MyStepRTB.RtbSendKeys("^v"); // clipboard paste
|
||||
// Application.DoEvents();
|
||||
// }
|
||||
// this.Focus(); // set focus back to this form
|
||||
//}
|
||||
//private void btnNextRpl_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// if (MyStepRTB != null)
|
||||
// {
|
||||
// MyStepRTB.RtbSendKeys("^{DOWN}"); // <Ctrl><down arrow> - next edit window
|
||||
// MyStepRTB.RtbSendKeys("^a"); // select all
|
||||
// MyStepRTB.RtbSendKeys("^v"); // clipboard paste
|
||||
// Application.DoEvents();
|
||||
// }
|
||||
// this.Focus(); // set focus back to this form
|
||||
//}
|
||||
// C2019-021 New function to replace the PROMS text with the word text and move to the next paragraph in word.
|
||||
private void btnReplaceNext_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -382,7 +351,6 @@ namespace Volian.Controls.Library
|
||||
if (MyStepRTB.Parent is VlnFlexGrid)
|
||||
{
|
||||
VlnFlexGrid vg = MyStepRTB.Parent as VlnFlexGrid;
|
||||
//vg.FinishEditing(false);
|
||||
vg.SelectNextCell();
|
||||
}
|
||||
else
|
||||
@@ -498,9 +466,6 @@ namespace Volian.Controls.Library
|
||||
private void btnCurrent_Click(object sender, EventArgs e)
|
||||
{
|
||||
// B2019-108 Corrected curent button code
|
||||
//_WordApp.Selection.MoveUp(LBWdUnits.wdParagraph, 1, 0); // Select paragraph
|
||||
//_WordApp.Selection.MoveDown(LBWdUnits.wdParagraph, 1, 1); // Select paragraph
|
||||
//_WordApp.Selection.MoveEnd(LBWdUnits.wdCharacter, -1); // Exclude the last character
|
||||
try
|
||||
{
|
||||
_WordApp.Selection.Cells[1].Range.Select();
|
||||
@@ -514,9 +479,6 @@ namespace Volian.Controls.Library
|
||||
// C2019-021 Use Generic CopyWordText
|
||||
CopyWordText();
|
||||
// C2019-021If the word text only contains whitespace skip to next
|
||||
//if (txbWrdText.Text.TrimEnd("\f\r\n\a".ToCharArray()) == "")
|
||||
// btnNext_Click(sender, e);
|
||||
//else
|
||||
Clipboard.SetText(txbWrdText.Text);
|
||||
}
|
||||
catch
|
||||
@@ -524,16 +486,6 @@ namespace Volian.Controls.Library
|
||||
// Ask RHM what to do here 2/28/2020 JBS
|
||||
}
|
||||
}
|
||||
//private void btnTest_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// if (!MoveToNextCell())
|
||||
// {
|
||||
// _WordApp.Selection.MoveDown(LBWdUnits.wdParagraph, 2, 0);
|
||||
// _WordApp.Selection.MoveDown(LBWdUnits.wdParagraph, 1, 1);
|
||||
// }
|
||||
// _WordApp.Activate();
|
||||
// //int cols = _WordApp.Selection.Tables[1].Columns.Count;
|
||||
//}
|
||||
|
||||
// B2019-108 Show special Characters
|
||||
private void txbWrdText_TextChanged(object sender, EventArgs e)
|
||||
@@ -562,9 +514,6 @@ namespace Volian.Controls.Library
|
||||
private void frmImportWordContents_Activated(object sender, EventArgs e)
|
||||
{
|
||||
// B2019-108 Corrected curent button code
|
||||
//_WordApp.Selection.MoveUp(LBWdUnits.wdParagraph, 1, 0); // Select paragraph
|
||||
//_WordApp.Selection.MoveDown(LBWdUnits.wdParagraph, 1, 1); // Select paragraph
|
||||
//_WordApp.Selection.MoveEnd(LBWdUnits.wdCharacter, -1); // Exclude the last character
|
||||
try
|
||||
{
|
||||
if (_WordApp != null || _WordApp.WindowState == LBWdWindowState.wdWindowStateMinimize)
|
||||
@@ -576,16 +525,6 @@ namespace Volian.Controls.Library
|
||||
disableButtons();
|
||||
}
|
||||
}
|
||||
//private void btnTest_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// if (!MoveToNextCell())
|
||||
// {
|
||||
// _WordApp.Selection.MoveDown(LBWdUnits.wdParagraph, 2, 0);
|
||||
// _WordApp.Selection.MoveDown(LBWdUnits.wdParagraph, 1, 1);
|
||||
// }
|
||||
// _WordApp.Activate();
|
||||
// //int cols = _WordApp.Selection.Tables[1].Columns.Count;
|
||||
//}
|
||||
|
||||
private void btnTableConvert_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -613,12 +552,11 @@ namespace Volian.Controls.Library
|
||||
else
|
||||
sb.Append(c);
|
||||
}
|
||||
MessageBox.Show(ex.Message + "\r\n" + sb.ToString(), ex.GetType().Name);
|
||||
MessageBox.Show($"{ex.Message}\r\n{sb}", ex.GetType().Name);
|
||||
return;
|
||||
}
|
||||
LoadTable2(xd.DocumentElement);
|
||||
int type = 20008;
|
||||
ItemInfo myTable;
|
||||
if(MyStepRTB.MyItemInfo.IsTable)
|
||||
{
|
||||
using( Item itm = MyStepRTB.MyItemInfo.Get())
|
||||
@@ -633,12 +571,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
//using (Step stp = Step.MakeStep(MyStepRTB.MyItemInfo, null, null, TblFlexGrid.GetSearchableText() , 20008, E_FromType.Table))
|
||||
//{
|
||||
// myTable = ItemInfo.Get(stp.ItemID);
|
||||
// Grid.MakeGrid(stp.MyContent, TblFlexGrid.GetXMLData(), "");
|
||||
//}
|
||||
//MyStepRTB.MyItemInfo.MyContent.RefreshContentParts();
|
||||
EditItem ei = MyStepRTB.Parent as EditItem;
|
||||
ei.AddChild(E_FromType.Table, 20008, TblFlexGrid);
|
||||
if (ei != null) ei.SetAllTabs();
|
||||
@@ -671,7 +603,6 @@ namespace Volian.Controls.Library
|
||||
// capture widths for valid cells
|
||||
for (int i = 1; i <= tbl.Range.Cells.Count; i++)
|
||||
{
|
||||
//LBCell myCell = tbl.Range.Cells[i];
|
||||
// convert points to pixels and save value
|
||||
int w = (int)(tbl.Range.Cells[i].Width * 8 / 6);
|
||||
iC = tbl.Range.Cells[i].ColumnIndex - 1;
|
||||
@@ -774,16 +705,16 @@ namespace Volian.Controls.Library
|
||||
iC = myCell.ColumnIndex - 1 + offset;
|
||||
if (SpanR[iR, iC] > 1)
|
||||
{
|
||||
sXML += " rowspan=\"" + SpanR[iR, iC] + "\"";
|
||||
sXML += $" rowspan=\"{SpanR[iR, iC]}\"";
|
||||
}
|
||||
if (SpanC[iR, iC] > 1)
|
||||
{
|
||||
sXML += " colspan=\"" + SpanC[iR, iC] + "\"";
|
||||
sXML += $" colspan=\"{SpanC[iR, iC]}\"";
|
||||
offset += SpanC[iR, iC] - 1;
|
||||
}
|
||||
else if (Wcol[iC] > 0)
|
||||
{
|
||||
sXML += " width=\"" + Wcol[iC] + "\"";
|
||||
sXML += $" width=\"{Wcol[iC]}\"";
|
||||
Wcol[iC] = Wcol[iC] * -1;
|
||||
}
|
||||
string textalign = "";
|
||||
@@ -815,7 +746,7 @@ namespace Volian.Controls.Library
|
||||
textalign += "Top";
|
||||
break;
|
||||
}
|
||||
sXML += " textalign=\"" + textalign + "\"";
|
||||
sXML += $" textalign=\"{textalign}\"";
|
||||
sXML += ">";
|
||||
// select text from current cell
|
||||
_WordApp.Selection.Start = myCell.Range.Start;
|
||||
@@ -830,7 +761,6 @@ namespace Volian.Controls.Library
|
||||
rtbStep.SelectAll();
|
||||
Console.WriteLine("RTF before {0}", rtbStep.Rtf);
|
||||
Console.WriteLine("RTF after {0}", rtbStep.Rtf);
|
||||
// rtbStep.Rtf.Replace("\\f1 P\\f0 ", "\\u10004?"); // check mark within parenthesis
|
||||
string strp = rtbStep.Rtf.Replace("\\par\r\n", "!!!");
|
||||
strp = DisplayText.StaticStripRtfCommands(strp, true);
|
||||
Console.WriteLine("RTF clean {0}", strp);
|
||||
@@ -849,11 +779,9 @@ namespace Volian.Controls.Library
|
||||
sb.Replace("\x201D", "\"");// Space
|
||||
sb.Replace("\x09INITIAL", "");// Space
|
||||
sb.Replace("\x09_____", ""); // Tab Signoff
|
||||
//sb.Replace("(P)", "(\\u10004?)"); // check mark within parenthesis
|
||||
//sb.Replace("\\u9633?", "□"); //box
|
||||
}
|
||||
// save resulting text in xml structure
|
||||
sXML += "<p>" + ha + sb + "</p></td>";
|
||||
sXML += $"<p>{ha}{sb}</p></td>";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using LBOutlookLibrary;
|
||||
@@ -82,10 +78,8 @@ namespace Volian.Controls.Library
|
||||
MailMessage mm = new MailMessage();
|
||||
mm.From = new MailAddress(SMTPUser);
|
||||
mm.To.Add("support@volian.com");
|
||||
//mm.To.Add("rmark@epix.net");
|
||||
//mm.To.Add("jcbodine@gmail.com");
|
||||
mm.Subject = "PROMS Error Log " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss");
|
||||
mm.Body = Header + "\r\n\r\n" + tbContent.Text;
|
||||
mm.Subject = $"PROMS Error Log {DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")}";
|
||||
mm.Body = $"{Header}\r\n\r\n{tbContent.Text}";
|
||||
fs = File.Open(_ErrorLogPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
mm.Attachments.Add(new Attachment(fs, "ErrorLog.txt"));
|
||||
SmtpClient sc = new SmtpClient(SMTPServer);
|
||||
@@ -109,7 +103,6 @@ namespace Volian.Controls.Library
|
||||
get
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
//sb.Append("PROMS\t\tVersion: ");
|
||||
sb.AppendLine("PROMS");
|
||||
sb.Append("Version: ");
|
||||
sb.Append(AssemblyVersion);
|
||||
@@ -118,10 +111,9 @@ namespace Volian.Controls.Library
|
||||
string connectionString = Database.VEPROMS_Connection;
|
||||
Match mServer = Regex.Match(connectionString, ".*Data Source=([^;]*).*");
|
||||
string server = (mServer.Success) ? mServer.Groups[1].Value : "unknown";
|
||||
if (server.StartsWith(@".\")) server = @"Local \ " + server.Substring(2);
|
||||
if (server.StartsWith(@".\")) server = $@"Local \ {server.Substring(2)}";
|
||||
string databaseName = string.Format("{0}[SQL:{1:yyMM.ddHH}]", Database.ActiveDatabase, Database.RevDate);
|
||||
sb.Append(string.Format("SQL Server: {0}", server));
|
||||
//if (databaseName == null) databaseName = Regex.Replace(connectionString, "^.*Initial Catalog=([^;]*);.*$", "$1", RegexOptions.IgnoreCase);
|
||||
sb.AppendLine(string.Format("\t\tDatabase: {0}", databaseName));
|
||||
if (OutlookEmail)
|
||||
sb.AppendLine("sent via outlook");
|
||||
@@ -137,13 +129,9 @@ namespace Volian.Controls.Library
|
||||
LBApplicationClass app = new LBApplicationClass();
|
||||
LBMailItemClass msg = app.CreateMailItem();
|
||||
msg.Recipients.Add("support@volian.com");
|
||||
//msg.Recipients.Add("rmark@epix.net");
|
||||
//msg.Recipients.Add("jcbodine@gmail.com");
|
||||
//msg.To = "jcbodine@gmail.com";//"rmark@epix.net";
|
||||
//msg.Recipients.Add("jcbodine@gmail.com");
|
||||
msg.Subject = "PROMS Error Log " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss");
|
||||
msg.Subject = $"PROMS Error Log {DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")}";
|
||||
msg.BodyFormat = LBOlBodyFormat.olFormatPlain;
|
||||
msg.Body = Header + "\r\n\r\n" + tbContent.Text;
|
||||
msg.Body = $"{Header}\r\n\r\n{tbContent.Text}";
|
||||
msg.AddAttachment(_ErrorLogPath);
|
||||
msg.Send();
|
||||
return true;
|
||||
@@ -162,7 +150,6 @@ namespace Volian.Controls.Library
|
||||
get
|
||||
{
|
||||
return Application.ProductVersion;
|
||||
//return Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
|
||||
@@ -13,11 +8,6 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
string _FileName;
|
||||
RichTextBoxStreamType _RTBType;
|
||||
//public string FileName
|
||||
//{
|
||||
// get { return _FileName; }
|
||||
// set { _FileName = value; }
|
||||
//}
|
||||
public string ButtonText
|
||||
{
|
||||
get { return buttonX1.Text; }
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
@@ -137,7 +133,6 @@ namespace Volian.Controls.Library
|
||||
Color c1 = Color.FromArgb(_Trans1, _Color1);
|
||||
Color c2 = Color.FromArgb(_Trans2, _Color2);
|
||||
Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c1, c2, _GradientAngle);
|
||||
//Brush b2 = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c2, c2, _GradientAngle);
|
||||
Pen p = new Pen(ForeColor);
|
||||
Brush b2 = p.Brush;
|
||||
float smallest = this.Width;
|
||||
@@ -152,11 +147,6 @@ namespace Volian.Controls.Library
|
||||
switch (_MyExpanderStyle)
|
||||
{
|
||||
case ExpanderStyle.Round:
|
||||
//e.Graphics.FillEllipse(Brushes.Gray, 0F, 0F, diameter, diameter);
|
||||
//e.Graphics.DrawRectangle(p, new Rectangle(0, 0, leg * 2 + penWidth * 3, leg * 2 + penWidth * 3));
|
||||
// Draw a white cross-hair
|
||||
//e.Graphics.FillRectangle(Brushes.White, 2 * weight , radius - weight, diameter - 4 * weight, weight * 2);
|
||||
//e.Graphics.FillRectangle(Brushes.White, radius - weight, 2 * weight, weight * 2, diameter - 4 * weight);
|
||||
if(!Attachment) e.Graphics.FillEllipse(b, 0F, 0F, diameter, diameter);
|
||||
DrawInterior(e, b, b2, weight, radius, diameter);
|
||||
e.Graphics.DrawEllipse(p, 0, 0, diameter, diameter);
|
||||
@@ -165,21 +155,13 @@ namespace Volian.Controls.Library
|
||||
b2.Dispose();
|
||||
break;
|
||||
case ExpanderStyle.Square:
|
||||
//c1 = Color.FromArgb(_Trans1, _Color1);
|
||||
//c2 = Color.FromArgb(_Trans2, _Color2);
|
||||
//b = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c1, c2, _GradientAngle);
|
||||
int leg = ((ClientRectangle.Width - 3 * penWidth) / 2) - 1;
|
||||
if (!Attachment) e.Graphics.FillRectangle(b, new Rectangle(0, 0, leg * 2 + penWidth * 3, leg * 2 + penWidth * 3));
|
||||
int center = leg + penWidth;
|
||||
int limit = 2 * (penWidth + leg);
|
||||
p = new Pen(_BorderColor, _PenWidth);
|
||||
e.Graphics.DrawRectangle(p, new Rectangle(0, 0, leg * 2 + penWidth * 3, leg * 2 + penWidth * 3));
|
||||
//b = new SolidBrush(this.ForeColor);
|
||||
DrawInterior(e, b, b2, weight, radius, diameter);
|
||||
//e.Graphics.FillRectangle(b, new Rectangle(penWidth, center, leg * 2 + penWidth, penWidth));
|
||||
//if (!_Expanded) e.Graphics.FillRectangle(b, new Rectangle(center, penWidth, penWidth, leg * 2 + penWidth));
|
||||
////pe.Graphics.DrawLine(p, new Point(penWidth, center), new Point(limit, center));
|
||||
////if (!Expanded) pe.Graphics.DrawLine(p, new Point(center, penWidth), new Point(center, limit));
|
||||
p.Dispose();
|
||||
b.Dispose();
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ namespace Volian.Controls.Library
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected void Dispose(bool disposing)
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,26 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
//public delegate void vlnTreeViewEvent(object sender, vlnTreeEventArgs args);
|
||||
//public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
||||
//public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args);
|
||||
//public delegate void vlnTreeViewDDEvent(object sender, System.Windows.Forms.DragEventArgs args);
|
||||
public partial class vlnTreeView3 : TreeView
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
#region Events
|
||||
public event vlnTreeViewEvent NodeSelectionChange;
|
||||
private void OnNodeSelectionChange(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
if (NodeSelectionChange != null) NodeSelectionChange(sender, args);
|
||||
}
|
||||
private void OnNodeSelectionChange(object sender, vlnTreeEventArgs args) => NodeSelectionChange?.Invoke(sender, args);
|
||||
#endregion
|
||||
#region Business Methods
|
||||
#endregion
|
||||
@@ -30,33 +16,8 @@ namespace Volian.Controls.Library
|
||||
InitializeComponent();
|
||||
base.AfterSelect += new TreeViewEventHandler(tv_AfterSelect);
|
||||
}
|
||||
private void tv_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
OnNodeSelectionChange(sender, new vlnTreeEventArgs(e.Node));
|
||||
}
|
||||
private void tv_AfterSelect(object sender, TreeViewEventArgs e) => OnNodeSelectionChange(sender, new vlnTreeEventArgs(e.Node));
|
||||
#endregion
|
||||
private static TreeNode GetTreeNodeFromData(IDataObject datobj)
|
||||
{
|
||||
foreach (string s in datobj.GetFormats())
|
||||
{
|
||||
try
|
||||
{
|
||||
return (TreeNode)datobj.GetData(s);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("GetTreeNodeFromData", ex);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private TreeNode Clone(TreeNode tn)
|
||||
{
|
||||
|
||||
TreeNode tmp = (TreeNode)tn.Clone();
|
||||
ExpandMatch(tmp, tn);
|
||||
return tmp;
|
||||
}
|
||||
private void ExpandMatch(TreeNode tn1, TreeNode tn2)
|
||||
{
|
||||
if (tn2.IsExpanded) tn1.Expand();
|
||||
|
||||
Reference in New Issue
Block a user