Compare commits

...

293 Commits

Author SHA1 Message Date
jjenko 1ce1a45ca6 B2026-036 Fixed issue where if a RO return value and a dash followed by numbers, the numbers following the dash would be truncated when inserting in step editor text. 2026-03-27 15:26:06 -04:00
jjenko 604b4d1751 Merge pull request 'C2026-031 - BNPP Cover Page Consolidation' (#748) from BNPP_CoverPage_Consolidation into Development
good for testing phase
2026-03-26 09:28:07 -04:00
mschill 874aaf2857 Merge branch 'Development' into BNPP_CoverPage_Consolidation 2026-03-26 09:15:23 -04:00
mschill 17a28def4e Update Copyright date 2026-03-26 09:17:13 -04:00
jjenko e72a1aa9e7 Merge pull request 'B2026-018_The_Disable_Initial_Line_check_box' (#747) from B2026-018_The_Disable_Initial_Line_check_box into Development
good for testing phase
2026-03-26 09:11:20 -04:00
mschill 7b96ef1b4c BNPP Cover Page Consolidation 2026-03-26 09:02:14 -04:00
plarsen ea048e6d82 B2026-018_The_Disable_Initial_Line_check_box 2026-03-26 07:55:27 -04:00
plarsen 109abfb4ad Merge branch 'Development' into B2026-018_The_Disable_Initial_Line_check_box 2026-03-26 07:53:21 -04:00
plarsen 3f662ab19d B2026-018_The_Disable_Initial_Line_check_box 2026-03-25 22:55:52 -04:00
jjenko b0de38909a Merge pull request 'B2026-023-Adding-RO-Editor-symbols-to-RO-X_Y_plots' (#746) from B2026-023-Adding-RO-Editor-symbols-to-RO-X_Y_plots into Development
good for testing phase
2026-03-25 13:26:02 -04:00
plarsen 267de44103 Merge branch 'Development' into B2026-023-Adding-RO-Editor-symbols-to-RO-X_Y_plots 2026-03-25 11:54:12 -04:00
plarsen b7b0e55d94 B2026-023-Adding-RO-Editor-symbols-to-RO-X_Y_plots 2026-03-25 11:41:39 -04:00
plarsen c0d12f5721 B2026-023-Adding-RO-Editor-symbols-to-RO-X_Y_plots 2026-03-25 11:34:58 -04:00
mschill 27a945485f Merge pull request 'B2026-034 Fixed issue where import of procedure set failed when it was deleting the temporary folders that are created during the process, preventing the importing code to try and fix transitions and foldout information (link).' (#745) from B2026-034 into Development
Looks Good. Ready for QA.
2026-03-25 06:04:23 -04:00
jjenko d76c81a9d8 B2026-034 Fixed issue where import of procedure set failed when it was deleting the temporary folders that are created during the process, preventing the importing code to try and fix transitions and foldout information (link). 2026-03-24 16:27:22 -04:00
jjenko 143a3622dd Merge pull request 'C2026-007_B2026-027' (#744) from C2026-007_B2026-027 into Development
good for continued  testing
2026-03-24 08:56:31 -04:00
mschill 75992293c6 Merge branch 'Development' into C2026-007_B2026-027 2026-03-24 08:45:28 -04:00
mschill 0e004828b3 Merge branch 'C2026-007_B2026-027' of https://git.volian.com/Volian/SourceCode into C2026-007_B2026-027 2026-03-24 08:46:04 -04:00
mschill 714751f404 C2026-007 Admin Tool Generate Word Attachments 2026-03-24 08:45:55 -04:00
jjenko 27576e946e Merge pull request 'C2026-007 - Handle case for Step Progress when all switchboxes are turned off and then Regen Word Attachments is turned back on.' (#743) from C2026-007_B2026-027 into Development
good for testing
2026-03-23 08:13:48 -04:00
mschill e548dddcbd Merge branch 'Development' into C2026-007_B2026-027 2026-03-23 08:04:33 -04:00
mschill 8cbc8c497e C2026-007 - Handle case for Step Progress when all switchboxes are turned off and then Regen Word Attachments is turned back on. 2026-03-23 06:30:41 -04:00
jjenko c328140441 Merge pull request 'B2026-033 Tooltip for Generate Word Attachments' (#742) from B2026-033 into Development
good for testing
2026-03-20 15:37:05 -04:00
mschill a10798c983 B2026-033 Tooltip for Generate Word Attachments 2026-03-20 15:30:51 -04:00
jjenko 06909e260f Merge pull request 'B2026-030 GoTo sometimes requires being pressed twice for ROs' (#741) from B2026-030 into Development
good for testing
2026-03-18 14:47:28 -04:00
mschill 5eca8a5150 B2026-030 GoTo sometimes requires being pressed twice for ROs 2026-03-18 14:44:45 -04:00
jjenko 88a13f9864 Merge pull request 'C2026-028 Update Tooltip for “Set All at Level” in Applicability.' (#740) from C2026-028 into Development
good for testing
2026-03-18 08:21:01 -04:00
mschill e03ae6195a C2026-028 Update Tooltip for “Set All at Level” in Applicability. 2026-03-18 07:53:17 -04:00
jjenko c3cacaf407 Merge pull request 'B2026-022-Adding-RO-Editor-symbols-to-RO-Tables' (#738) from B2026-022-Adding-RO-Editor-symbols-to-RO-Tables into Development
good for testing
2026-03-17 16:09:54 -04:00
plarsen 4b479b3ceb B2026-022-Adding-RO-Editor-symbols-to-RO-Tables 2026-03-17 15:30:35 -04:00
jjenko c78cb805fb Merge pull request 'C2026-030 corrected the Alarm format cover page' (#739) from C2026-030_BNPP_CoverAdjustments into Development
format only change. good for tesing
2026-03-17 11:25:24 -04:00
jjenko d17688fc9d C2026-030 corrected the Alarm format cover page 2026-03-17 11:24:24 -04:00
plarsen fd59b9d5f0 Merge branch 'Development' into B2026-022-Adding-RO-Editor-symbols-to-RO-Tables 2026-03-17 08:39:28 -04:00
jjenko 0e71c9f5f5 Merge pull request 'C2026-007 Upgrade - Generate Missing Word Attachments/B2026-027 Update Refresh Tables For Search Tooltip' (#737) from C2026-007_B2026-027 into Development
good for testing phase
2026-03-16 14:55:39 -04:00
mschill bc3c14589e C2026-007 Upgrade - Generate Missing Word Attachments/B2026-027 Update Refresh Tables For Search Tooltip 2026-03-16 14:45:04 -04:00
jjenko 4331f49f6f Merge pull request 'C2026-030 Barakah asked that the white space between the procedure number and procedure title be reduced when the KEPCO number is not printed' (#736) from C2026-030_BNPP_CoverAdjustments into Development
Format only changes -ready for testing
2026-03-16 14:33:07 -04:00
jjenko 294d19e9d1 C2026-030 Barakah asked that the white space between the procedure number and procedure title be reduced when the KEPCO number is not printed 2026-03-16 14:32:57 -04:00
plarsen ed615dbb31 B2026-022-Adding-RO-Editor-symbols-to-RO-Tables 2026-03-16 13:30:36 -04:00
plarsen e9ad57f588 B2026-022-Adding-RO-Editor-symbols-to-RO-Tables 2026-03-16 12:44:04 -04:00
jjenko 7fee639b53 Merge pull request 'B2026-032 Revert Clipboard B2025-064' (#734) from Revert-Clipboard-B2025-064 into Development
Reviewed-on: #734
Reviewed-by: John Jenko <jjenko@volian.com>
2026-03-12 14:49:45 -04:00
mschill c2a5a8ec7d Revert Clipboard B2025-064 2026-03-12 14:35:32 -04:00
jjenko ec823cab97 Merge pull request 'B2026-031 PROMS Crash in Admin Tools Maintenance - Purge Change History' (#733) from B2026-031 into Development
good for testing
2026-03-12 11:22:06 -04:00
mschill 83f88b6df3 B2026-031 PROMS Crash in Admin Tools Maintenance - Purge Change History 2026-03-12 11:10:04 -04:00
plarsen 7636fe7686 B2026-022-Adding-RO-Editor-symbols-to-RO-Tables 2026-03-11 20:26:01 -04:00
jjenko 1e12c82be4 Merge pull request 'B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview' (#729) from B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview into Development
good for testing phase
2026-03-10 13:23:59 -04:00
plarsen 9879a80569 Merge branch 'Development' into B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview 2026-03-10 11:56:10 -04:00
plarsen 13b03f4f89 B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview 2026-03-10 11:50:21 -04:00
jjenko 331de6ecfe Merge pull request 'B2026-029 Update the Clipboard Copying in PROMS StepTabRibbon to retry' (#731) from B2026-029 into Development
good for testing
2026-03-10 08:39:11 -04:00
plarsen 7b649c4a62 B2026-018_The_Disable_Initial_Line_check_box 2026-03-10 08:24:28 -04:00
mschill 9ccdaef354 B2026-029 Update the Clipboard Copying in PROMS StepTabRibbon to retry 2026-03-10 07:02:50 -04:00
jjenko fa114f4467 Merge pull request 'B2026-028_Selecting_to_Go_To_on_an_RO_causes_PROMS_to_crash' (#730) from B2026-028_Selecting_to_Go_To_on_an_RO_causes_PROMS_to_crash into Development
good for testing
2026-03-09 14:41:03 -04:00
plarsen 33cc650871 B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview 2026-03-09 14:26:19 -04:00
plarsen 95737d05e1 B2026-028 Selecting to Go To on an RO causes PROMS to crash. 2026-03-09 13:43:18 -04:00
plarsen 955ffc48d3 B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview 2026-03-09 11:41:13 -04:00
plarsen d79dd908f6 B2026-028 Selecting to Go To on an RO causes PROMS to crash 2026-03-08 22:28:23 -04:00
plarsen 4656ec30af Development 2026-03-08 22:06:02 -04:00
plarsen a0be60a1b9 B2026-025_Unicode_removed_from_RO_menu_titles_in_treeview 2026-03-07 22:38:18 -05:00
jjenko d296d6f000 Merge pull request 'B2026-026_RO_Values_in_the_RO_value_textbox_at_the_top_Step_Properties_panel_now_displays_symbols' (#728) from B2026-026_RO_Values_in_the_RO_value_textbox_at_the_top_Step_Properties_panel_now_displays_symbols into Development
good for testing
2026-03-03 08:35:21 -05:00
plarsen 8df4bd2537 B2026-026_RO_Values_in_the_RO_value_textbox_at_the_top_Step_Properties_panel_now_displays_symbols 2026-03-02 23:23:47 -05:00
jjenko cc5cdb88ff Merge pull request 'B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open' (#727) from B2026-019 into Development
good for testing phase
2026-03-02 14:18:13 -05:00
mschill f66c6a93c5 Merge branch 'Development' into B2026-019 2026-03-02 14:12:12 -05:00
mschill a7b5ee33e2 B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open 2026-03-02 14:12:26 -05:00
jjenko fe90af5aa4 Merge pull request 'B2026-021-some-symbols-not-being-displayed-correctly' (#726) from B2026-021-some-symbols-not-being-displayed-correctly into Development
good for testing phase
2026-02-27 13:34:23 -05:00
plarsen 7e672d91e9 Merge branch 'Development' of https://git.volian.com/Volian/SourceCode into Development 2026-02-27 12:07:26 -05:00
jjenko 09f472bee2 Merge pull request 'F2026-011 Vogtle Units 3&4 Backgrounds. Adjusted the section title text for the section 5.0 continue message so that it aligns with the background text on the page' (#725) from F2026-011_VogtleBackgrounds_sect_title_adj into Development
format only change
2026-02-27 10:35:25 -05:00
jjenko 30da0c5105 F2026-011 Vogtle Units 3&4 Backgrounds. Adjusted the section title text for the section 5.0 continue message so that it aligns with the background text on the page 2026-02-27 10:35:46 -05:00
jjenko d2082cdbea Merge pull request 'B2026-019' (#724) from B2026-019 into Development
good for testing
2026-02-27 10:11:28 -05:00
mschill c42596811e Merge branch 'Development' into B2026-019 2026-02-27 10:05:26 -05:00
mschill d095a19187 Merge branch 'B2026-019' of https://git.volian.com/Volian/SourceCode into B2026-019 2026-02-27 10:06:42 -05:00
mschill 8089e2c898 B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open 2026-02-27 10:06:24 -05:00
jjenko a657d03fb0 Merge pull request 'F2026-012 Vogtle Units 3&4 Background format. Fixed the step tab for FOP Criteria (foldout background information).' (#723) from F2026-012_VogtleBackgroundFOP into Development
format only change
2026-02-27 09:34:25 -05:00
jjenko 4e829200f5 F2026-012 Vogtle Units 3&4 Background format. Fixed the step tab for FOP Criteria (foldout background information). 2026-02-27 09:01:34 -05:00
plarsen bef9be5cbe Merge branch 'Development' of https://git.volian.com/Volian/SourceCode into Development 2026-02-26 15:44:46 -05:00
jjenko 56f14323d1 Merge pull request 'B2026-017 Use Pre-typed in information when adding New Applicability' (#722) from B2026-017 into Development
good for testing phase
2026-02-26 15:07:15 -05:00
mschill 4fcd22ca68 B2026-017 Use Pre-typed in information when adding New Applicability 2026-02-26 14:49:06 -05:00
plarsen 21890e74fe Merge branch 'Development' of https://git.volian.com/Volian/SourceCode into Development 2026-02-26 14:33:59 -05:00
jjenko ef32564fba Merge pull request 'B2026-024 Change bars should not show when updating Applicability.' (#721) from B2026-024 into Development
good for testing phase
2026-02-26 14:04:16 -05:00
mschill d95505726f B2026-024 Change bars should not show when updating Applicability. 2026-02-26 13:14:25 -05:00
plarsen bb7b892f7c Merge branch 'Development' of https://git.volian.com/Volian/SourceCode into Development 2026-02-25 15:51:27 -05:00
jjenko 836cdaf087 Merge pull request 'B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open' (#719) from B2026-019 into Development
good for testing phase
2026-02-25 15:48:11 -05:00
mschill 6f5c41abb8 Merge branch 'Development' into B2026-019 2026-02-25 15:41:45 -05:00
jjenko 6379321785 Merge pull request 'F2026-010_VogtleBack_fontsize' (#720) from F2026-010_VogtleBack_fontsize into Development
format only change.
2026-02-25 15:40:41 -05:00
mschill e4c6e4393e B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open 2026-02-25 15:36:44 -05:00
jjenko 3e6bb81e39 F2025-010 Vogtle Units 3&4 Backgrounds. Made the font size of the hard-coded section 5.0 title and the linked step tab and step number consistent with the rest of the document. 2026-02-25 15:34:19 -05:00
plarsen ded6f18dd5 Development 2026-02-25 15:27:25 -05:00
jjenko 81643e2aef Merge pull request 'C2026-023 Change "Applicability - Set All at Level" to check the transitions at each level for steps that would be changed.' (#718) from C2026-023 into Development
good for testing
2026-02-25 11:30:15 -05:00
mschill 8a186f9f0c C2026-023 Change "Applicability - Set All at Level" to check the transitions at each level for steps that would be changed. 2026-02-25 08:37:29 -05:00
jjenko 14aa39976a Merge pull request 'B2025-064 PROMS clears the windows clipboard when closing PROMS with tabs open.' (#717) from B2025-064_v2 into Development
good for testing
2026-02-24 09:10:36 -05:00
jjenko c077e0ddc2 Merge pull request 'B2026-016 Fix Error Approving a Procedure without ROs set' (#716) from B2026-016 into Development
good for testing
2026-02-24 09:08:40 -05:00
mschill d198a7b63a B2025-064 PROMS clears the windows clipboard when closing PROMS with tabs open. 2026-02-24 08:22:18 -05:00
mschill 7f36a33dea B2026-016 Fix Error Approving a Procedure without ROs set 2026-02-24 07:08:07 -05:00
jjenko db3d9fc65f Merge pull request 'C2026-010 Add Audit History to Setting Change Bars' (#715) from C2026-010 into Development
good for testing
2026-02-23 15:40:15 -05:00
mschill f9738451db C2026-010 Add Audit History to Setting Change Bars 2026-02-23 15:25:32 -05:00
mschill ec73b5cbea Merge pull request 'C2022-003-Change-Textboxes-to-RTF-3' (#701) from C2022-003-Change-Textboxes-to-RTF-3 into Development
Ready for testing phase.
2026-02-20 10:31:50 -05:00
mschill f3bd6b6469 Merge branch 'Development' into C2022-003-Change-Textboxes-to-RTF-3 2026-02-20 10:28:29 -05:00
jjenko fd50993fb9 Merge pull request 'C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2' (#714) from C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2 into Development
good for testing phase
2026-02-20 09:06:00 -05:00
plarsen 079381dbb0 C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2 2026-02-20 09:04:01 -05:00
plarsen 85bdc35342 C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2 2026-02-19 16:18:31 -05:00
plarsen 2aaaa55e42 C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2 2026-02-19 15:40:34 -05:00
plarsen e999bea228 C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2 2026-02-19 13:44:37 -05:00
plarsen 287c06383b C024-039_Button_on_Applicability_Tab_to_change_all_at_same_level_for_setting_the_item_mode-2 2026-02-19 10:03:57 -05:00
jjenko 202409c140 Merge pull request 'B2026-015 Changing Formats for a Section' (#713) from B2026-015 into Development
good for testing
2026-02-16 16:27:04 -05:00
mschill 34886beccb B2026-015 Changing Formats for a Section
When changing the format for a section, the available section types sometimes requires the user to exit and get back in.

Noticed this with Vogle when changing for a format VEGBckStps to VEGP2 that the Landscape Attachment was not showing till exited and got back in.
2026-02-16 14:45:08 -05:00
jjenko 3d200cc34e Merge pull request 'F2026-007 - Added Landscape Attachment - Word Editor DocStyles/PageStyles to Background Document Formats / F2026-009 Vogtle Backgrounds Table of Contents adjustment' (#712) from F2026-007_F2026-009 into Development
merging into development
2026-02-13 15:20:40 -05:00
mschill b13883530a F2026-007 - Added Landscape Attachment - Word Editor DocStyles/PageStyles to Background Document Formats / F2026-009 Vogtle Backgrounds Table of Contents adjustment 2026-02-13 15:10:17 -05:00
jjenko 032e04bc50 Merge pull request 'B2026-014 Approved Procedure Export' (#711) from B2026-014 into Development
good for testing
2026-02-12 13:56:14 -05:00
mschill 625b715832 B2026-014 Approved Procedure Export 2026-02-12 13:51:06 -05:00
jjenko e1ac360271 Merge pull request 'F2064-008 Turned off pagination flags that caused bad pagination in the background steps' (#710) from F2026-008_VogtleBackgroundsPagination into Development
Format only change - good for testing
2026-02-12 11:49:57 -05:00
jjenko 7eda88bdbe F2064-008 Turned off pagination flags that caused bad pagination in the background steps 2026-02-12 11:49:40 -05:00
jjenko 90fdb94e95 Merge pull request 'C2026-009 Reset Change Bars to Date of Last Approval' (#709) from C2026-009 into Development
good for testing
2026-02-11 16:15:06 -05:00
mschill 15979203ce C2026-009 Reset Change Bars to Date of Last Approval 2026-02-11 16:07:33 -05:00
jjenko 53360a03af Merge pull request 'B2026-012 - Global Search for Caution Step Types when they are on a step with a Note shows the Caution listed as a Note 2 when Results Style is set to Step Path' (#707) from B2026-012 into Development
good for testing phase
2026-02-06 14:56:18 -05:00
mschill 9f6f7c23f6 B2026-012 - Global Search for Caution Step Types when they are on a step with a Note shows the Caution listed as a Note 2 when Results Style is set to Step Path 2026-02-06 14:54:22 -05:00
jjenko 7419f4e886 Merge pull request 'F2026-007 Set the Caution text font to not have any style set so that it is no longer italicized.' (#705) from F2026-006 into Development
format only change - good for testing
2026-02-05 15:09:45 -05:00
jjenko f90a80c366 F2026-007 Set the Caution text font to not have any style set so that it is no longer italicized. 2026-02-05 15:09:34 -05:00
jjenko d9ec756e22 Merge pull request 'C2026-013 Adjust wording of Tooltip for Check RO Links' (#704) from C2026-013 into Development
good for testing
2026-02-05 13:35:47 -05:00
mschill 9f7c24c540 C2026-013 Adjust wording of Tooltip for Check RO Links 2026-02-05 13:25:20 -05:00
jjenko fe2833395d Merge pull request 'F2026-004_F2026-005_VogtleBackgroundChanges' (#703) from F2026-004_F2026-005_VogtleBackgroundChanges into Development
format only changes- good for use in the cleanup of Vogtle Units 3&4 background data
2026-02-04 14:21:41 -05:00
jjenko a181cf3815 F2026-004 F2026-005 Vogte Units 3&4 Backgrounds. Adjusted the length of the box on the cover page
and pecified that Cautions come before Notes
2026-02-04 14:19:04 -05:00
jjenko dfce44a47a Merge pull request 'C2026-012 Manage Security - Remove cancel from the prompts related to deleting groups/users/members.' (#702) from C2026-012 into Development
good for testing
2026-02-04 13:42:31 -05:00
mschill 22280bf1e3 C2026-012 Manage Security - Remove cancel from the prompts related to deleting groups/users/members. 2026-02-04 13:25:17 -05:00
mschill 30aedb6eec C2022-003-Change-Textboxes-to-RTF-3
undoing the changes to: frmVEPROMS.Designer.cs, frmVEPROMS.resx, StepTabRibbon.designer.cs, & StepTabRibbon.resx
2026-02-04 10:47:29 -05:00
plarsen 12f175740f C2022-003-Change-Textboxes-to-RTF-3 2026-02-03 22:07:38 -05:00
plarsen 5c0f11aea1 Merge remote-tracking branch 'origin/Development' into C2022-003-Change-Textboxes-to-RTF-3 2026-02-03 22:05:31 -05:00
plarsen 879518c4a9 C2022-003-Change-Textboxes-to-RTF-3 2026-02-03 15:02:16 -05:00
jjenko 7afca6a254 Merge pull request 'B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.' (#700) from B2026-011 into Development
good for testing
2026-02-03 13:57:46 -05:00
mschill 1c56aa2eb1 B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
Multi-Unit Background documents --- Found this while looking at background Documents for Vogtle 3/4 --- particularly AOP-101 -> Operator Actions -> Step 2: Note 2.

When there is a unit designator (like <U-NAME>-AOP-101. ) in the note's text, PROMS renders the text and pulls it over as text only to the background document.

This causes printing the background document to print as if both units instead of resolving if a specific unit is being printed.
2026-02-03 13:30:30 -05:00
plarsen ecaf00c5b3 Merge remote-tracking branch 'origin/Development' into C2022-003-Change-Textboxes-to-RTF-3 2026-02-03 09:23:20 -05:00
plarsen bfdc77da97 C2022-003-Change-Textboxes-to-RTF-3 2026-02-03 08:44:15 -05:00
jjenko f38aa4595f Merge pull request 'C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure' (#699) from C2026-062 into Development
good for testing
2026-02-02 15:54:50 -05:00
mschill aa0b906a9f C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure 2026-02-02 15:27:23 -05:00
mschill 9e64e5a60e Merge branch 'Development' into C2022-003-Change-Textboxes-to-RTF-3 2026-01-30 14:39:26 -05:00
plarsen 35eb05432b C2022-003-Change-Textboxes-to-RTF-3 2026-01-29 19:38:04 -05:00
plarsen 77c6298067 C2022-003-Change-Textboxes-to-RTF-3 2026-01-28 14:47:00 -05:00
mschill f43d1e5f47 Merge pull request 'B2026-009 For Vogtle Units 3&4, fixed bug where a double asterisk was place next to a continuous action RNO on the edit screen and printed with the CAS box shifted to the left.' (#697) from B2026-009_VogtleCAS into Development
Looks Good. Ready for QA!
2026-01-28 13:37:26 -05:00
jjenko 63a74e1aef B2026-009 For Vogtle Units 3&4, fixed bug where a double asterisk was place next to a continuous action RNO on the edit screen and printed with the CAS box shifted to the left. 2026-01-28 12:08:19 -05:00
jjenko 69e45e9ae8 Merge pull request 'F2026-003 Adjustments to the Vogtle Units 3&4 background step format that were needed for Jeff’s procedure importer tool' (#696) from F2026-003_VogtleBckGndChanges into Development
format only change.
2026-01-27 13:17:22 -05:00
jjenko 53cf35014c F2026-003 Adjustments to the Vogtle Units 3&4 background step format that were needed for Jeff’s procedure importer tool 2026-01-27 13:17:42 -05:00
jjenko d6e4239573 Merge pull request 'C2026-006 Change Title bar on Add/Edit User' (#695) from C2026-006 into Development
good for testing phase
2026-01-27 08:15:11 -05:00
mschill c76808e11e C2026-006 Change Title bar on Add/Edit User 2026-01-27 07:34:04 -05:00
jjenko b2428a4211 Merge pull request 'B2026-007 PROMS Security - don't error when add a user to a group but no group selected/C2026-004 – Add a messagebox when create group' (#694) from B2026-007_C2026-004 into Development
good for testing
2026-01-26 14:41:40 -05:00
mschill aa0e919713 B2026-007 PROMS Security - don't error when add a user to a group but no group selected/C2026-004 – Add a messagebox when create group 2026-01-26 14:37:48 -05:00
mschill 7e2a41b6cb Merge pull request 'B2026-003 Imported memory handling in the FlexGrid (table) code for when we are replacing many RO values in table cells' (#693) from B2026-003_crash_fixing_ROs_in_table into Development
Looks Good. Ready for QA.
2026-01-23 16:07:16 -05:00
jjenko 258b1d2d1f B2026-003 Imported memory handling in the FlexGrid (table) code for when we are replacing many RO values in table cells 2026-01-23 15:55:36 -05:00
jjenko a4ea200e38 Merge pull request 'B2026-006 Try to force designer update' (#692) from B2026-006 into Development
good for testing
2026-01-23 10:17:43 -05:00
mschill 43a27c16a6 B2026-006 Try to force designer update
It looks like when pulled into development -- changes to DisplayHistory.designer were not pulling down locally / compiling in when not on the computer they were originally made on. Made an update that hopefully should force this file to recompile.
2026-01-23 10:10:08 -05:00
jjenko 3c693baab0 Merge pull request 'B2026-006 – Summary of Changes report generation enhancements' (#691) from B2026-006 into Development
good for testing
2026-01-23 08:30:48 -05:00
mschill d186e2702c B2026-006 – Summary of Changes report generation enhancements 2026-01-23 06:20:49 -05:00
mschill aee478114b Merge pull request 'C2026-003 For Vogtle Units 3&4, added format variable to allow a high level RNO step be “tagged” as a Continuous Action Step, when the parent AER step is not a continuous action step' (#689) from C2026-003_Vogtle_RNO_ContActionStep into Development
Looks Good. Ready for QA.
2026-01-21 14:37:19 -05:00
jjenko 6220530855 C2026-003 For Vogtle Units 3&4, added format variable to allow a high level RNO step be “tagged” as a Continuous Action Step, when the parent AER step is not a continuous action step 2026-01-21 14:30:44 -05:00
jjenko 69ae37021c Merge pull request 'B2026-001-Sort-order--for-ROs-Wolf-Creek-4' (#688) from B2026-001-Sort-order--for-ROs-Wolf-Creek-4 into Development
good for testing phase
2026-01-20 08:36:08 -05:00
plarsen e2382a403b B2026-001-Sort-order--for-ROs-Wolf-Creek-4 2026-01-19 17:23:01 -05:00
plarsen 0ae45eb918 C2022-003-Change-Textboxes-to-RTF-3 2026-01-19 12:15:03 -05:00
jjenko d8882f8d0c Merge pull request 'C2026-002 Admin Tool - Data Check - Enhancements to new admin Tool for ROs not used.' (#686) from C2026-002 into Development
good for testing phase
2026-01-19 11:38:01 -05:00
mschill 00c64411c5 C2026-002 Admin Tool - Data Check - Enhancements to new admin Tool for ROs not used.
Add the ability to filter out groups of Alarms from the results.
2026-01-19 11:33:10 -05:00
jjenko c0f35a7d84 Merge pull request 'Remove OPTIMIZE_FOR_SEQUENTIAL_KEY for compatibility with earlier SQL versions' (#685) from Update_ForSQL_Compat_1_19_2026 into Development
looks good.  Devin will testing while updating databases on the Volian server.
2026-01-19 10:09:25 -05:00
mschill 12cf05bb87 Remove OPTIMIZE_FOR_SEQUENTIAL_KEY for compatibility with earlier SQL versions 2026-01-19 10:01:37 -05:00
mschill 325c17647e Merge pull request 'F2026-002_Vogtle_Top_Continue_Message' (#684) from F2026-002_Vogtle_Top_Continue_Message into Development
Looks good. Ready for QA.
2026-01-16 14:40:59 -05:00
jjenko c6eeb2107a F2026-002 Added a format flag for Vogtle Units 3 & 4 to prevent a duplicate sub-step letter in the top continue message, when a step breaks at second level sub-step in the RNO 2026-01-16 14:31:09 -05:00
jjenko 70fd037161 Merge pull request 'B2026-002 When parens are inside a parent / child, printing a double parens.' (#683) from B2026-002 into Development
good for testing phase
2026-01-15 08:48:53 -05:00
mschill ed4469bd5f B2026-002 When parens are inside a parent / child, printing a double parens.
When "(tunable)" was added to the RO return value that has Parent/Child turned on in the field, that return value will print "(turnable))" - with two closing parentheses.

 In Vogtle data, Customer turned on Parent/Child on the Setpoint field in the Alarms CSD grouping.
 Added "(tunable)" to the Setpoint's default value in CDS-ARP-001-172

 The value looks good in the editor but prints with two closing parens.
2026-01-15 07:20:46 -05:00
plarsen 5ce168071c C2022-003-Change-Textboxes-to-RTF-3 2026-01-14 16:41:17 -05:00
mschill 4273d72b9d Merge pull request 'F2026-001 Added the ability to prefix a Continuous Action sub-step tab with its parent tab.' (#682) from F2026-001_Add_Parent_Tab_To_CAS_Step into Development
Looks good. Ready for QA.
2026-01-14 16:07:02 -05:00
jjenko 30f56d1f9b F2026-001 Added the ability to prefix a Continuous Action sub-step tab with its parent tab. 2026-01-14 16:01:40 -05:00
plarsen d560468f3c C2022-003-Change-Textboxes-to-RTF-3 2026-01-14 13:48:47 -05:00
plarsen ac5e49d0fc C2022-003-Change-Textboxes-to-RTF-3 2026-01-14 08:46:14 -05:00
plarsen 447d1f510c C2022-003-Change-Textboxes-to-RTF-3 2026-01-14 07:04:35 -05:00
plarsen c0651e4e2c C2022-003-Change-Textboxes-to-RTF-3 2026-01-13 15:24:44 -05:00
plarsen f8865206e9 C2022-003-Change-Textboxes-to-RTF-3 2026-01-13 11:46:47 -05:00
plarsen 5e7d2431b3 C2022-003-Change-Textboxes-to-RTF-3 2026-01-12 16:29:00 -05:00
jjenko 9bb13f6d88 Merge pull request 'C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data.' (#680) from C2025-043 into Development
good for testing
2026-01-12 15:25:55 -05:00
mschill 52dbd8afec C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data.
Performance Improvement
2026-01-12 15:21:18 -05:00
plarsen 99216321a8 C2022-003-Change-Textboxes-to-RTF-3 2026-01-12 13:37:14 -05:00
jjenko 31a0f04710 Merge pull request 'C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data.' (#679) from C2025-043 into Development
good for testing phase
2026-01-09 10:30:11 -05:00
mschill ac88add40b C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data. 2026-01-09 09:12:00 -05:00
plarsen 5a2c0460aa C2022-003-Change-Textboxes-to-RTF-3 2026-01-06 13:18:49 -05:00
jjenko 862cf67375 Merge pull request 'B2025-065 When Printing a Word Section containing XY Plot ROs - when there is a title on the XY Plot, only the first line is indented.' (#677) from B2025-065 into Development
good for testing phase
2026-01-02 15:14:57 -05:00
mschill dae850616d B2025-065 When Printing a Word Section containing XY Plot ROs - when there is a title on the XY Plot, only the first line is indented. 2026-01-02 15:12:54 -05:00
plarsen 72c2bd90e4 C2022-003-Change-Textboxes-to-RTF-3 2025-12-24 14:20:31 -05:00
plarsen d4ecf28147 C2022-003-Change-Textboxes-to-RTF-3 2025-12-22 17:16:00 -05:00
jjenko 149e114359 Merge pull request 'Rollback_B2025-064' (#674) from Rollback_B2025-064 into Development
merged into development.
2025-12-16 14:50:13 -05:00
mschill 7d63e7e417 Rollback_B2025-064 - Rolling back changes for B2025-064 - that CSM item will be re-opened and revisited late January once vogtle is out. 2025-12-16 14:41:39 -05:00
mschill d12e5d19c9 Rollback_B2025-064 - Rolling back changes for B2025-064 - that CSM item will be re-opened and revisited late January once vogtle is out. 2025-12-16 14:38:41 -05:00
jjenko 7a6b3b7a86 Merge pull request 'Code Cleanup - Added a debug for developers around Clipboard setting Data Objects via the StepTabRibbon. Will be verified during the internal vogtle cleanup.' (#673) from Code_Cleanup_12_16_2025 into Development
Reviewed-on: #673
Reviewed-by: John Jenko <jjenko@volian.com>
Passed review. merging into development
2025-12-16 08:46:30 -05:00
mschill 97fc02b601 Code Cleanup - Added a debug for developers around Clipboard setting Data Objects via the StepTabRibbon. Will be verified during the internal vogtle cleanup. 2025-12-16 06:03:18 -05:00
jjenko 9485403712 Merge pull request 'C2025-060 When format is updated in PROMS, auto-update the format cache so it doesn't require exiting PROMS and going back in.' (#671) from C2025-060 into Development
good for testing phase
2025-12-10 14:53:31 -05:00
mschill caeead0bc0 C2025-060 When format is updated in PROMS, auto-update the format cache so it doesn't require exiting PROMS and going back in. 2025-12-10 14:49:45 -05:00
jjenko f93204e37e Merge pull request 'F2025-041 Added a non-bolded high level CAS step type for use in single column attachment' (#670) from F2025-042_Vogtle3&4_nonboldCAS into Development
format only change - good for testing
2025-12-09 16:15:45 -05:00
jjenko e6af91c6ab F2025-041 Added a non-bolded high level CAS step type for use in single column attachment 2025-12-09 16:15:06 -05:00
mschill c89428eed8 Merge pull request 'F2025-040 Added code to adjust the position of the CAS box around the high level step number in single column attachment sections' (#668) from F2025-040_VogtleSingleColAtt_ContActStep_Box into Development
Looks Good! Ready for QA!
2025-12-05 06:00:16 -05:00
jjenko b4f2b89139 F2025-040 Added code to adjust the position of the CAS box around the high level step number in single column attachment sections 2025-12-04 16:42:40 -05:00
jjenko aab7cdcf77 Merge pull request 'B2025-064 PROMS clears the windows clipboard when closing PROMS with tabs open.' (#667) from B2025-064 into Development
good for testing phase
2025-12-04 11:19:24 -05:00
mschill 47cdedefd4 B2025-064 PROMS clears the windows clipboard when closing PROMS with tabs open. 2025-12-04 10:41:37 -05:00
jjenko 710145a32d Merge pull request 'B2019-140/B2022-099 After doing an Approval (final stage) of a procedure, the change bars do not reset on the screen.' (#666) from B2019-140_B2022-099 into Development
good for testing phase
2025-12-03 16:03:25 -05:00
mschill 2783d2cc77 B2019-140/B2022-099 After doing an Approval (final stage) of a procedure, the change bars do not reset on the screen.
Also, when change the “Showing Change bars” option, the screen does not refresh.
2025-12-03 15:53:29 -05:00
plarsen 751794c1ec C2022-003-Change-Textboxes-to-RTF-3 2025-12-03 11:31:19 -05:00
mschill a7a5df1991 Merge pull request 'F2025-038 Added a format flag to not include the word “SECTION” in front the section number and title on the Continuous Action Summary that is generated by PROMS.' (#665) from F2025-038_Vogtle_3&4_CAS_Formating into Development
Looks Good! Ready for QA!
2025-12-02 12:17:03 -05:00
jjenko 62a296f909 F2025-038 Added a format flag to not include the word “SECTION” in front the section number and title on the Continuous Action Summary that is generated by PROMS. 2025-12-02 10:53:26 -05:00
plarsen c561aad661 C2022-003-Change-Textboxes-to-RTF-3 2025-12-02 10:44:35 -05:00
jjenko 0a301e1a84 Merge pull request 'F2025-039 Added “Deselect”, “deselect”, “Refill”, “refill” to the replace words list to the Vogtle Units 3&4 formats' (#664) from F2025-039_Vogtle_3&4_ReplaceWordsUpdate into Development
format only change - good for testing phase
2025-12-01 14:50:57 -05:00
jjenko 37e727202c F2025-039 Added “Deselect”, “deselect”, “Refill”, “refill” to the replace words list to the Vogtle Units 3&4 formats 2025-12-01 14:24:31 -05:00
plarsen 9023cc76a0 C2022-003-Change-Textboxes-to-RTF-3 2025-11-26 14:31:59 -05:00
jjenko 49bdd03c1c Merge pull request 'F2025-037 Added “/open” and “/reset” to the replacewords list and replace them as is so that the “open” and “reset” are not bolded when preceded by a forward slash.' (#663) from F2025-037_Vogtle_ReplaceWords_Tweak into Development
Format only change - good for testing
2025-11-21 09:56:55 -05:00
jjenko 23f4b672b2 F2025-037 Added “/open” and “/reset” to the replacewords list and replace them as is so that the “open” and “reset” are not bolded when preceded by a forward slash. 2025-11-21 09:46:09 -05:00
jjenko 599d45086f Merge pull request 'C2025-063 If Separate Windows is set, should not open Remember Tabs.' (#661) from C2025-063 into Development
good for testing phase
2025-11-20 08:44:09 -05:00
jjenko 93aed0e06a Merge pull request 'B2025-063 Show User in View Mode' (#660) from B2025-063 into Development
good for testing
2025-11-20 08:39:46 -05:00
mschill 7eb94d7575 C2025-063 If Separate Windows is set, should not open Remember Tabs. 2025-11-20 07:23:23 -05:00
mschill fa8b0bd6a1 B2025-063 Show User in View Mode 2025-11-20 07:06:43 -05:00
jjenko c26e271676 Merge pull request 'C2019-036' (#659) from C2019-036 into Development
good for testing
2025-11-19 09:05:32 -05:00
mschill 7d87477d68 C2019-036 View Only - handle case when Separate Windows and Remember Tabs 2025-11-19 09:01:16 -05:00
mschill 9002fb3828 C2019-036 View Mode - Avoid double prompt when Remembering Tabs & Open in Separate Window 2025-11-19 08:54:00 -05:00
jjenko 10257a832a Merge pull request 'C2019-036 View Only Mode - Handle special case where item is opened in a separate window and tabs are remembered' (#658) from C2019-036 into Development
good for testing phase
2025-11-19 08:47:04 -05:00
mschill 261f5a526c C2019-036 View Only Mode - Handle special case where item is opened in a separate window and tabs are remembered 2025-11-19 08:42:09 -05:00
jjenko b5e0c121e8 Merge pull request 'C2019-036 View Only Mode --- shouldn't prompt for View Only Mode if already open in another tab in View Only Mode' (#657) from C2019-036 into Development
good for testing phase
2025-11-19 08:18:25 -05:00
mschill 6d99c456e4 C2019-036 View Only Mode --- shouldn't prompt for View Only Mode if already open in another tab in View Only Mode 2025-11-19 06:34:52 -05:00
jjenko 8c6f0c2736 Merge pull request 'C2019-036 View Only mode work with Checked Out Procedures' (#656) from C2019-036 into Development
good for testing phase
2025-11-17 10:01:44 -05:00
mschill bd89af5e8c C2019-036 View Only mode work with Checked Out Procedures 2025-11-17 07:05:52 -05:00
mschill b0e4128d3c Merge pull request 'B2025-062 Fixed a null reference bug in the printing of Vogtle Units 3 & 4 AOP-204' (#655) from B2025-062_Vogtle_AOP_Null_Ref into Development
Looks Good. Read for QA!
2025-11-14 11:38:25 -05:00
jjenko 875a8f101a B2025-062 Fixed a null reference bug in the printing of Vogtle Units 3 & 4 AOP-204 2025-11-14 11:36:23 -05:00
mschill c5a8ef57ac Merge pull request 'B2025-060 Fixes the printing a sub-section top continue message when the section is forced to start on the next page, either by PROMS print logic or when that sub-section is set to separate pagination.' (#654) from B2025_060_SectContPrintBug into Development
Looks Good! Ready for QA!
2025-11-10 09:28:42 -05:00
jjenko c8adeed187 B2025-060 Fixes the printing a sub-section top continue message when the section is forced to start on the next page, either by PROMS print logic or when that sub-section is set to separate pagination. 2025-11-10 09:25:26 -05:00
jjenko 49f5f506d4 Merge pull request 'F2025-036 Removed the Two Column Attachment section style that is no longer needed because it’s identical to the “Attachment - Two Column Step Editor” section style' (#653) from F2025-036_Vogtle_3_4_rmvExtraSectStyle into Development
Format only change.  Good for testing
2025-11-07 09:51:13 -05:00
jjenko 1c87585570 F2025-036 Removed the Two Column Attachment section style that is no longer needed because it’s identical to the “Attachment - Two Column Step Editor” section style 2025-11-07 09:51:18 -05:00
jjenko 30eb52da77 Merge pull request 'F2025-035 Change the open/closed parenthesis on the 2nd and 3rd sub-step levelsl to just the close parenthesis' (#652) from F2025-035_Vogtle_3_4_substep_tab into Development
Format only change. Good for testing phase.
2025-11-06 16:00:49 -05:00
jjenko 6f089482e6 F2025-035 Change the open/closed parenthesis on the 2nd and 3rd sub-step levelsl to just the close parenthesis 2025-11-06 15:58:30 -05:00
jjenko 8e221cc263 Merge pull request 'F2025-034 Updated Transition format to turn off putting parenthesis around section title and turn off the attempt of title-casing the procedure title.' (#651) from F2025-034_VogtleTransitions into Development
format only change - good for testing phase
2025-11-06 15:14:13 -05:00
jjenko 441917b670 F2025-034 Updated Transition format to turn off putting parenthesis around section title and turn off the attempt of title-casing the procedure title. 2025-11-06 15:13:50 -05:00
jjenko 6251de3b38 Merge pull request 'F2025-033 Removed the hard coded text “OPERATOR ACTIONS” from the Two Column Attachment section style in Vogtle Two Column format' (#649) from F2025-033_Vogtle_3&4_Remove_Operator_Actions into Development
Format only change - good for testing
2025-11-05 11:53:01 -05:00
jjenko d731125a14 F2025-033 Removed the hard coded text “OPERATOR ACTIONS” from the Two Column Attachment section style in Vogtle Two Column format 2025-11-05 11:51:19 -05:00
mschill d6fe64bc40 Merge pull request 'B2025-058 and B2025-061 Removed the Continuous Action Step indicator from the sub-step number when being referenced in a transition.' (#648) from B2025-058_061_Vogtle_TransitionFix into Development
Looks Good. Ready for QA!
2025-11-04 16:05:13 -05:00
jjenko f8b93807ae B2025-058 and B2025-061 Removed the Continuous Action Step indicator from the sub-step number when being referenced in a transition. 2025-11-04 16:01:00 -05:00
jjenko 2287a111c1 Merge pull request 'F2025-031Corrected “Return To” in ReplaceWords list so that lower cased “return to” will remain lowercased and still be bolded.' (#647) from F2025-031_Vogtle3&4_ReplaceWordsFix into Development
Format only change - good for testing phase
2025-11-03 12:22:25 -05:00
jjenko a08d92ea41 F2025-031Corrected “Return To” in ReplaceWords list so that lower cased “return to” will remain lowercased and still be bolded. 2025-11-03 12:21:32 -05:00
jjenko c41d7981ba Merge pull request 'C2021-035 Add Refresh Tree Option at highest level' (#646) from C2021-035 into Development
good for testing phase
2025-10-31 09:56:06 -04:00
mschill 37f5336806 C2021-035 Add Refresh Tree Option at highest level 2025-10-31 09:44:01 -04:00
jjenko ebdc98dfa7 Merge pull request 'F2025-030 Un-bold the section End messages in the Vogtle Units 3&4 Single and Two Column formats' (#645) from F2025-030_Vogtle_End into Development
Format only - good for testing
2025-10-30 16:28:53 -04:00
jjenko f3c8c860f5 F2025-030 Un-bold the section End messages in the Vogtle Units 3&4 Single and Two Column formats 2025-10-30 16:27:52 -04:00
jjenko f7b27142c4 Merge pull request 'F2025-029 Added the Westinghouse Proprietary statement to all of the section styles in the Vogtle Units 3 & 4 formats' (#644) from F2025-029_Vogtle_Westinghouse_Footer into Development
Format only changes - good for testing phase
2025-10-30 11:15:21 -04:00
jjenko 4fc37c54c5 F2025-029 Added the Westinghouse Proprietary statement to all of the section styles in the Vogtle Units 3 & 4 formats 2025-10-30 11:15:30 -04:00
jjenko 849e1e57dd Merge pull request 'B2021-092 The "Custom Change Bar Text" option does not output any change bar text in the PDF output when information is added to Line one and/or Line two off the print dialog.' (#643) from B2021-092 into Development
good for testing phase
2025-10-27 08:18:29 -04:00
jjenko c768ca5eba Merge pull request 'B2025-053 Printing from Ribbon while Edits in progress' (#642) from B2025-053 into Development
good for testing phase
2025-10-27 08:16:59 -04:00
mschill c9516d90e9 B2021-092 The "Custom Change Bar Text" option does not output any change bar text in the PDF output when information is added to Line one and/or Line two off the print dialog. 2025-10-24 14:55:13 -04:00
mschill 327aae687a B2025-053 Printing from Ribbon while Edits in progress 2025-10-24 11:12:39 -04:00
jjenko 3cbe4617eb Merge pull request 'B2025-056 Incoming Transitions Go To Procedure' (#641) from B2025-056 into Development
good for testing phase
2025-10-22 14:28:01 -04:00
mschill de69fe6b6f B2025-056 Incoming Transitions Go To Procedure 2025-10-22 14:20:46 -04:00
jjenko e53101dacb Merge pull request 'C2024-047' (#640) from C2024-047 into Development
good for testing phase
2025-10-21 14:50:27 -04:00
mschill d3ec749848 C2024-047 Security Dialog
shouldn’t be bringing up a menu in the Group box unless a user is 1st selected in the Users box.
2025-10-21 14:48:06 -04:00
mschill 410b7d3dd6 C2024-047 Security Dialog
shouldn’t be bringing up a menu in the Group box unless a user is 1st selected in the Users box.
2025-10-21 14:47:30 -04:00
jjenko e87b233713 Merge pull request 'F2025-028 Turned on flag to bold only the high level RNO, only when it’s off of a high level step in the Vogtle Units 3 & 4 Two Column format' (#639) from F2025-028_Vogtle3_4_Bold_RNO into Development
Format only change.  Ready for Testing Phase
2025-10-21 10:41:03 -04:00
jjenko ca38ecb1cf F2025-028 Turned on flag to bold only the high level RNO, only when it’s off of a high level step in the Vogtle Units 3 & 4 Two Column format 2025-10-21 10:41:13 -04:00
jjenko 5dfa70dc10 Merge pull request 'C2024-047 Redesign PROMS Security Dialog' (#638) from C2024-047 into Development
good for testing phase
2025-10-20 14:02:03 -04:00
mschill ff3daff15a C2024-047 Redesign PROMS Security Dialog 2025-10-20 13:48:02 -04:00
jjenko 7b7f235354 Merge pull request 'F2025-027 Added cover page PSI information to Vogtle 3&4 background format used to for the linked background steps (VEGPBckStp)' (#637) from F2025-027_Vogtle_3_4_Backgrounds_PSI into Development
Format only change. ready for use in Volian data entry of backgrounds
2025-10-16 10:59:30 -04:00
jjenko 779c6247cd F2025-027 Added cover page PSI information to Vogtle 3&4 background format used to for the linked background steps (VEGPBckStp) 2025-10-16 10:59:09 -04:00
jjenko fcaffa8c5f Merge pull request 'B2025-057 Issue Copy-Pasting Enhanced Procedures' (#636) from B2025-057 into Development
Good for testing phase
2025-10-14 10:25:57 -04:00
mschill d2ffcc903a B2025-057 Issue Copy-Pasting Enhanced Procedures 2025-10-13 14:51:51 -04:00
jjenko 1d12c97e30 Merge pull request 'B2025-055 Corrected the format so that the Unit 4 Effective Date will print on the cover page' (#635) from B2025-055 into Development
Format only change.  ready for testing
2025-10-13 09:47:35 -04:00
jjenko 3bcaeb214e B2025-055 Corrected the format so that the Unit 4 Effective Date will print on the cover page 2025-10-13 09:47:29 -04:00
jjenko 85995040a8 Merge pull request 'B2025-054 Wrong Page Numbers in CAS Summary' (#633) from B2025-054 into Development
good for testing phase
2025-10-09 10:12:13 -04:00
mschill 826d06b532 B2025-054 Wrong Page Numbers in CAS Summary 2025-10-09 10:06:50 -04:00
jjenko 3328e35cf4 Merge pull request 'F2025-0926 Got Vogtle 3&4 Background formats ready for use.' (#632) from F2025-026_Vogtle_Background_Formats into Development
Format only change - for use when we import Vogtle Background data.
2025-10-08 14:02:48 -04:00
jjenko 091c56ec34 F2025-0926 Got Vogtle 3&4 Background formats ready for use. 2025-10-08 13:58:05 -04:00
jjenko 31e9910242 Merge pull request 'C2025-053 Upgrade Ro-Editor / Compare Report / Ro To SQL to 64 bits' (#631) from C2025-053 into Development
Good for testing phase
2025-10-06 16:22:17 -04:00
mschill f6e3c72e9c C2025-053 Upgrade RO Editor to 64 bit
Adjust Build Revision
2025-10-06 16:17:27 -04:00
mschill 3f618bc970 C2025-053 Upgrade RO Editor to 64 bit
Remove AssemblyInfo changes
2025-10-06 16:07:19 -04:00
mschill 1c766e568c C2025-053 Upgrade RO Editor to 64 bit
Adjust build revision and revert AssembloInfo to as-is
2025-10-06 16:01:59 -04:00
mschill 8ed9bfbfcb C2025-053 Upgrade Ro-Editor / Compare Report / Ro To SQL to 64 bits 2025-10-06 14:02:22 -04:00
jjenko f1d66fc446 Merge pull request 'F2025-025 Added the “Attachment - Single Column Step Editor” section type to the Vogtle Two Column format' (#630) from F2025_025_Vogtle3&4_SubSect_single_Att into Development
format only changes - good for testing phase
2025-10-02 14:04:56 -04:00
jjenko 50977b367f F2025-025 Added the “Attachment - Single Column Step Editor” section type to the Vogtle Two Column format 2025-10-02 14:05:04 -04:00
jjenko 45312d0564 Merge pull request 'C2025-037 – Spell Check Closes after one section' (#629) from C2025-037 into Development
Reviewed-on: #629
Reviewed-by: John Jenko <jjenko@volian.com>
2025-10-02 09:14:51 -04:00
mschill 3261d63b19 C2025-037 – Spell Check Closes after one section 2025-10-02 08:02:33 -04:00
jjenko 2894899ad4 Merge pull request 'F2025-024 Turned off the automatic bolding of RNOs in Vogtle’s Two Column Format' (#628) from F2025-024_Vogtle_Dont_Bold_RNO into Development
Format only change - good for testing phase
2025-10-01 10:58:07 -04:00
jjenko dd5c709709 F2025-024 Turned off the automatic bolding of RNOs in Vogtle’s Two Column Format 2025-10-01 10:58:23 -04:00
jjenko 618247f4d5 Merge pull request 'F2025-023 Fixed a typo in the ReplaceWords list in the Vogtle formats. Lowercased “assemble” was misspelled as “bssemble”' (#627) from F2025-023_Vogtle_3_4_Replacewords_Fix into Development
Format only change - ready for testing
2025-09-30 16:00:30 -04:00
jjenko abcf035143 F2025-023 Fixed a typo in the ReplaceWords list in the Vogtle formats. Lowercased “assemble” was misspelled as “bssemble” 2025-09-30 16:00:36 -04:00
jjenko 0b015233a9 Merge pull request 'B2025-046 / B2025-043 / B2024-082 – Remember Tabs Changes' (#626) from B2025-046_B2025-043_B2024-082 into Development
good for testing
2025-09-30 08:40:01 -04:00
mschill 44d85b842c B2025-046 / B2025-043 / B2024-082 – Remember Tabs Changes 2025-09-30 08:31:40 -04:00
jjenko 470f4a770b Merge pull request 'F2025-014 Enabled Parent/Child logic of PSI items on the Cover Page section, as a only once Cover Page style is needed.' (#625) from Vogtle34_EOP_Format_Changes into Development
Format only change - good for testing phase
2025-09-29 14:01:12 -04:00
jjenko 808a1ba0ea F2025-014 Enabled Parent/Child logic of PSI items on the Cover Page section, as a only once Cover Page style is needed. 2025-09-29 14:01:17 -04:00
jjenko 04cef606fc Merge pull request 'B2025-051 - Quick Print Section is not automatically working unless the sections have applicability' (#624) from B2025-051 into Development
Good for testing phase.
2025-09-26 10:42:18 -04:00
mschill 1ef6a1d0e4 B2025-051 - Quick Print Section is not automatically working unless the sections have applicability 2025-09-26 10:37:30 -04:00
jjenko b163a3a7b9 Merge pull request 'B2025-048 Problem with Printing CAS Steps' (#623) from B2025-048 into Development
good for testing phase
2025-09-26 10:05:41 -04:00
mschill e7f7f28ff1 B2025-048 Problem with Printing CAS Steps 2025-09-26 09:58:35 -04:00
jjenko b9c17fd360 Merge pull request 'B2022-126 F2025-013 F2025-020 F2025-021 F2025-022 Vogtle 3_4 Two Column Format' (#622) from Vogtle_Format_Tweaks_EOPs into Development
Minor Format changes - ready for testing
2025-09-26 09:33:46 -04:00
jjenko c7534a985a B2022-126 F2025-013 F2025-020 F2025-021 F2025-022 Vogtle 3_4 Two Column Format 2025-09-26 09:33:23 -04:00
plarsen 52583a05f6 C2022-003-Change-Textboxes-to-RTF-3 2025-09-25 08:24:20 -04:00
jjenko 081373fc0d Merge pull request 'C2015-028 Add Editorial Mode to PROMS Step Editor' (#621) from C2015-028 into Development
good for testing phase
2025-09-25 08:17:01 -04:00
mschill 9130604fa6 C2015-028 Add Editorial Mode to PROMS Step Editor 2025-09-25 08:01:19 -04:00
plarsen 37b4726925 C2022-003-Change-Textboxes-to-RTF-3 2025-09-24 22:39:37 -04:00
plarsen cc66eb5329 C2022-003-Change-Textboxes-to-RTF-3 2025-09-24 16:26:44 -04:00
plarsen 563c133676 C2022-003-Change-Textboxes-to-RTF-3 2025-09-24 13:23:24 -04:00
mschill e8b32c4ed3 Merge pull request 'B2025-050 Fixed settings that required restarting PROMS and the toggle of Sync Navigation' (#619) from B2025-050_SaveUserSettings into Development
Looks Good. Ready for QA!
2025-09-23 13:09:42 -04:00
jjenko 72ca259771 B2025-050 Fixed settings that required restarting PROMS and the toggle of Sync Navigation 2025-09-23 11:25:34 -04:00
136 changed files with 6428 additions and 3393 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ namespace AdjustBuildRevision
{ {
// Allow for setting build revision on either proms or the roeditor: // Allow for setting build revision on either proms or the roeditor:
if (Directory.GetCurrentDirectory().ToUpper().Contains("REFOBJ")) if (Directory.GetCurrentDirectory().ToUpper().Contains("REFOBJ"))
outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")"); outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")");
else else
outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")"); outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")");
// if (outline != line) // if (outline != line)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -59,7 +59,7 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -85,6 +85,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -92,7 +93,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -103,7 +104,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -77,6 +77,7 @@ using System.Xml.Schema;
using System.Text; using System.Text;
using ROFields; using ROFields;
using RODBInterface; using RODBInterface;
using System.Linq;
namespace ROEditor namespace ROEditor
{ {
@@ -280,6 +281,7 @@ namespace ROEditor
this.tbXYPlotWid.Size = new System.Drawing.Size(40, 22); this.tbXYPlotWid.Size = new System.Drawing.Size(40, 22);
this.tbXYPlotWid.TabIndex = 11; this.tbXYPlotWid.TabIndex = 11;
this.tbXYPlotWid.Text = ""; this.tbXYPlotWid.Text = "";
this.tbXYPlotWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// tbTableWid // tbTableWid
// //
@@ -288,6 +290,7 @@ namespace ROEditor
this.tbTableWid.Size = new System.Drawing.Size(40, 22); this.tbTableWid.Size = new System.Drawing.Size(40, 22);
this.tbTableWid.TabIndex = 10; this.tbTableWid.TabIndex = 10;
this.tbTableWid.Text = ""; this.tbTableWid.Text = "";
this.tbTableWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// tbVariableTxtWid // tbVariableTxtWid
// //
@@ -296,6 +299,7 @@ namespace ROEditor
this.tbVariableTxtWid.Size = new System.Drawing.Size(40, 22); this.tbVariableTxtWid.Size = new System.Drawing.Size(40, 22);
this.tbVariableTxtWid.TabIndex = 9; this.tbVariableTxtWid.TabIndex = 9;
this.tbVariableTxtWid.Text = ""; this.tbVariableTxtWid.Text = "";
this.tbVariableTxtWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// tbSingleTxtWid // tbSingleTxtWid
// //
@@ -304,6 +308,7 @@ namespace ROEditor
this.tbSingleTxtWid.Size = new System.Drawing.Size(40, 22); this.tbSingleTxtWid.Size = new System.Drawing.Size(40, 22);
this.tbSingleTxtWid.TabIndex = 8; this.tbSingleTxtWid.TabIndex = 8;
this.tbSingleTxtWid.Text = ""; this.tbSingleTxtWid.Text = "";
this.tbSingleTxtWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// lblW4 // lblW4
// //
@@ -586,5 +591,18 @@ namespace ROEditor
this.Close(); this.Close();
} }
private void txtBox_KeyDown(object sender, KeyEventArgs e)
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
string clpBrd = Clipboard.GetText();
if (clpBrd.Any(c => c > 166))
{
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
Clipboard.Clear();
}
}
}
} }
} }
@@ -77,6 +77,7 @@ using System.Xml.Schema;
using System.Text; using System.Text;
using ROFields; using ROFields;
using RODBInterface; using RODBInterface;
using System.Linq;
namespace ROEditor namespace ROEditor
{ {
@@ -316,6 +317,22 @@ namespace ROEditor
} }
base.Dispose( disposing ); base.Dispose( disposing );
} }
private void txtBox_KeyDown(object sender, KeyEventArgs e)
{
bool symFlg = false;
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
string clpBrd = Clipboard.GetText();
if (clpBrd.Any(c => c > 166))
{
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
Clipboard.Clear();
}
}
}
}
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
@@ -357,6 +374,7 @@ namespace ROEditor
this.tbFieldName.Size = new System.Drawing.Size(320, 22); this.tbFieldName.Size = new System.Drawing.Size(320, 22);
this.tbFieldName.TabIndex = 2; this.tbFieldName.TabIndex = 2;
this.tbFieldName.Text = ""; this.tbFieldName.Text = "";
this.tbFieldName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// tbWidth // tbWidth
// //
@@ -365,6 +383,7 @@ namespace ROEditor
this.tbWidth.Size = new System.Drawing.Size(32, 22); this.tbWidth.Size = new System.Drawing.Size(32, 22);
this.tbWidth.TabIndex = 3; this.tbWidth.TabIndex = 3;
this.tbWidth.Text = ""; this.tbWidth.Text = "";
this.tbWidth.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// btnOK // btnOK
// //
@@ -402,6 +421,7 @@ namespace ROEditor
this.tbPattern.TabIndex = 7; this.tbPattern.TabIndex = 7;
this.tbPattern.Text = ""; this.tbPattern.Text = "";
this.tbPattern.Visible = false; this.tbPattern.Visible = false;
this.tbPattern.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// FieldTextFrm // FieldTextFrm
// //
@@ -425,3 +445,4 @@ namespace ROEditor
#endregion #endregion
} }
} }
@@ -72,6 +72,7 @@ using System.Xml;
using System.Text; using System.Text;
using RODBInterface; using RODBInterface;
using ROFields; using ROFields;
using System.Linq;
namespace ROEditor namespace ROEditor
{ {
@@ -277,6 +278,22 @@ namespace ROEditor
this.Close(); this.Close();
} }
private void txtBox_KeyDown(object sender, KeyEventArgs e)
{
bool symFlg = false;
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
string clpBrd = Clipboard.GetText();
if (clpBrd.Any(c => c > 166))
{
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
Clipboard.Clear();
}
}
}
}
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
@@ -315,6 +332,7 @@ namespace ROEditor
this.tbFieldName.Size = new System.Drawing.Size(368, 22); this.tbFieldName.Size = new System.Drawing.Size(368, 22);
this.tbFieldName.TabIndex = 1; this.tbFieldName.TabIndex = 1;
this.tbFieldName.Text = ""; this.tbFieldName.Text = "";
this.tbFieldName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// gbFldType // gbFldType
// //
@@ -437,3 +455,4 @@ namespace ROEditor
#endregion #endregion
} }
} }
@@ -52,6 +52,7 @@ using System.Xml;
using System.Text; using System.Text;
using ROFields; using ROFields;
using RODBInterface; using RODBInterface;
using System.Linq;
namespace ROEditor namespace ROEditor
{ {
@@ -155,6 +156,7 @@ namespace ROEditor
this.tbGroup.Size = new System.Drawing.Size(248, 22); this.tbGroup.Size = new System.Drawing.Size(248, 22);
this.tbGroup.TabIndex = 8; this.tbGroup.TabIndex = 8;
this.tbGroup.Text = ""; this.tbGroup.Text = "";
this.tbGroup.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// lblGroup // lblGroup
// //
@@ -421,5 +423,21 @@ namespace ROEditor
GroupDefFrm grdef = new GroupDefFrm(nelem,myrodb,nelem.InnerText,dbtype); GroupDefFrm grdef = new GroupDefFrm(nelem,myrodb,nelem.InnerText,dbtype);
grdef.ShowDialog(); grdef.ShowDialog();
} }
private void txtBox_KeyDown(object sender, KeyEventArgs e)
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
string clpBrd = Clipboard.GetText();
if (clpBrd.Any(c => c > 166))
{
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
Clipboard.Clear();
}
}
}
}
} }
} }
@@ -106,6 +106,7 @@ using ROFields;
using RODBInterface; using RODBInterface;
using VlnStatus; using VlnStatus;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace ROEditor namespace ROEditor
@@ -1311,6 +1312,22 @@ namespace ROEditor
} }
} }
} }
private void txtBox_KeyDown(object sender, KeyEventArgs e)
{
bool symFlg = false;
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
string clpBrd = Clipboard.GetText();
if (clpBrd.Any(c => c > 166))
{
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
Clipboard.Clear();
}
}
}
}
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
@@ -1375,6 +1392,7 @@ namespace ROEditor
this.tbRetVal.Size = new System.Drawing.Size(464, 22); this.tbRetVal.Size = new System.Drawing.Size(464, 22);
this.tbRetVal.TabIndex = 4; this.tbRetVal.TabIndex = 4;
this.tbRetVal.Text = "textBox1"; this.tbRetVal.Text = "textBox1";
this.tbRetVal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// tbMenuVal // tbMenuVal
// //
@@ -1383,6 +1401,7 @@ namespace ROEditor
this.tbMenuVal.Size = new System.Drawing.Size(464, 22); this.tbMenuVal.Size = new System.Drawing.Size(464, 22);
this.tbMenuVal.TabIndex = 5; this.tbMenuVal.TabIndex = 5;
this.tbMenuVal.Text = "textBox1"; this.tbMenuVal.Text = "textBox1";
this.tbMenuVal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
// //
// lblGroupText // lblGroupText
// //
@@ -1608,3 +1627,4 @@ namespace ROEditor
#endregion #endregion
} }
} }
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -71,7 +71,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -96,6 +96,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -103,11 +104,15 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="DevComponents.DotNetBar2, Version=14.1.0.37, Culture=neutral, PublicKeyToken=7eb7c3a35b91de04, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll</HintPath>
</Reference>
<Reference Include="System"> <Reference Include="System">
<Name>System</Name> <Name>System</Name>
</Reference> </Reference>
@@ -123,10 +128,6 @@
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<Name>System.XML</Name> <Name>System.XML</Name>
</Reference> </Reference>
<Reference Include="Volian.Base.Library, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="AboutROEditor.cs"> <Compile Include="AboutROEditor.cs">
@@ -167,6 +168,7 @@
<Compile Include="RO_FST.cs"> <Compile Include="RO_FST.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Content Include="Symbols.xml" />
<EmbeddedResource Include="AboutROEditor.resx"> <EmbeddedResource Include="AboutROEditor.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<DependentUpon>AboutROEditor.cs</DependentUpon> <DependentUpon>AboutROEditor.cs</DependentUpon>
@@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACE ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACE
CAAAAk1TRnQBSQFMAgEBAgEAASwBAAEsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo CAAAAk1TRnQBSQFMAgEBAgEAAUQBAAFEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -175,7 +175,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAe ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAe
CwAAAk1TRnQBSQFMAgEBBgEAASwBAAEsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo CwAAAk1TRnQBSQFMAgEBBgEAAUQBAAFEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -101,7 +101,6 @@ using System.Runtime.InteropServices;
using VlnStatus; using VlnStatus;
using System.Collections.Specialized; using System.Collections.Specialized;
using ROFST_FILE; using ROFST_FILE;
using Volian.Base.Library;
//using VlnProfiler; //don't forget to add VlnProfiler to the reference list //using VlnProfiler; //don't forget to add VlnProfiler to the reference list
@@ -885,3 +884,4 @@ namespace ROEditor
} }
} }
@@ -62,6 +62,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -86,6 +87,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -93,7 +95,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -104,7 +106,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -35,6 +35,7 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
@@ -44,13 +45,14 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -59,7 +61,7 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -263,6 +263,7 @@ using System.Collections.Specialized;
using Org.Mentalis.Files; using Org.Mentalis.Files;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace RODBInterface namespace RODBInterface
@@ -409,7 +410,7 @@ namespace RODBInterface
GetDbServerInfo(ropath); GetDbServerInfo(ropath);
if (!dbProviderType.Equals((int)DB_PROVIDER.SQL_SERVER)) if (!dbProviderType.Equals((int)DB_PROVIDER.SQL_SERVER))
{ {
strDatabaseConnectionCommand = "Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source=" + DataConnectionPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; strDatabaseConnectionCommand = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=" + DataConnectionPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
} }
} }
#endregion #endregion
@@ -1909,6 +1910,8 @@ namespace RODBInterface
string Info = DBE.GetString(3); string Info = DBE.GetString(3);
//B2022-043 &pos; was missing the ; //B2022-043 &pos; was missing the ;
Info = Info.Replace("&apos;", "\'"); // B2021-071: crash when getting/saving field names Info = Info.Replace("&apos;", "\'"); // B2021-071: crash when getting/saving field names
Info = Regex.Replace(Info, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2022 - 003
node.SetAttribute("HasChild", "True"); node.SetAttribute("HasChild", "True");
// Store data in the VlnXmlElement as a subgroup // Store data in the VlnXmlElement as a subgroup
@@ -2139,7 +2142,20 @@ namespace RODBInterface
wraccid = accid; wraccid = accid;
string dt = string.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now); string dt = string.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now);
string xmlstr = GenerateXmlString(ro, false); string xmlstr = GenerateXmlString(ro, false);
string strUpdate = "UPDATE " + ro.GetAttribute("Table") + " SET Info = '" + xmlstr + "'"; StringBuilder xmlstrTmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
char[] chrAry = xmlstr.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
xmlstrTmp.Append($"\\u{(int)chr}?");
}
else
{
xmlstrTmp.Append((char)chr);
}
}
string strUpdate = "UPDATE " + ro.GetAttribute("Table") + " SET Info = '" + xmlstrTmp.ToString() + "'";
if (movedRO) if (movedRO)
{ {
VlnXmlElement parent = (VlnXmlElement)ro.ParentNode; VlnXmlElement parent = (VlnXmlElement)ro.ParentNode;
@@ -2182,10 +2198,27 @@ namespace RODBInterface
parent.SetAttribute("ChildLoaded", "True"); parent.SetAttribute("ChildLoaded", "True");
} }
string xmlstr = GenerateXmlString(ro, false); string xmlstr = GenerateXmlString(ro, false);
StringBuilder xmlstrTmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
char[] chrAry = xmlstr.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
xmlstrTmp.Append($"\\u{(int)chr}?");
}
else
{
xmlstrTmp.Append((char)chr);
}
}
string wraccid = null; string wraccid = null;
if (ro.HasAttribute("AccPageID")) if (ro.HasAttribute("AccPageID"))
{ {
string accid = ro.GetAttribute("AccPageID"); string accid = ro.GetAttribute("AccPageID");
int quote = accid.IndexOf("'"); int quote = accid.IndexOf("'");
if (quote >= 0) if (quote >= 0)
wraccid = accid.Insert(quote, "'"); wraccid = accid.Insert(quote, "'");
@@ -2203,13 +2236,13 @@ namespace RODBInterface
// strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageID, ModDateTime, Info ) "; // strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageID, ModDateTime, Info ) ";
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, AccPageID, Info ) "; strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, AccPageID, Info ) ";
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID"); strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID");
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstr + "');"; strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
} }
else else
{ {
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, Info ) "; strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, Info ) ";
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID"); strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID");
strInsert = strInsert + "','" + dt + "','" + xmlstr + "');"; strInsert = strInsert + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
} }
} }
@@ -2217,7 +2250,7 @@ namespace RODBInterface
{ {
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageId, ModDateTime, Info ) "; strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageId, ModDateTime, Info ) ";
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.RRO + ",'" + ro.GetAttribute("ParentID"); strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.RRO + ",'" + ro.GetAttribute("ParentID");
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstr + "');"; strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
} }
try try
@@ -2251,7 +2284,7 @@ namespace RODBInterface
// select all of the field definition records in this table. // select all of the field definition records in this table.
// strGetFields = "SELECT RecID, Info from " + elem.GetAttribute("Table"); // strGetFields = "SELECT RecID, Info from " + elem.GetAttribute("Table");
strGetFields = "SELECT RecID, Info from " + TableName; strGetFields = "SELECT RecID, Info from " + TableName;
strGetFields = strGetFields + " where RecType = 2"; // + rtype.ToString(); strGetFields = strGetFields + " where RecType = 2";
DBE.Command(strGetFields); DBE.Command(strGetFields);
DBE.Reader(); DBE.Reader();
@@ -2625,7 +2658,21 @@ namespace RODBInterface
} }
} }
StatMsgWindow.StatusMessage = echild.GetAttribute("MenuTitle"); StatMsgWindow.StatusMessage = echild.GetAttribute("MenuTitle");
StringBuilder tinfo2Tmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2 + "'"; str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2 + "'";
char[] chrAry = tinfo2.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
tinfo2Tmp.Append($"\\u{(int)chr}?");
}
else
{
tinfo2Tmp.Append((char)chr);
}
}
str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2Tmp.ToString() + "'";
str = str + ", ModDateTime = '" + dt + "' WHERE RecID = '" + echild.GetAttribute("RecID") + "';"; str = str + ", ModDateTime = '" + dt + "' WHERE RecID = '" + echild.GetAttribute("RecID") + "';";
DBE.Command(str); DBE.Command(str);
DBE.Reader(); DBE.Reader();
@@ -62,6 +62,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -86,6 +87,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -93,7 +95,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -104,7 +106,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -171,6 +173,17 @@
<Name>VlnStatus</Name> <Name>VlnStatus</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Interop.Access.Dao">
<Guid>{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}</Guid>
<VersionMajor>12</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup> <PropertyGroup>
<PreBuildEvent> <PreBuildEvent>
@@ -96,6 +96,7 @@ using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
using ROFields; using ROFields;
using VlnStatus; using VlnStatus;
using System.Text.RegularExpressions;
//using VlnProfiler; //don't forget to add VlnProfiler to the reference list //using VlnProfiler; //don't forget to add VlnProfiler to the reference list
namespace RODBInterface namespace RODBInterface
@@ -517,6 +518,7 @@ namespace RODBInterface
strtmp.Append(" "); strtmp.Append(" ");
cnt++; cnt++;
} }
text = Regex.Replace(text, @"\\u([0-9]{1,4})\?", m => int.TryParse(m?.Groups[1]?.Value, out int result) ? Convert.ToChar(result).ToString() : ""); //B2026-025 Unicode removed from RO menu titles in treeview.
if ((cnt + text.Length) > frmt2) // longer than the field length? if ((cnt + text.Length) > frmt2) // longer than the field length?
strtmp.Append(text.Substring(0,frmt2-cnt)); strtmp.Append(text.Substring(0,frmt2-cnt));
else else
@@ -62,6 +62,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -86,6 +87,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -93,7 +95,7 @@
<DefineConstants>DEBUG;TRACE;Upgrade2005;</DefineConstants> <DefineConstants>DEBUG;TRACE;Upgrade2005;</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -104,7 +106,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -62,6 +62,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -86,6 +87,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -93,7 +95,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -104,7 +106,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -77,6 +77,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -101,6 +102,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -108,7 +110,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -119,7 +121,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -7,7 +7,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -73,6 +73,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -97,6 +98,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -104,7 +106,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -62,6 +62,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -86,6 +87,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -93,7 +95,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -104,7 +106,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -39,7 +39,7 @@ namespace ctlXMLEditLib
{ {
private System.Windows.Forms.Button btnSave; private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.TextBox tbZoom; private ctlXMLEditLib.roRichTextBox tbZoom; // RO Editor add symbols C2022 - 003
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
@@ -88,7 +88,7 @@ namespace ctlXMLEditLib
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.tbZoom = new System.Windows.Forms.TextBox(); this.tbZoom = new ctlXMLEditLib.roRichTextBox(); // RO Editor add symbols C2022 - 003
this.btnSave = new System.Windows.Forms.Button(); this.btnSave = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button();
this.SuspendLayout(); this.SuspendLayout();
@@ -99,7 +99,7 @@ namespace ctlXMLEditLib
this.tbZoom.Location = new System.Drawing.Point(24, 16); this.tbZoom.Location = new System.Drawing.Point(24, 16);
this.tbZoom.Multiline = true; this.tbZoom.Multiline = true;
this.tbZoom.Name = "tbZoom"; this.tbZoom.Name = "tbZoom";
this.tbZoom.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.tbZoom.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; // RO Editor add symbols C2022 - 003
this.tbZoom.Size = new System.Drawing.Size(576, 392); this.tbZoom.Size = new System.Drawing.Size(576, 392);
this.tbZoom.TabIndex = 0; this.tbZoom.TabIndex = 0;
// //
@@ -149,3 +149,4 @@ namespace ctlXMLEditLib
} }
} }
@@ -200,7 +200,11 @@ using System.Xml.Schema;
using System.Text; using System.Text;
using RODBInterface; using RODBInterface;
using Org.Mentalis.Files; using Org.Mentalis.Files;
//using IniFileIO; using System.Windows;
using System.Text.RegularExpressions;
using System.Linq;
using Volian.Base.Library;
@@ -221,6 +225,7 @@ namespace ctlXMLEditLib
/// ///
/// ///
/// </summary> /// </summary>
public class ctlXMLEdit : System.Windows.Forms.UserControl public class ctlXMLEdit : System.Windows.Forms.UserControl
{ {
/// <summary> /// <summary>
@@ -237,12 +242,12 @@ namespace ctlXMLEditLib
private bool dosaveflag; private bool dosaveflag;
private VlnXmlElement editelem; private VlnXmlElement editelem;
private XmlDocument editdoc; private XmlDocument editdoc;
private TextBox zoomtextbox; private roRichTextBox zoomtextbox;
// the following is used for handling images. Note that if we want to have more // the following is used for handling images. Note that if we want to have more
// than one image defined in an ro, this should be become a list. // than one image defined in an ro, this should be become a list.
private TextBox GraphicsFiletextbox; private roRichTextBox GraphicsFiletextbox;
private TextBox GraphicsWdtextbox; private roRichTextBox GraphicsWdtextbox;
private TextBox GraphicsHttextbox; private roRichTextBox GraphicsHttextbox;
private System.Windows.Forms.Button btnFindFile; private System.Windows.Forms.Button btnFindFile;
private string GraphicsText; private string GraphicsText;
private ToolTip zmtooltip; private ToolTip zmtooltip;
@@ -265,6 +270,19 @@ namespace ctlXMLEditLib
private GroupBox pcGrpBox = null; private GroupBox pcGrpBox = null;
/** end C2021-026 **/ /** end C2021-026 **/
public string _RO_IDEN;
public string RO_IDEN
{
get
{
return _RO_IDEN;
}
set
{
_RO_IDEN = value;
}
}
// use this struct to define attributes for the text box fields, storing // use this struct to define attributes for the text box fields, storing
// the pattern, radio button association, required field flag, etc. // the pattern, radio button association, required field flag, etc.
struct TextBoxAttrTag struct TextBoxAttrTag
@@ -311,10 +329,19 @@ namespace ctlXMLEditLib
public string GetParentHTId { get { return parenthtid; } } public string GetParentHTId { get { return parenthtid; } }
public void SetParentHTId(string id) { this.parenthtid = id; } public void SetParentHTId(string id) { this.parenthtid = id; }
} }
private roRichTextBox _TextBoxFocus; // RO Editor add symbols C2022 - 003
public roRichTextBox TextBoxFocus
{
get { return _TextBoxFocus; }
set
{
_TextBoxFocus = value;
}
}
public ctlXMLEdit(VlnXmlElement myelem, XmlSchema myschema, ArrayList reqfields, ArrayList fldsWithApplic, string [] pckids) public ctlXMLEdit(VlnXmlElement myelem, XmlSchema myschema, ArrayList reqfields, ArrayList fldsWithApplic, string [] pckids)
{ {
// This call is required by the Windows.Forms Form Designer. // This call is required by the Windows.Forms Form Designer.
InitializeComponent(); InitializeComponent();
FieldsWithApplic = fldsWithApplic; FieldsWithApplic = fldsWithApplic;
PCChildren = pckids; //C2021-026 list of Parent/Child children PCChildren = pckids; //C2021-026 list of Parent/Child children
@@ -359,11 +386,12 @@ namespace ctlXMLEditLib
// Set required fields based on list. (can add message later). // Set required fields based on list. (can add message later).
SetRequiredFields(reqfields); SetRequiredFields(reqfields);
dosaveflag=true; dosaveflag=true;
RO_IDEN = myelem.GetAccPageIDTemplate();
} }
// set the required fields tag on those fields which are included in the passed // set the required fields tag on those fields which are included in the passed
// in required fields list. // in required fields list.
private void DoSet(TextBox hwnd, string msg) private void DoSet(roRichTextBox hwnd, string msg) // RO Editor add symbols C2022 - 003
{ {
if (hwnd == null) return; if (hwnd == null) return;
if (hwnd.Tag != null) if (hwnd.Tag != null)
@@ -378,7 +406,7 @@ namespace ctlXMLEditLib
private void SetRequiredFields(ArrayList reqfields) private void SetRequiredFields(ArrayList reqfields)
{ {
Object o; Object o;
TextBox hwnd; roRichTextBox hwnd;
string field, msg; string field, msg;
int indx; int indx;
foreach (string strfld in reqfields) foreach (string strfld in reqfields)
@@ -397,15 +425,15 @@ namespace ctlXMLEditLib
o = myHT[field+"a"]; o = myHT[field+"a"];
if (o != null) // set all combo types required, the checker if (o != null) // set all combo types required, the checker
{ {
DoSet((TextBox)o,msg); DoSet((roRichTextBox)o,msg);
DoSet((TextBox)myHT[field+"b"],msg); DoSet((roRichTextBox)myHT[field+"b"],msg);
DoSet((TextBox)myHT[field+"c"],msg); DoSet((roRichTextBox)myHT[field+"c"],msg);
DoSet((TextBox)myHT[field+"d"],msg); DoSet((roRichTextBox)myHT[field+"d"],msg);
} }
} }
else if (o != null) else if (o != null)
{ {
hwnd = (TextBox) o; hwnd = (roRichTextBox) o;
if (hwnd.Tag != null) if (hwnd.Tag != null)
{ {
TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag; TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag;
@@ -419,7 +447,7 @@ namespace ctlXMLEditLib
// C2021-026 If this is a Parent/Child field that has no value saved in the database // C2021-026 If this is a Parent/Child field that has no value saved in the database
// then use the parent's value and display it as grey colored text. // then use the parent's value and display it as grey colored text.
private void GetDefaultParentValue(TextBox tb, XmlNode node, string chldName) private void GetDefaultParentValue(roRichTextBox tb, XmlNode node, string chldName)
{ {
XmlNode parentNode = null; XmlNode parentNode = null;
// PCChildren contains a list strings reprenting the Children setup in the current Working Draft Parent/Child property // PCChildren contains a list strings reprenting the Children setup in the current Working Draft Parent/Child property
@@ -463,13 +491,13 @@ namespace ctlXMLEditLib
private void DisplayFieldContents(XmlNode node) private void DisplayFieldContents(XmlNode node)
{ {
Object o; Object o;
TextBox hwnd; roRichTextBox hwnd;
XmlNode nd; XmlNode nd;
// if we have an image, check it for validity, i.e. file exists, etc.?? // if we have an image, check it for validity, i.e. file exists, etc.??
foreach (string str in myHT.Keys) foreach (string str in myHT.Keys)
{ {
o = myHT[str]; o = myHT[str];
hwnd = (TextBox) o; hwnd = (roRichTextBox) o;
nd = node.SelectSingleNode(str); nd = node.SelectSingleNode(str);
// if not found with just the string, search the tree. // if not found with just the string, search the tree.
if (nd==null)nd = node.SelectSingleNode("*/"+str); if (nd==null)nd = node.SelectSingleNode("*/"+str);
@@ -477,7 +505,9 @@ namespace ctlXMLEditLib
GetDefaultParentValue(hwnd, node, str); // C2021-026 Parent/Child Field has no value so use parent's value GetDefaultParentValue(hwnd, node, str); // C2021-026 Parent/Child Field has no value so use parent's value
else else
{ {
hwnd.Text = nd.InnerText; // set the field's text from XML
hwnd.Text = Regex.Replace(nd.InnerText, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // set the field's text from XML
Size size = hwnd.Size;
// check if this window has a button name as part of its tag. If // check if this window has a button name as part of its tag. If
// so it's a combo type & the radio button/visibility may need to // so it's a combo type & the radio button/visibility may need to
@@ -546,7 +576,7 @@ namespace ctlXMLEditLib
// height/width data of the image. // height/width data of the image.
if (GraphicsFiletextbox != null && GraphicsFiletextbox.Text != "") UpdateHtWd(); if (GraphicsFiletextbox != null && GraphicsFiletextbox.Text != "") UpdateHtWd();
} }
public TextBox GetGraphicsFiletextbox() public roRichTextBox GetGraphicsFiletextbox()
{ {
return GraphicsFiletextbox; return GraphicsFiletextbox;
} }
@@ -585,13 +615,13 @@ namespace ctlXMLEditLib
{ {
dosaveflag=false; dosaveflag=false;
mysavexml=false; mysavexml=false;
TextBox hwnd; roRichTextBox hwnd;
// first, clear out all of the text boxes. // first, clear out all of the text boxes.
foreach (string str in myHT.Keys) foreach (string str in myHT.Keys)
{ {
object o = myHT[str]; object o = myHT[str];
hwnd = (TextBox) o; hwnd = (roRichTextBox) o;
hwnd.Text = ""; hwnd.Text = "";
TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag; TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag;
RadioButton radio; RadioButton radio;
@@ -623,7 +653,7 @@ namespace ctlXMLEditLib
// to the parent's value, then clear the child's textbox so that nothing is saved // to the parent's value, then clear the child's textbox so that nothing is saved
// to the database. This allow us to know that a specific value was not set // to the database. This allow us to know that a specific value was not set
// for this Parent/Child child // for this Parent/Child child
private void RemovePCChildTextIfSameAsParent(XmlNode node, TextBox tb, string chldName) private void RemovePCChildTextIfSameAsParent(XmlNode node, roRichTextBox tb, string chldName)
{ {
XmlNode parentNode = null; XmlNode parentNode = null;
// if this is a child node get the parent's value // if this is a child node get the parent's value
@@ -660,18 +690,35 @@ namespace ctlXMLEditLib
// true if success, false if fail. // true if success, false if fail.
// Note that the Parent and Child XML node variables below are not coding for Parent/Child Applicabily Fields // Note that the Parent and Child XML node variables below are not coding for Parent/Child Applicabily Fields
public bool SaveData() public bool SaveData()
{ {
if (mysavexml) if (mysavexml)
{ {
TextBox hwnd; roRichTextBox hwnd;
TextBoxAttrTag tag; TextBoxAttrTag tag;
string imgdate; string imgdate;
//go thru the hash table to get textboxes. Find the ones that have text. //go thru the hash table to get textboxes. Find the ones that have text.
foreach (string str in myHT.Keys) foreach (string str in myHT.Keys) // RO Editor add symbols C2022 - 003
{ {
object o = myHT[str]; object o = myHT[str];
hwnd = (TextBox) o; hwnd = (roRichTextBox) o;
StringBuilder result1 = new StringBuilder();
char[] chrAry = hwnd.Text.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
result1.Append($"\\u{(int)chr}?");
}
else
{
result1.Append((char)chr);
}
}
hwnd.Text = result1.ToString();
imgdate = null; imgdate = null;
// if this is a required field and there is no text, put out an error // if this is a required field and there is no text, put out an error
// message and get out of here. // message and get out of here.
@@ -788,6 +835,7 @@ namespace ctlXMLEditLib
return (false); return (false);
} }
#region Component Designer generated code #region Component Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
@@ -858,7 +906,7 @@ namespace ctlXMLEditLib
// 'normalizedString') or a multiline text box(type is 'string'). Also, a radio // 'normalizedString') or a multiline text box(type is 'string'). Also, a radio
// button is passed in if this was called to handle an element within a combo type. // button is passed in if this was called to handle an element within a combo type.
// This button is saved for a given text box so that initialization of these combo types can occur. // This button is saved for a given text box so that initialization of these combo types can occur.
private string DisplayXmlSchemaSimpleType(XmlSchemaSimpleType simpleType, TextBox mytextbox, RadioButton radio, private string DisplayXmlSchemaSimpleType(XmlSchemaSimpleType simpleType, roRichTextBox mytextbox, RadioButton radio,
bool img, string imgname) bool img, string imgname)
{ {
// set up for text box tag, which stores whether field is required and // set up for text box tag, which stores whether field is required and
@@ -888,12 +936,17 @@ namespace ctlXMLEditLib
if (getannot.IndexOf("Lines")>=0) if (getannot.IndexOf("Lines")>=0)
{ {
GraphicsHttextbox = mytextbox; GraphicsHttextbox = mytextbox;
Size size = GraphicsHttextbox.Size;
mytextbox.LostFocus += new System.EventHandler(this.GraphicsHt_lostfocus); mytextbox.LostFocus += new System.EventHandler(this.GraphicsHt_lostfocus);
} }
if (getannot.IndexOf("Character")>=0) if (getannot.IndexOf("Character")>=0)
{ {
GraphicsWdtextbox = mytextbox; GraphicsWdtextbox = mytextbox;
mytextbox.LostFocus += new System.EventHandler(this.GraphicsWd_lostfocus); mytextbox.LostFocus += new System.EventHandler(this.GraphicsWd_lostfocus);
} }
} }
} }
@@ -905,13 +958,16 @@ namespace ctlXMLEditLib
// A Schema Type Restriction is used to define single or multi-line boxes. // A Schema Type Restriction is used to define single or multi-line boxes.
XmlSchemaSimpleTypeRestriction myRestrictions = (XmlSchemaSimpleTypeRestriction) simpleType.Content; XmlSchemaSimpleTypeRestriction myRestrictions = (XmlSchemaSimpleTypeRestriction) simpleType.Content;
if (myRestrictions.BaseTypeName.Name == "normalizedString") if (myRestrictions.BaseTypeName.Name == "normalizedString")
{
mytextbox.Multiline = false; mytextbox.Multiline = false;
mytextbox.Size = new Size(300, 40);
}
else else
{ {
mytextbox.Multiline = true; mytextbox.Multiline = true;
mytextbox.AcceptsReturn = true; mytextbox.AcceptsTab = true;
mytextbox.Height = (int) mytextbox.Font.GetHeight() * 4; mytextbox.Height = (int) mytextbox.Font.GetHeight() * 4;
mytextbox.ScrollBars = ScrollBars.Vertical; mytextbox.ScrollBars = RichTextBoxScrollBars.Vertical;
zmtooltip.SetToolTip(mytextbox, "Press Shift F2 To Zoom"); zmtooltip.SetToolTip(mytextbox, "Press Shift F2 To Zoom");
} }
@@ -992,7 +1048,8 @@ namespace ctlXMLEditLib
radio.CheckedChanged += new System.EventHandler(this.radiocheckchg); radio.CheckedChanged += new System.EventHandler(this.radiocheckchg);
gbox.Controls.Add(radio); gbox.Controls.Add(radio);
TextBox tb = new TextBox(); roRichTextBox tb = new roRichTextBox();
Size size3 = tb.Size;
tb.Location = new Point(boxx+20, y+25); tb.Location = new Point(boxx+20, y+25);
if (!first) tb.Visible = false; if (!first) tb.Visible = false;
myHT.Add(element.Name,tb); myHT.Add(element.Name,tb);
@@ -1001,7 +1058,7 @@ namespace ctlXMLEditLib
// the groupbox. // the groupbox.
Controls.Add(tb); Controls.Add(tb);
tb.TextChanged += new System.EventHandler(this.textbox_change); tb.TextChanged += new System.EventHandler(this.textbox_change);
tb.GotFocus += new System.EventHandler(this.textbox_zoombtn); tb.GotFocus += new System.EventHandler(this.currentTextBox);
tb.KeyDown += new KeyEventHandler(MyOnKeyDown); tb.KeyDown += new KeyEventHandler(MyOnKeyDown);
gbox.Contains(tb); gbox.Contains(tb);
// the following will set attributes on the text boxes such as maxlength, multiline, etc. // the following will set attributes on the text boxes such as maxlength, multiline, etc.
@@ -1144,8 +1201,9 @@ namespace ctlXMLEditLib
} }
else else
{ {
TextBox mytextbox; roRichTextBox mytextbox;
mytextbox = new TextBox(); mytextbox = new roRichTextBox();
Size size3 = mytextbox.Size;
mytextbox.Location = new Point(screenx+indent, screeny); mytextbox.Location = new Point(screenx+indent, screeny);
string tFieldName = (pcChildIdx == 0) ? CvtUserFldToFld(element.Name) : CvtUserFldToFld(pcChildFldName); string tFieldName = (pcChildIdx == 0) ? CvtUserFldToFld(element.Name) : CvtUserFldToFld(pcChildFldName);
mytextbox.Name = tFieldName; mytextbox.Name = tFieldName;
@@ -1155,7 +1213,7 @@ namespace ctlXMLEditLib
screeny = screeny + 10; screeny = screeny + 10;
mytextbox.TextChanged += new System.EventHandler(this.textbox_change); mytextbox.TextChanged += new System.EventHandler(this.textbox_change);
mytextbox.Validating += new System.ComponentModel.CancelEventHandler(this.textbox_Validating); mytextbox.Validating += new System.ComponentModel.CancelEventHandler(this.textbox_Validating);
mytextbox.GotFocus += new System.EventHandler(this.textbox_zoombtn); mytextbox.GotFocus += new System.EventHandler(this.currentTextBox);
mytextbox.KeyDown += new KeyEventHandler(MyOnKeyDown); mytextbox.KeyDown += new KeyEventHandler(MyOnKeyDown);
if (pcChildIdx > 0) if (pcChildIdx > 0)
{ {
@@ -1195,6 +1253,15 @@ namespace ctlXMLEditLib
} }
public delegate void ctlXMLEditEvent(object sender, ctlXMLEditEventArgs args); // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID field.
public event ctlXMLEditEvent EnableDisableSymbolsBtn;
private void OnEnableDisableSymbolsBtn(ctlXMLEditEventArgs args)
{
if (EnableDisableSymbolsBtn != null)
EnableDisableSymbolsBtn(this, args);
}
// when data in a text box has changed, flag it (except for when this // when data in a text box has changed, flag it (except for when this
// happens during loading of original data). This flag will be used // happens during loading of original data). This flag will be used
// later to know whether to save data. // later to know whether to save data.
@@ -1210,7 +1277,7 @@ namespace ctlXMLEditLib
// When leaving the textbox // When leaving the textbox
private void txtBox_Leave(object sender, EventArgs e) private void txtBox_Leave(object sender, EventArgs e)
{ {
TextBox tb = sender as TextBox; roRichTextBox tb = sender as roRichTextBox;
string dfTxt = ""; string dfTxt = "";
try try
{ {
@@ -1219,7 +1286,7 @@ namespace ctlXMLEditLib
{ {
object o = myHT[parentid]; object o = myHT[parentid];
if (o != null) if (o != null)
dfTxt = (o as TextBox).Text; // set to use the parent's value (default) dfTxt = (o as roRichTextBox).Text; // set to use the parent's value (default)
} }
else else
{ {
@@ -1227,7 +1294,7 @@ namespace ctlXMLEditLib
string parName = pcGrpBox.Name.Substring(5); string parName = pcGrpBox.Name.Substring(5);
object o = myHT[parName]; object o = myHT[parName];
if (o != null) if (o != null)
dfTxt = (o as TextBox).Text; // set to use the parent's value (default) dfTxt = (o as roRichTextBox).Text; // set to use the parent's value (default)
} }
} }
catch catch
@@ -1235,7 +1302,7 @@ namespace ctlXMLEditLib
string parName = pcGrpBox.Name.Substring(5); string parName = pcGrpBox.Name.Substring(5);
object o = myHT[parName]; object o = myHT[parName];
if (o != null) if (o != null)
dfTxt = (o as TextBox).Text; // set to use the parent's value (default) dfTxt = (o as roRichTextBox).Text; // set to use the parent's value (default)
} }
if (dosaveflag) mysavexml = true; if (dosaveflag) mysavexml = true;
@@ -1251,7 +1318,7 @@ namespace ctlXMLEditLib
// so clear the textbox so that user can enter the value for that child // so clear the textbox so that user can enter the value for that child
private void txtBox_Enter(object sender, EventArgs e) private void txtBox_Enter(object sender, EventArgs e)
{ {
TextBox tb = sender as TextBox; roRichTextBox tb = sender as roRichTextBox;
if (tb.ForeColor == SystemColors.GrayText) // currently no value set - using parent's value if (tb.ForeColor == SystemColors.GrayText) // currently no value set - using parent's value
{ {
tb.Text = ""; tb.Text = "";
@@ -1264,7 +1331,7 @@ namespace ctlXMLEditLib
private void radiocheckchg(object sender, System.EventArgs e) private void radiocheckchg(object sender, System.EventArgs e)
{ {
RadioButton btnsel = (RadioButton) sender; RadioButton btnsel = (RadioButton) sender;
TextBox assocbox; roRichTextBox assocbox;
string btntext, str; string btntext, str;
if(dosaveflag)mysavexml = true; if(dosaveflag)mysavexml = true;
@@ -1277,7 +1344,7 @@ namespace ctlXMLEditLib
str = btnsel.Name.Replace(btntext,""); str = btnsel.Name.Replace(btntext,"");
object o = myHT[str]; object o = myHT[str];
if (o == null) return; if (o == null) return;
assocbox = (TextBox) o; assocbox = (roRichTextBox) o;
// make the text box visible if checked, otherwise, invisible // make the text box visible if checked, otherwise, invisible
assocbox.Visible = btnsel.Checked; assocbox.Visible = btnsel.Checked;
// C2021-026 show or hide the Parent/Child appicability group box // C2021-026 show or hide the Parent/Child appicability group box
@@ -1299,7 +1366,7 @@ namespace ctlXMLEditLib
c.Visible = vsblState; // show or hide the lable inside the group box c.Visible = vsblState; // show or hide the lable inside the group box
object oo = myHT[c.Name]; object oo = myHT[c.Name];
if (oo != null) if (oo != null)
(oo as TextBox).Visible = vsblState; // show or hide the associated text box (oo as roRichTextBox).Visible = vsblState; // show or hide the associated text box
} }
} }
} }
@@ -1391,7 +1458,7 @@ namespace ctlXMLEditLib
// The following can be used to validate the text, i.e. check the text against // The following can be used to validate the text, i.e. check the text against
// the pattern. this needs written yet (5/16/02) // the pattern. this needs written yet (5/16/02)
private void MyValidatingCode(TextBox tb) private void MyValidatingCode(roRichTextBox tb)
{ {
//get the text box's tag which contains a flag for whether this is required & //get the text box's tag which contains a flag for whether this is required &
//if it has a pattern. If it has a pattern, validate the field against the pattern. //if it has a pattern. If it has a pattern, validate the field against the pattern.
@@ -1420,20 +1487,33 @@ namespace ctlXMLEditLib
} }
// save which box we're on, for zoom processing. // save which box we're on, for zoom processing.
private void textbox_zoombtn(object sender, System.EventArgs e) private void currentTextBox(object sender, System.EventArgs e)
{ {
TextBox textbox = (TextBox) sender; roRichTextBox textbox = (roRichTextBox) sender;
if (textbox.Multiline == true || textbox == GraphicsFiletextbox) if (textbox.Multiline == true || textbox == GraphicsFiletextbox)
zoomtextbox = textbox; zoomtextbox = textbox;
else else
zoomtextbox = null; zoomtextbox = null;
TextBoxFocus = textbox;
string RO_IDENDITY = RO_IDEN.Substring(1, RO_IDEN.Length - 2); // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID.
if (textbox.Name == RO_IDENDITY)
{
OnEnableDisableSymbolsBtn(new ctlXMLEditEventArgs(DisplaySymBolBtn:false));
}
else
{
OnEnableDisableSymbolsBtn(new ctlXMLEditEventArgs(DisplaySymBolBtn:true));
}
} }
private void textbox_Validating(object sender, System.ComponentModel.CancelEventArgs e) private void textbox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{ {
try try
{ {
MyValidatingCode((TextBox) sender); MyValidatingCode((roRichTextBox) sender);
} }
catch(Exception ex) catch(Exception ex)
@@ -1459,11 +1539,18 @@ namespace ctlXMLEditLib
} }
btnZoom_click(null, null); btnZoom_click(null, null);
} }
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
if (((kea.Modifiers & Keys.ControlKey) == Keys.ControlKey) && kea.KeyCode == Keys.V)
{
roRichTextBox o = (roRichTextBox)objSender;
o.rchtxtBox_KeyDown(objSender, RO_IDEN);
}
}
} }
public void btnZoom_click(object sender, System.EventArgs e) public void btnZoom_click(object sender, System.EventArgs e)
{ {
//TextBox tb = (TextBox) sender;
TextBoxAttrTag tag; TextBoxAttrTag tag;
bool doimage = false; bool doimage = false;
if (zoomtextbox.Tag != null) if (zoomtextbox.Tag != null)
@@ -1507,7 +1594,7 @@ namespace ctlXMLEditLib
// file local & keep width/height of file proportional. // file local & keep width/height of file proportional.
private void GraphicText_lostfocus(object sender, System.EventArgs e) private void GraphicText_lostfocus(object sender, System.EventArgs e)
{ {
TextBox fnamebox = (TextBox) sender; roRichTextBox fnamebox = (roRichTextBox) sender;
if (fnamebox.Text != "" && fnamebox.Modified == true) if (fnamebox.Text != "" && fnamebox.Modified == true)
{ {
FileInfo ifi = new FileInfo(fnamebox.Text); FileInfo ifi = new FileInfo(fnamebox.Text);
@@ -1716,7 +1803,7 @@ namespace ctlXMLEditLib
// if changed height, calculate associated width // if changed height, calculate associated width
private void GraphicsHt_lostfocus(object sender, System.EventArgs e) private void GraphicsHt_lostfocus(object sender, System.EventArgs e)
{ {
TextBox ht = (TextBox) sender; roRichTextBox ht = (roRichTextBox) sender;
if (ht.Modified == true) if (ht.Modified == true)
{ {
try try
@@ -1733,7 +1820,7 @@ namespace ctlXMLEditLib
// if changed width, calculate associated height // if changed width, calculate associated height
private void GraphicsWd_lostfocus(object sender, System.EventArgs e) private void GraphicsWd_lostfocus(object sender, System.EventArgs e)
{ {
TextBox wd = (TextBox) sender; roRichTextBox wd = (roRichTextBox) sender;
if (wd.Modified == true) if (wd.Modified == true)
{ {
try try
@@ -1929,5 +2016,31 @@ namespace ctlXMLEditLib
return curTZ.GetDaylightChanges(year); return curTZ.GetDaylightChanges(year);
} }
} }
public class ctlXMLEditEventArgs : EventArgs // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID.
{
public ctlXMLEditEventArgs() {; }
public ctlXMLEditEventArgs(bool DisplaySymBolBtn)
{
_DisplaySymBolBtn = DisplaySymBolBtn;
}
private bool _DisplaySymBolBtn;
public bool DisplaySymBolBtn
{
get { return _DisplaySymBolBtn; }
set { _DisplaySymBolBtn = value; }
}
}
public enum E_FontStyle : byte
{
FS_NONE = 0,
FS_BOLD = 0x01,
FS_UNDERLINE = 0x02,
FS_ITALIC = 0x04,
FS_SUPERSCRIPT = 0x08,
FS_SUBSCRIPT = 0x10
}
} }
@@ -62,6 +62,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
@@ -86,6 +87,7 @@
<DebugType>none</DebugType> <DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -93,7 +95,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<BaseAddress>285212672</BaseAddress> <BaseAddress>285212672</BaseAddress>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -104,7 +106,7 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType> <DebugType>
</DebugType> </DebugType>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
@@ -124,6 +126,9 @@
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<Name>System.XML</Name> <Name>System.XML</Name>
</Reference> </Reference>
<Reference Include="Volian.Base.Library">
<HintPath>..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="AssemblyInfo.cs"> <Compile Include="AssemblyInfo.cs">
@@ -135,6 +140,12 @@
<Compile Include="ImageDialog.cs"> <Compile Include="ImageDialog.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="roRichTextBox.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="roRichTextBox.Designer.cs">
<DependentUpon>roRichTextBox.cs</DependentUpon>
</Compile>
<Compile Include="ZoomDialog.cs"> <Compile Include="ZoomDialog.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -0,0 +1,40 @@

namespace ctlXMLEditLib
{
partial class roRichTextBox
{
/// <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 Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
System.Windows.Forms.AutoScaleMode AutoScaleMode;
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
}
#endregion
}
}
@@ -0,0 +1,100 @@
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;
using Volian.Base.Library;
namespace ctlXMLEditLib
{
public partial class roRichTextBox : RichTextBox // C2022-003 Symbols in RO Editor. Customized RichTextBox for RO Editor.
{
public roRichTextBox()
{
InitializeComponent();
}
private string _RtfPrefix; // contains Font table and styles (bold/underline/italics) for rtb from step style
public string RtfPrefixForSymbols
{
get
{
//B2020-100 RHM Use SelectionFont rather than the font from the format file.
StringBuilder selectedRtfSB = new StringBuilder();
AddFontTable(selectedRtfSB, FormatFont, true);
_RtfPrefix = selectedRtfSB.ToString();
return _RtfPrefix + @"\f1\fs" + 10 * 2 + " ";
}
}
public void InsertSymbol( int symbcode)
{
int position = this.SelectionStart;
string sym = symbcode < 256 ? ((char)symbcode).ToString() : string.Format(@"\u{0}", symbcode);
this.SelectedRtf = RtfPrefixForSymbols + sym + @"}";
Select(position, -1);
Select(position + 1, 0);
}
public void rchtxtBox_KeyDown(object sender,string RO_IDEN) // C2022-003 code used to prevent a symbol from being inserted into RO ID.
{
bool symFlg = false;
roRichTextBox o = (roRichTextBox)sender;
if (o.Name == RO_IDEN)
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
string clpBrd = Clipboard.GetText();
if (clpBrd.Any(c => c > 166))
{
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
Clipboard.Clear();
}
}
}
}
private static void AddFontTable(StringBuilder selectedRtfSB, Font myFont, bool isFixed)
{
StringBuilder sbbeg = new StringBuilder();
StringBuilder sbend = new StringBuilder();
if (myFont.Bold)
{
sbbeg.Append(@"\b");
sbend.Append(@"\b0");
}
if (myFont.Underline)
{
sbbeg.Append(@"\ul");
sbend.Insert(0, @"\ulnone");
}
if (myFont.Italic)
{
sbbeg.Append(@"\i");
sbend.Insert(0, @"\i0");
}
// RO Editor add symbols C2022-003
selectedRtfSB.Append(@"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 " + myFont.FontFamily.Name + @";}");
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 FreeMono;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // FreeMono is now used for symbols display.
selectedRtfSB.Append("\r\n");
selectedRtfSB.Append(@"\viewkind4\uc1\pard" + sbbeg.ToString() + @"\fs" + Convert.ToInt32(myFont.SizeInPoints * 2).ToString() + @" ");
}
private Font _FormatFont;
public Font FormatFont
{
get
{
if (_FormatFont == null)
{
Font formatFont;
formatFont = Font;
_FormatFont = formatFont;
}
return _FormatFont;
}
set { _FormatFont = value; }
}
}
}
+1 -1
View File
@@ -229,7 +229,7 @@ namespace RoAccessToSql
if (sqlConnection.State == ConnectionState.Open) if (sqlConnection.State == ConnectionState.Open)
{ {
// now try to open access db: // now try to open access db:
string strDatabaseConnectionCommand = "Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source=" + MSAccessPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; string strDatabaseConnectionCommand = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=" + MSAccessPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
using (OleDbConnection accessConnection = new OleDbConnection(strDatabaseConnectionCommand)) using (OleDbConnection accessConnection = new OleDbConnection(strDatabaseConnectionCommand))
{ {
try try
+11
View File
@@ -100,6 +100,17 @@
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Interop.Access.Dao">
<Guid>{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}</Guid>
<VersionMajor>12</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
@@ -0,0 +1,147 @@
/*****************************************************************************
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
Copyright 2026 - Volian Enterprises, Inc. All rights reserved.
*****************************************************************************/
-- =============================================
-- Author: Matthew Schill
-- Create date: 03/20/2026
-- Description: Script to consolidate Cover Pages for Barakah
-- by Converting multi-unit procedures with Cover Pages
-- to use 1 Library Document Cover Page
-- =============================================
select Contents.ContentID
, Contenttext = Contents.Text
, Items.ItemID
, tblDocuments.DocID
, ParentContentID
, ParentItemID
, LibTitle = ISNULL(LibTitle,'')
, numLibCP
, numCP
,BaseFlag = 0
INTO #tmpUpdate
from Contents
inner join Entries on Contents.ContentID = Entries.ContentID
inner join tblDocuments on tblDocuments.DocID = Entries.DocID
inner join Items on Items.ContentID = Contents.ContentID
outer apply
(select ParentContentID=ContentID, ParentItemID = PItm.ItemID
FROM dbo.vefn_ParentItems(Items.ItemID) PItm
where PItm.ItemID <> Items.ItemID
) parent
outer apply
(select numLibCP = Count(*)
FROM dbo.vefn_ChildItems(ParentItemID) PItm
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
INNER JOIN Entries on Contents.ContentID = Entries.ContentID
INNER JOIN tblDocuments on tblDocuments.DocID = Entries.DocID
where PItm.ItemID <> ParentItemID
AND Contents.text like 'Cover Page%' and ISNULL(tblDocuments.LibTitle,'') <> ''
) childWithLibTitle
outer apply
(select numCP = Count(*)
FROM dbo.vefn_ChildItems(ParentItemID) PItm
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
where PItm.ItemID <> ParentItemID
AND Contents.text like 'Cover Page%'
) child
where Contents.text like 'Cover Page%'
order by ParentContentID asc, CASE WHEN ISNULL(LibTitle,'') <> '' THEN 1 ELSE 2 END asc, Contents.Text asc
UPDATE #tmpUpdate SET BaseFlag = 1 where LibTitle <> '' and numLibCP = 1
UPDATE #tmpUpdate SET BaseFlag = CASE WHEN tU.LibTitle <> '' THEN 1 ELSE 2 END FROM #tmpUpdate tU
where BaseFlag = 0 AND tU.ContentID IN
(
Select ContentID FROM
(SELECT sub.ContentID,
row_number() OVER(PARTITION BY sub.ParentContentID ORDER BY CASE WHEN ISNULL(sub.LibTitle,'') <> '' THEN 1 ELSE 2 END asc, sub.Contenttext asc) as pos
FROM #tmpUpdate sub
) x
WHERE x.pos = 1
)
declare @Cont TABLE
(
ContentID int,
ItemID int,
xConfig xml
)
insert into @Cont
SELECT tU.ContentID, ItemID, xConfig = CAST(tblContents.config AS xml) FROM
tblContents
INNER JOIN
#tmpUpdate tU ON tU.ContentID = tblContents.ContentID
where tU.BaseFlag > 0
Update @Cont Set xConfig.modify('delete //MasterSlave') From @Cont;
Update tblContents SET Text = 'Cover Page', Config = CAST(xConfig AS varchar(max)),
DTS = GETDATE(), UserID = 'CPVolian2026'
FROM
@Cont CNT INNER JOIN
tblContents ON CNT.ContentID = tblContents.ContentID;
--Update items PreviousIds
UPDATE tblItems Set PreviousID = IdToSwapTO.ItemID
FROM
tblItems
INNER JOIN
#tmpUpdate tU ON tblItems.PreviousID = tU.ItemID AND tU.BaseFlag = 0
INNER JOIN #tmpUpdate IdToSwapTO ON IdToSwapTO.ParentContentID = tU.ParentContentID AND IdToSwapTO.BaseFlag IN (1,2)
UPDATE tblItems Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
FROM
#tmpUpdate tU INNER JOIN
tblItems ON tU.ContentID = tblItems.ContentID
WHERE tU.BaseFlag = 0;
UPDATE tblContents Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
FROM
#tmpUpdate tU INNER JOIN
tblContents ON tU.ContentID = tblContents.ContentID
WHERE tU.BaseFlag = 0;
DELETE FROM
tblEntries
FROM
tblEntries
INNER JOIN
#tmpUpdate tU ON tU.ContentID = tblEntries.ContentID
WHERE tU.BaseFlag in (0,2);
INSERT INTO [dbo].[tblEntries]
([ContentID]
,[DocID]
,[DTS]
,[UserID]
,[DeleteStatus])
SELECT
DISTINCT tU.ContentID,
766, -- docid 766 "Cover Page 1"
GETDATE(),
'CPVolian2026',
0
FROM
#tmpUpdate tU
INNER JOIN
@Cont CNT ON tU.ContentID = CNT.ContentID
WHERE tU.BaseFlag = 2;
drop table #tmpUpdate;
IF (@@Error = 0) SELECT '[Barakah Cover Page Consolidation] Succeeded'
ELSE SELECT '[Barakah Cover Page Consolidation] Error'
go
@@ -0,0 +1,263 @@
-- =============================================
-- Author: Matthew Schill
-- Create date: 03/20/2026
-- Description: Script to consolidate Cover Pages for Barakah
-- by Converting multi-unit procedures with Cover Pages
-- to use 1 Library Document Cover Page
-- =============================================
----@isTest = 0 will change data
----@isTest = 1 for internal testing (no data will be changed)
DECLARE @isTest bit = 1;
----Per Cover Page, pull how many cover pages
----Each Cover Page's procedure has
----and how many of those are library documents
select Contents.ContentID
, Contenttext = Contents.Text
, Items.ItemID
, tblDocuments.DocID
, ParentContentID
, ParentItemID
, LibTitle = ISNULL(LibTitle,'')
, numLibCP
, numCP
,BaseFlag = 0
INTO #tmpUpdate
from Contents
inner join Entries on Contents.ContentID = Entries.ContentID
inner join tblDocuments on tblDocuments.DocID = Entries.DocID
inner join Items on Items.ContentID = Contents.ContentID
outer apply
(select ParentContentID=ContentID, ParentItemID = PItm.ItemID
FROM dbo.vefn_ParentItems(Items.ItemID) PItm
where PItm.ItemID <> Items.ItemID
) parent
outer apply
(select numLibCP = Count(*)
FROM dbo.vefn_ChildItems(ParentItemID) PItm
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
INNER JOIN Entries on Contents.ContentID = Entries.ContentID
INNER JOIN tblDocuments on tblDocuments.DocID = Entries.DocID
where PItm.ItemID <> ParentItemID
AND Contents.text like 'Cover Page%' and ISNULL(tblDocuments.LibTitle,'') <> ''
) childWithLibTitle
outer apply
(select numCP = Count(*)
FROM dbo.vefn_ChildItems(ParentItemID) PItm
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
where PItm.ItemID <> ParentItemID
AND Contents.text like 'Cover Page%'
) child
where Contents.text like 'Cover Page%'
order by ParentContentID asc, CASE WHEN ISNULL(LibTitle,'') <> '' THEN 1 ELSE 2 END asc, Contents.Text asc
--BaseFlag
-- 0 = a Cover Page that will be deleted
-- 1 = is base item (Cover Page will get renamed and applicability set to all)
-- 2 = would be base item but not linked to Lib document (Cover Page will get renamed and applicability set to all + will need linked to library doc)
---- If only 1 Library Doc CP for the CP's procedure and this is it, then mark this CP as the one we will keep
UPDATE #tmpUpdate SET BaseFlag = 1 where LibTitle <> '' and numLibCP = 1
---- If multiple Library Document CPs, pick the first one as the one we will keep (BaseFlag = 1)
---- If no Library Document CPs, pick the first one as the one we will repurpose (BaseFlag = 2)
UPDATE #tmpUpdate SET BaseFlag = CASE WHEN tU.LibTitle <> '' THEN 1 ELSE 2 END FROM #tmpUpdate tU
where BaseFlag = 0 AND tU.ContentID IN
(
Select ContentID FROM
(SELECT sub.ContentID,
row_number() OVER(PARTITION BY sub.ParentContentID ORDER BY CASE WHEN ISNULL(sub.LibTitle,'') <> '' THEN 1 ELSE 2 END asc, sub.Contenttext asc) as pos
FROM #tmpUpdate sub
) x
WHERE x.pos = 1
)
----BEGIN TESTS--
if(@isTest = 1)
BEGIN
select Count(*), 'Should be Zero - not exactly one BaseFlag set to non 0 for each Parent Item' FROM #tmpUpdate TU
OUTER APPLY
(select numBaseFlagSet = SUM(CASE WHEN sub.BaseFlag > 0 THEN 1 ELSE 0 END)
FROM #tmpUpdate sub
where sub.ParentContentID = TU.ParentContentID
) sub
where numBaseFlagSet <> 1
select Count(*), 'Should be Zero - 0 Lib Docs, BaseFlag is 1' FROM #tmpUpdate TU
where numLibCP = 0 and BaseFlag = 1
select Count(*), 'Should be Zero - at least 1 Lib Docs, BaseFlag is 2' FROM #tmpUpdate TU
where numLibCP > 0 and BaseFlag = 2
select Count(*), 'Should be Zero - 1 Lib Docs, BaseFlag not 1 for that Lib doc' FROM #tmpUpdate TU
where numLibCP = 1 and LibTitle <> '' and BaseFlag <> 1
select Count(*), 'Should be Zero - 1 Lib Docs, BaseFlag not 0 for ones without Lib Doc' FROM #tmpUpdate TU
where numLibCP = 1 and LibTitle = '' and BaseFlag <> 0
select Count(*), 'Should be Zero - 1 CP, no Lib Docs, BaseFlag not 2' FROM #tmpUpdate TU
where numLibCP = 0 and numCP = 1 and BaseFlag <> 2
select Count(*), 'Should be Zero - more than 1 Lib Docs, BaseFlag is 1' FROM #tmpUpdate TU
where numLibCP = 0 and BaseFlag = 1
select Count(*), 'Should be Zero - not exactly one BaseFlag set to non 0 for each Parent Item' FROM #tmpUpdate TU
OUTER APPLY
(select numBaseFlagSet = SUM(CASE WHEN sub.BaseFlag > 0 THEN 1 ELSE 0 END)
FROM #tmpUpdate sub
where sub.ParentContentID = TU.ParentContentID
) sub
where numBaseFlagSet <> 1
select Count(*), 'Should be Zero - 0 Lib Docs, BaseFlag is 1' FROM #tmpUpdate TU
where numLibCP = 0
and BaseFlag = 1
--all Parents should have exactly 1 Baseflag=1 or BaseFlage = 2
select 'Should be No Records where not a BaseFlag 1 or 2'
select NumNotBaseFlag12 = Count(*)
FROM #tmpUpdate TU
Group by ParentContentID
HAVING SUM(CASE WHEN BaseFlag in (1,2) THEN 1 ELSE 0 END) <> 1
select 'Should be No Records where with both a BaseFlag 1 and 2'
select NumBothBaseFlag12 = Count(*)
FROM #tmpUpdate TU
Group by ParentContentID
HAVING SUM(BaseFlag) > 2
END
--END TESTS--
--BaseFlag
-- 0 = a Cover Page that will be deleted
-- 1 = is base item (Cover Page will get renamed and applicability set to all)
-- 2 = would be base item but not linked to Lib document (Cover Page will get renamed and applicability set to all + will need linked to library doc)
----Update config for Coverpage 1 to remove <MasterSlave Applicability="1" />
----from that config
----cover page 1s
declare @Cont TABLE
(
ContentID int,
ItemID int,
xConfig xml
)
insert into @Cont
SELECT tU.ContentID, ItemID, xConfig = CAST(tblContents.config AS xml) FROM
tblContents
INNER JOIN
#tmpUpdate tU ON tU.ContentID = tblContents.ContentID
where tU.BaseFlag > 0
if(@isTest = 1)
BEGIN
select WRD='Have Masterslave in xconfig', NumwithMasterSlave = Count(*) FROM @Cont CNT
INNER JOIN
tblContents ON CNT.ContentID = tblContents.ContentID
where CAST(xConfig AS varchar(max)) like '%MasterSlave%'
END
Update @Cont Set xConfig.modify('delete //MasterSlave') From @Cont;
if(@isTest = 1)
BEGIN
select WRD='None should have Masterslave Removed in xconfig', NumwithMasterSlave = Count(*) FROM @Cont CNT
INNER JOIN
tblContents ON CNT.ContentID = tblContents.ContentID
where CAST(xConfig AS varchar(max)) like '%MasterSlave%'
select 'Show Records and how the ids will be re-linked'
Select tblItems.ItemID, tblItems.ContentID, tblItems.PreviousID, tblContents.Text,
PreviousItemID = tU.ItemID, PreviousContentID = tU.ContentID, PreviousText = tUCont.Text,
RelinkToItemID = IdToSwapTO.ItemID, RelinkToContentID = IdToSwapTO.ContentID, RelinkToText = IdToSwapTOCont.Text
FROM
tblItems
INNER JOIN
tblContents on tblContents.ContentID = tblItems.ContentID
INNER JOIN
#tmpUpdate tU ON tblItems.PreviousID = tU.ItemID AND tU.BaseFlag = 0
INNER JOIN
tblContents tUCont on tUCont.ContentID = tU.ContentID
LEFT OUTER JOIN #tmpUpdate IdToSwapTO ON IdToSwapTO.ParentContentID = tU.ParentContentID AND IdToSwapTO.BaseFlag IN (1,2)
LEFT OUTER JOIN tblContents IdToSwapTOCont on IdToSwapTOCont.ContentID = IdToSwapTO.ContentID
END
ELSE
BEGIN
--Update Config for Contents and set Text = 'Cover Page'
Update tblContents SET Text = 'Cover Page', Config = CAST(xConfig AS varchar(max)),
DTS = GETDATE(), UserID = 'CPVolian2026'
FROM
@Cont CNT INNER JOIN
tblContents ON CNT.ContentID = tblContents.ContentID;
--Update items PreviousIds
UPDATE tblItems Set PreviousID = IdToSwapTO.ItemID
FROM
tblItems
INNER JOIN
#tmpUpdate tU ON tblItems.PreviousID = tU.ItemID AND tU.BaseFlag = 0
INNER JOIN #tmpUpdate IdToSwapTO ON IdToSwapTO.ParentContentID = tU.ParentContentID AND IdToSwapTO.BaseFlag IN (1,2)
--delete where BaseFlag = 0 ---Items,Content,Entries, --set DeleteStatus = 1
--these are ones that will be replaced by a library document
UPDATE tblItems Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
FROM
#tmpUpdate tU INNER JOIN
tblItems ON tU.ContentID = tblItems.ContentID
WHERE tU.BaseFlag = 0;
UPDATE tblContents Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
FROM
#tmpUpdate tU INNER JOIN
tblContents ON tU.ContentID = tblContents.ContentID
WHERE tU.BaseFlag = 0;
--delete entries where Baseflag = 2
--create new entries where Baseflag = 2
DELETE FROM
tblEntries
FROM
tblEntries
INNER JOIN
#tmpUpdate tU ON tU.ContentID = tblEntries.ContentID
WHERE tU.BaseFlag in (0,2);
INSERT INTO [dbo].[tblEntries]
([ContentID]
,[DocID]
,[DTS]
,[UserID]
,[DeleteStatus])
SELECT
DISTINCT tU.ContentID,
766, -- docid 766 "Cover Page 1"
GETDATE(),
'CPVolian2026',
0
FROM
#tmpUpdate tU
INNER JOIN
@Cont CNT ON tU.ContentID = CNT.ContentID
WHERE tU.BaseFlag = 2;
END;
drop table #tmpUpdate;
@@ -1099,7 +1099,9 @@ namespace VEPROMS
(int)changeBarData.FixedChangeColumn : (int)changeBarData.FixedChangeColumn :
System.Convert.ToInt32(changeBarData.DefaultCBLoc.Split(" ,".ToCharArray())[System.Convert.ToInt32(cbd.MyChangeBarLoc)]); System.Convert.ToInt32(changeBarData.DefaultCBLoc.Split(" ,".ToCharArray())[System.Convert.ToInt32(cbd.MyChangeBarLoc)]);
//cbd.MyChangeBarColumn = (int)changeBarData.FixedChangeColumn; //cbd.MyChangeBarColumn = (int)changeBarData.FixedChangeColumn;
if (cbd.MyChangeBarText == PrintChangeBarText.UserDef) if (cbd.MyChangeBarText == PrintChangeBarText.UserDef && !string.IsNullOrEmpty(ppTxbxChangeBarUserMsgOne.Text))
cbd.MyChangeBarMessage = ppTxbxChangeBarUserMsgOne.Text + @"\n" + ppTxbxChangeBarUserMsgTwo.Text;
else if (cbd.MyChangeBarText == PrintChangeBarText.UserDef)
cbd.MyChangeBarMessage = _DocVersionConfig.Print_UserCBMess1 + @"\n" + _DocVersionConfig.Print_UserCBMess2; cbd.MyChangeBarMessage = _DocVersionConfig.Print_UserCBMess1 + @"\n" + _DocVersionConfig.Print_UserCBMess2;
} }
+350 -5
View File
@@ -1643,7 +1643,11 @@ Begin
Select Cast(i.LastChanged as varbinary(8)) as 'ILastChanged', Select Cast(i.LastChanged as varbinary(8)) as 'ILastChanged',
i.ItemID as 'ItemID', i.ItemID as 'ItemID',
zi.VersionID as 'VersionID', zi.VersionID as 'VersionID',
zi.PPath + CASE WHEN c.[Type] % 20000 = 6 THEN REPLACE(zi.PPath,'Note','Caution')
WHEN c.[Type] % 20000 = 7 THEN REPLACE(zi.PPath,'Caution','Note')
ELSE zi.PPath
END
+
Case (c.[Type]/10000) Case (c.[Type]/10000)
When 0 Then @Delim + @UnitPrefix + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Procedure When 0 Then @Delim + @UnitPrefix + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Procedure
When 1 Then @Delim + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Section When 1 Then @Delim + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Section
@@ -19134,7 +19138,7 @@ GO
rd.ParentID rd.ParentID
From vwRofstData_RofstDatabases rd From vwRofstData_RofstDatabases rd
Where rd.RofstID = @RofstID Where rd.RofstID = @RofstID
Order By rd.dbiID Asc; Order By rd.dbiTitle Asc;
Return; Return;
End End
@@ -19320,7 +19324,7 @@ GO
rc.AccPageID rc.AccPageID
From RoParent rp From RoParent rp
inner join vwRofstData_RofstChildren rc on rc.RofstID = rp.RofstID and rc.dbiID = rp.dbiID and rc.ParentID = rp.ID inner join vwRofstData_RofstChildren rc on rc.RofstID = rp.RofstID and rc.dbiID = rp.dbiID and rc.ParentID = rp.ID
Order By rc.ID Asc; Order By rc.title Asc;
Return; Return;
@@ -24325,8 +24329,10 @@ BEGIN
OR FromID in (Select ContentID from tblContents where deletestatus != 0 and ActionDTS < @dte) OR FromID in (Select ContentID from tblContents where deletestatus != 0 and ActionDTS < @dte)
) )
PRINT 'Deleting Items and Parts' PRINT 'Deleting Items and Parts'
alter table tblParts nocheck constraint FK_Parts_Items
delete from tblItems where deletestatus != 0 and DTS < @dte delete from tblItems where deletestatus != 0 and DTS < @dte
delete from tblParts where deletestatus != 0 and ItemID Not IN (Select ItemID from Items) and DTS < @dte delete from tblParts where deletestatus != 0 and ItemID Not IN (Select ItemID from Items) and DTS < @dte
alter table tblParts check constraint FK_Parts_Items
PRINT 'Purging Parts with deleted Contents' PRINT 'Purging Parts with deleted Contents'
DELETE from Child DELETE from Child
FROM tblParts AS Child FROM tblParts AS Child
@@ -24351,7 +24357,9 @@ BEGIN
ON Itms.ItemID = tblItems.ItemID AND Itms.deletestatus = tblItems.deletestatus ON Itms.ItemID = tblItems.ItemID AND Itms.deletestatus = tblItems.deletestatus
alter table tblItems check constraint FK_Items_Items alter table tblItems check constraint FK_Items_Items
PRINT 'Purging Contents' PRINT 'Purging Contents'
alter table tblEntries nocheck constraint FK_Entries_Contents
delete from tblContents where deletestatus != 0 and ActionDTS < @dte delete from tblContents where deletestatus != 0 and ActionDTS < @dte
alter table tblEntries check constraint FK_Entries_Contents
PRINT 'Phase 3' PRINT 'Phase 3'
delete from AnnotationAudits where DTS < @dte delete from AnnotationAudits where DTS < @dte
delete from ContentAudits where DTS < @dte delete from ContentAudits where DTS < @dte
@@ -24432,6 +24440,343 @@ ELSE PRINT 'Procedure Creation: [vesp_GetOtherActiveSessions] Error on Creation'
GO GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetROsNotUsed]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [vesp_GetROsNotUsed];
GO
-- Need to drop vesp_GetROsNotUsed SP first so script can drop and recreate the TableValID table type
IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.DOMAINS WHERE Domain_Name = 'TableValID' )
DROP TYPE [dbo].[TableValID]
CREATE TYPE [dbo].[TableValID] AS TABLE(
[ID] [bigint] NOT NULL
)
GO
/****** Object: StoredProcedure [dbo].[vesp_GetROsNotUsed] ******/
-- =============================================
-- Author: Matthew Schill
-- Create date: 1/5/2026
-- Description: Returns ROs that are not Used in PROMS
-- =============================================
CREATE PROCEDURE [dbo].[vesp_GetROsNotUsed]
(
@dbIDs AS dbo.TableValID READONLY
)
AS
BEGIN
Create table #notused (RofstChildID int NULL, roid [varchar](50) NULL, ID int NOT NULL, ParentID int NOT NULL, dbID int NOT NULL, title varchar(max) not null);
DECLARE @FSTs table (RofstID int primary key NOT NULL, RODbID int NOT NULL)
INSERT INTO @FSTs
Select max(RoFSTID), RODbID from ROFsts
GROUP BY RODbID
--insert the not used ROs
INSERT INTO #notused
SELECT RofstChild.RofstChildID, RofstChild.roid, RofstChild.ID, RofstChild.ParentID, RofstChild.dbiID,
RofstChild.title + Case When (Not RofstChild.[value] is null) Then ' (' + fstdb.dbiAP + '-' + RofstChild.appid + ')' Else '' End --Add in Accessory Page ID if it exists
FROM RofstChild
INNER JOIN RofstDatabase fstdb on fstdb.RofstID = RofstChild.RofstID and fstdb.dbiID = RofstChild.dbiID
INNER JOIN @FSTs fst on fst.RofstID = fstdb.RofstID AND RofstChild.RofstID = fst.RofstID
INNER JOIN @dbIDs dbIDs on dbIDs.ID = RofstChild.dbiID --downbase to only dbs included
LEFT OUTER JOIN RofstChild subchild ON subChild.ParentID = RofstChild.ID --make sure it is not a parent of something else
LEFT OUTER JOIN DRoUsages ON [DRoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = DROUsages.RODbID --not used in documents
LEFT OUTER JOIN RoUsages ON [RoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = ROUsages.RODbID --not used in regular ROs
where
subchild.RofstChildID IS NULL --make sure it is not a parent of something else
AND DRoUsages.DROUsageID IS NULL --not used in documents
AND RoUsages.ROUsageID IS NULL --not used in regular ROs
--insert thier parents
--if they are not already in @notused
INSERT INTO #notused
SELECT DISTINCT RofstChild.RofstChildID, RofstChild.roid, RofstChild.ID, RofstChild.ParentID, RofstChild.dbiID, RofstChild.title
FROM RofstChild
INNER JOIN #notused notusedgetparents on notusedgetparents.ParentID = RofstChild.ID AND RofstChild.dbiID = notusedgetparents.dbID
INNER JOIN @FSTs fst on RofstChild.RofstID = fst.RofstID
LEFT OUTER JOIN #notused notused on notused.RofstChildID = RofstChild.RofstChildID
WHERE notused.RofstChildID IS NULL
--insert parent dbs
--if they are not already in @notused
INSERT INTO #notused
SELECT DISTINCT NULL, NULL, RofstDatabase.ID, RofstDatabase.ParentID, RofstDatabase.dbiID, RofstDatabase.dbiTitle
FROM RofstDatabase
INNER JOIN @FSTs fst on fst.RofstID = RofstDatabase.RofstID
INNER JOIN @dbIDs dbIDs on RofstDatabase.dbiID = dbIDs.ID --downbase to only dbs included
select *
FROM #notused notused
order by RofstChildID, dbID
drop table #notused
RETURN
END
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Succeeded'
ELSE PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Error on Creation'
GO
IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_tblROUsagesRODbIDDeleteStatusROID')
DROP INDEX [IX_tblROUsagesRODbIDDeleteStatusROID] ON [dbo].[tblROUsages];
GO
CREATE NONCLUSTERED INDEX IX_tblROUsagesRODbIDDeleteStatusROID
ON [dbo].[tblROUsages] ([RODbID],[DeleteStatus],[ROID])
INCLUDE([ROUsageID],[ContentID],[Config],[DTS],[UserID],[LastChanged]) 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_tblROUsagesRODbIDDeleteStatusROID Index. Speeds up RO queries'
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetCurrentApprovedRevisions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [GetCurrentApprovedRevisions];
GO
/****** Object: StoredProcedure [dbo].[GetCurrentApprovedRevisions] Script Date: 02/05/2026 7:54:42 AM ******/
-- =============================================
-- Author: Matthew Schill
-- Create date: 02/05/2026
-- Description: Gets all current approved revisions
-- =============================================
CREATE PROCEDURE [dbo].[GetCurrentApprovedRevisions]
(
@ItemID AS bigint
)
AS
BEGIN
select max(rr.revisionid) revisionid, UnitId, UnitVal.name UnitName, max(rr.DTS) DTS
from items ii
inner join revisions rr on ii.itemid = rr.itemid
inner join versions vv on rr.revisionid = vv.revisionid
inner join stages ss on vv.stageid = ss.stageid
outer apply
(Select UnitId = r1.value('@Index','int') FROM rr.config.nodes('Config/Applicability') t1(r1)) App
left outer join
(select r1.value('@index','int') indx
,r1.value('@Name','varchar') name
from (select *,cast(config as xml) xconfig from DocVersions
where ItemID in(select itemID from vefn_AllSiblingItems(@ItemID))) SDV
cross apply
xconfig.nodes('Config/Slaves/Slave') t1(r1)) UnitVal ON UnitVal.indx = UnitId
where ss.isapproved = 1
and ii.itemid = @ItemID
group by UnitId, UnitVal.name
RETURN
END
IF (@@Error = 0) PRINT 'Procedure Creation: [GetCurrentApprovedRevisions] Succeeded'
ELSE PRINT 'Procedure Creation: [GetCurrentApprovedRevisions] Error on Creation'
GO
/*
==========================================================================================================
-- Begin: C2026-010 Add Audit Ability for ChangeBars
-- Author: Matthew Schill
-- Create date: 02/17/2026
==========================================================================================================
*/
/*
----------------------------------------------------------------------------------
Tables:
----------------------------------------------------------------------------------
[ChangeBarAudits]
----------------------------------------------------------------------------------
Indexes:
----------------------------------------------------------------------------------
[IX_ChangeBarAudits_ItemID] on [dbo].[ChangeBarAudits]
*/
IF Not Exists(SELECT * FROM sys.objects Where name = 'ChangeBarAudits' AND type in (N'U'))
Begin
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
/****** Create Table to hold Audit Information ******/
CREATE TABLE [dbo].[ChangeBarAudits](
[AuditID] [bigint] IDENTITY(1,1) NOT NULL,
[ItemID] [bigint] NOT NULL,
[Text] [nvarchar](max) NULL,
[DTS] [datetime] NOT NULL,
[UserID] [nvarchar](100) NOT NULL,
[UnitIndex] [int] NULL,
CONSTRAINT [PK_ChangeBarAudits] PRIMARY KEY CLUSTERED
(
[AuditID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
IF (@@Error = 0) PRINT 'Table Creation: [ChangeBarAudits] Succeeded'
ELSE PRINT 'Table Creation: [ChangeBarAudits] Error on Creation'
/****** Table was not previously created - so intially populate with info from Approvals ******/
INSERT into ChangeBarAudits([ItemID],[Text],[DTS],[UserID],[UnitIndex])
select --rr.RevisionID,
rr.ItemID,
Text = CASE WHEN r1.value('@Index','int') <> 0 AND UnitName IS NOT NULL THEN
'(Unit ' + UnitName + ') '
ELSE
''
END +
'Approved by (' + rr.UserID + ') on (' +
CAST(rr.DTS AS VARCHAR) + ')',
rr.DTS,
rr.UserID,
UnitIndex = r1.value('@Index','int')
-- , UnitName
from revisions rr
inner join versions vv on rr.revisionid = vv.revisionid
inner join stages ss on vv.stageid = ss.stageid
outer apply rr.config.nodes('Config/Applicability') t1(r1)
outer apply
( Select r2.value('@Name','varchar') UnitName
FROM
(select DocVerSions.ItemID, cast(config as xml) xconfig from DocVersions
inner join
vefn_AllSiblingItems(rr.ItemID) Sib ON DocVerSions.ItemID = Sib.ItemID) SDV
cross apply
xconfig.nodes('Config/Slaves/Slave') t2(r2)
WHERE r2.value('@index','varchar') = r1.value('@Index','int')
) UN
where ss.isapproved = 1
order by rr.ItemID, rr.RevisionID desc
IF (@@Error = 0) PRINT '[ChangeBarAudits] Initial Population Succeeded'
ELSE PRINT '[ChangeBarAudits] Initial Population Error'
/****** Create Index to get ChangeBar Audit Information for Item (ItemID = ProcedureID) ******/
CREATE NONCLUSTERED INDEX [IX_ChangeBarAudits_ItemID] ON [dbo].[ChangeBarAudits]
(
[ItemID] ASC
)
INCLUDE ([AuditID], [Text], [DTS], [UnitIndex])
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]
IF (@@Error = 0) PRINT 'Index Creation: [IX_ChangeBarAudits_ItemID] Succeeded'
ELSE PRINT 'Index Creation: [IX_ChangeBarAudits_ItemID] Error on Creation'
End
-- =============================================
-- Description: Gets ChangeBar Audit History by item
-- =============================================
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetChangeBarAuditHistoryByItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [GetChangeBarAuditHistoryByItem];
GO
CREATE PROCEDURE [dbo].[GetChangeBarAuditHistoryByItem]
(
@ItemID AS bigint
)
AS
BEGIN
Select * FROM ChangeBarAudits where ItemID = @ItemID
order by DTS desc
RETURN
END
IF (@@Error = 0) PRINT 'Procedure Creation: [GetChangeBarAuditHistoryByItem] Succeeded'
ELSE PRINT 'Procedure Creation: [GetChangeBarAuditHistoryByItem] Error on Creation'
GO
-- =============================================
-- Description: Adds ChangeBar Audit History
-- =============================================
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[AddChangeBarAuditHistory]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [AddChangeBarAuditHistory];
GO
CREATE PROCEDURE [dbo].[AddChangeBarAuditHistory]
(
@ItemID AS bigint,
@Description As nvarchar(max),
@DTS AS Datetime,
@UserID As nvarchar(100),
@UnitIndex AS bigint = NULL
)
AS
BEGIN
INSERT into ChangeBarAudits([ItemID],[Text],[DTS],[UserID],[UnitIndex])
VALUES (@ItemID, @Description, @DTS, @UserID, @UnitIndex)
RETURN
END
IF (@@Error = 0) PRINT 'Procedure Creation: [AddChangeBarAuditHistory] Succeeded'
ELSE PRINT 'Procedure Creation: [AddChangeBarAuditHistory] Error on Creation'
GO
/*
==========================================================================================================
-- End: C2026-010 Add Audit Ability for ChangeBars
==========================================================================================================
*/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetMissingDocsByUnit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [GetMissingDocsByUnit];
GO
-- =============================================
-- Author: Matthew Schill
-- Create date: 02/27/2026
-- Description: Get Missing Docs by Unit for Generating Pdf table
-- =============================================
CREATE PROCEDURE [dbo].[GetMissingDocsByUnit]
AS
BEGIN
select Docs.DocID, UnitID, SectionID = MIN(SectionID)
FROM
(SELECT DISTINCT [DocID]
FROM [tblDocuments]) Docs
INNER JOIN Entries on Docs.DocID = Entries.DocID
INNER JOIN Contents on Entries.ContentID = Contents.ContentID
inner join Items on Items.ContentID = Contents.ContentID
outer apply
(Select UnitID = ID FROM dbo.vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](Items.ItemID),',')) Unit
outer apply
(Select TOP 1 SectionID = ItemID FROM Contents SecC where SecC.ContentID = Contents.ContentID
AND (SecC.Type / 10000) = 1
AND dbo.vefn_GetVersionIDByItemID(ItemID) IS NOT NULL
) Section
left outer join Pdfs on Pdfs.DocID = Docs.DocID AND Pdfs.DebugStatus = CASE WHEN UNITID IS NULL THEN 0 ELSE UnitID * 10 END
WHERE Pdfs.DocID IS NULL
AND SectionID IS NOT NULL
Group by Docs.DocID, UnitID
order by Docs.DocID, UnitID
RETURN
END
IF (@@Error = 0) PRINT 'Procedure Creation: [GetMissingDocsByUnit] Succeeded'
ELSE PRINT 'Procedure Creation: [GetMissingDocsByUnit] Error on Creation'
GO
/* /*
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
| ADD New Code Before this Block | | ADD New Code Before this Block |
@@ -24465,8 +24810,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255) DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255) DECLARE @RevDescription varchar(255)
set @RevDate = '09/16/2025 7:00 AM' set @RevDate = '03/13/2026 7:00 AM'
set @RevDescription = 'Added Purge Change History and Index Maintenance functions to Admin Tools' set @RevDescription = 'Added Get Missing Docs by Unit for Generating Pdf table'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
@@ -13,6 +13,8 @@ using System.Text.RegularExpressions;
using System.Globalization; using System.Globalization;
using DevComponents.DotNetBar; using DevComponents.DotNetBar;
using JR.Utils.GUI.Forms; using JR.Utils.GUI.Forms;
using Volian.Controls.Library;
using System.Linq;
namespace VEPROMS namespace VEPROMS
{ {
@@ -1133,6 +1135,7 @@ namespace VEPROMS
ViewPDF = ViewPDF && MyProcedures.Count == 1; ViewPDF = ViewPDF && MyProcedures.Count == 1;
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
StageInfo nsi = StageInfo.GetJustStage(RevStage); StageInfo nsi = StageInfo.GetJustStage(RevStage);
DateTime now = DateTime.Now; //using variable so dates are consistent
foreach (ApprovalProcedure ap in MyProcedures) //spin thru looking for updating current revision foreach (ApprovalProcedure ap in MyProcedures) //spin thru looking for updating current revision
{ {
// ric: current revision info record, not new one being created. // ric: current revision info record, not new one being created.
@@ -1205,7 +1208,7 @@ namespace VEPROMS
cfg.History_StartDate = myDTS; // if there is a slave, date found from above code cfg.History_StartDate = myDTS; // if there is a slave, date found from above code
cfg.Applicability_Index = ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave; cfg.Applicability_Index = ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave;
//cfg.Save(); //cfg.Save();
revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID); revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), now, Volian.Base.Library.VlnSettings.UserID);
// revision.MyConfig.History_StartDate = pi.DTS; // revision.MyConfig.History_StartDate = pi.DTS;
// revision.MyConfig.Save(); // revision.MyConfig.Save();
// revision = revision.Save(); // revision = revision.Save();
@@ -1232,7 +1235,7 @@ namespace VEPROMS
RevisionConfig cfg = new RevisionConfig(); RevisionConfig cfg = new RevisionConfig();
cfg.History_StartDate = pi.DTS; // todo: this should probably be myDTS, found during fix of B2019-051. cfg.History_StartDate = pi.DTS; // todo: this should probably be myDTS, found during fix of B2019-051.
//cfg.Save(); //cfg.Save();
revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID); revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), now, Volian.Base.Library.VlnSettings.UserID);
// revision.MyConfig.History_StartDate = pi.DTS; // revision.MyConfig.History_StartDate = pi.DTS;
// revision.MyConfig.Save(); // revision.MyConfig.Save();
// revision = revision.Save(); // revision = revision.Save();
@@ -1251,7 +1254,7 @@ namespace VEPROMS
byte[] summaryBuf = null; byte[] summaryBuf = null;
//B2017-149 Allow the user to choose if they want the Summary of Changes report created during the approval process //B2017-149 Allow the user to choose if they want the Summary of Changes report created during the approval process
if (doSumChg) summaryBuf = CreateSummary(ref pi, summaryPDF, myDTS); if (doSumChg) summaryBuf = CreateSummary(ref pi, summaryPDF, myDTS);
DateTime currentDTS = DateTime.Now; DateTime currentDTS = now;
Check check = Check.MakeCheck(revision, Stage.GetJustStage(RevStage), RevisionInfo.BuildRevisionChecks(pi), currentDTS, VlnSettings.UserID); Check check = Check.MakeCheck(revision, Stage.GetJustStage(RevStage), RevisionInfo.BuildRevisionChecks(pi), currentDTS, VlnSettings.UserID);
//make pdf with promsprinter and get byte stream //make pdf with promsprinter and get byte stream
// Moved to end so that Item and Content are saved at the same time // Moved to end so that Item and Content are saved at the same time
@@ -1309,6 +1312,14 @@ namespace VEPROMS
pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0; pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
if (si.IsApproved == 1) if (si.IsApproved == 1)
{ {
//B2026-016 - Fix error pulling Reference Object info into Export
if (pi.MyDocVersion.DocVersionAssociationCount == 0)
{
MessageBox.Show("Prior to Approval you must set the Referenced Object Database", "No RO Database set", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
dlgExportImport dlg = new dlgExportImport("Export", pi, MyFrmVEPROMS, (selectedSlave)); // "true tell export to convert ROs and Transitions to text dlgExportImport dlg = new dlgExportImport("Export", pi, MyFrmVEPROMS, (selectedSlave)); // "true tell export to convert ROs and Transitions to text
dlg.DocReplace = frm.DocReplace; // this tells approval to prepare an export file with resolved transitions and ROs, word sections are saved with resolved ROs during approval PDF creation and saved in DocReplace dlg.DocReplace = frm.DocReplace; // this tells approval to prepare an export file with resolved transitions and ROs, word sections are saved with resolved ROs during approval PDF creation and saved in DocReplace
System.Xml.XmlDocument xd = new System.Xml.XmlDocument(); System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
@@ -1317,10 +1328,46 @@ namespace VEPROMS
version.ApprovedXML = xd.OuterXml; version.ApprovedXML = xd.OuterXml;
version.Save(); version.Save();
dlg.Dispose(); dlg.Dispose();
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, DateTime.Now, selectedSlave); UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, now, selectedSlave);
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
ChangeBarAuditHistory.AddAudit(pi.ItemID, $"{(selectedSlave > 0 ? $"(Unit {pi.MyDocVersion.UnitNames[selectedSlave - 1]}) " : "")}Approved by ({VlnSettings.UserID}) on ({now})", now, VlnSettings.UserID, selectedSlave);
// Clear the change bar override for this procedure: // Clear the change bar override for this procedure:
pi.ClearChangeBarOverrides(); pi.ClearChangeBarOverrides();
//B2019-140 Change bars do not get refreshed when approval is run.
ProcedureInfo newproc;
//// Refresh the StepPanel for the current Procedure
//// so change bars update
//// on any open StepPanel
//B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open
DisplayTabItem dti = MyFrmVEPROMS.GetTabContainingProcedure(pi.ItemID);
if (dti != null)
{
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
dti.MyStepTabPanel.MyStepPanel.Focus();
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
{
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
}
dti.MyStepTabPanel.MyStepTabRibbon.RefreshProcedure();
Application.DoEvents();
newproc = ProcedureInfo.Get(pi.ItemID);
}
else
{
newproc = ItemInfo.ResetProcedure(pi.ItemID);
}
//since in a separate form, need to update the tree view
//so "Showing Change Bars" Content Menu Item is correct
MyFrmVEPROMS.RefreshProcedureNode(newproc);
} }
else else
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS, selectedSlave); UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS, selectedSlave);
@@ -947,14 +947,16 @@ namespace VEPROMS
pi = AddProcedure(xd.DocumentElement, dvi, pi); pi = AddProcedure(xd.DocumentElement, dvi, pi);
GC.Collect(); // need to cleanup memory after importing each procedure due to use of Regular Expressions in processing RO and Transition links GC.Collect(); // need to cleanup memory after importing each procedure due to use of Regular Expressions in processing RO and Transition links
} }
DirectoryInfo di = new DirectoryInfo(PEIPath);
DirectoryInfo[] dis = di.GetDirectories();
for (int d = 0; d < dis.Length; d++)
dis[d].Delete(true);
lblImportStatus.Text = "Updating Transitions"; lblImportStatus.Text = "Updating Transitions";
AddTransitions(); AddTransitions();
FixFloatingFoldouts(); FixFloatingFoldouts();
SaveTransitionAndItemContentIDs(); SaveTransitionAndItemContentIDs();
// B2026-034 remove the folders created from un-ziping the import set file - this was done prior to updating transitions
// so if there was an issue deleting these temporay folders and files, the actual importing will be completed
DirectoryInfo di = new DirectoryInfo(PEIPath);
DirectoryInfo[] dis = di.GetDirectories();
for (int d = 0; d < dis.Length; d++)
dis[d].Delete(true);
return true; return true;
} }
} }
@@ -1618,6 +1620,13 @@ namespace VEPROMS
public void ExportItem(XmlDocument xd, ItemInfo ii, string nodename) public void ExportItem(XmlDocument xd, ItemInfo ii, string nodename)
{ {
//B2026-016 - Fix error pulling Reference Object info into Export
if (ii.MyDocVersion.DocVersionAssociationCount == 0)
{
MessageBox.Show("Prior to Exporting Procedures you must set the Referenced Object Database", "No RO Database set", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
XmlElement xe = xd.CreateElement(nodename); XmlElement xe = xd.CreateElement(nodename);
if (ii.IsProcedure) if (ii.IsProcedure)
{ {
+236 -141
View File
@@ -30,10 +30,7 @@ namespace VEPROMS
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.tcSecurity = new System.Windows.Forms.TabControl(); this.tcSecurity = new System.Windows.Forms.TabControl();
this.tpGroupUsers = new System.Windows.Forms.TabPage(); this.tpManageFolders = new System.Windows.Forms.TabPage();
this.pnlMembers = new System.Windows.Forms.Panel();
this.lstMembers = new System.Windows.Forms.ListBox();
this.lblMembers = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label();
this.tvFolders = new System.Windows.Forms.TreeView(); this.tvFolders = new System.Windows.Forms.TreeView();
this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components); this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components);
@@ -41,10 +38,23 @@ namespace VEPROMS
this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.lstUsers = new System.Windows.Forms.ListBox(); this.tpManageGroups = new System.Windows.Forms.TabPage();
this.label5 = new System.Windows.Forms.Label(); this.btnAddMember = new System.Windows.Forms.Button();
this.btnRemoveMember = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.lbNonMembers = new System.Windows.Forms.Label();
this.btnDeleteGroup = new System.Windows.Forms.Button();
this.cbGroupSelection = new System.Windows.Forms.ComboBox();
this.lstNonMembers = new System.Windows.Forms.ListBox();
this.pnlMembers = new System.Windows.Forms.Panel();
this.lstMembers = new System.Windows.Forms.ListBox();
this.lblMembers = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.tpManageUsers = new System.Windows.Forms.TabPage();
this.lblUserGroups = new System.Windows.Forms.Label();
this.lstGroups = new System.Windows.Forms.ListBox(); this.lstGroups = new System.Windows.Forms.ListBox();
this.lstUsers = new System.Windows.Forms.ListBox();
this.lblUsers = new System.Windows.Forms.Label();
this.tpDefault = new System.Windows.Forms.TabPage(); this.tpDefault = new System.Windows.Forms.TabPage();
this.label8 = new System.Windows.Forms.Label(); this.label8 = new System.Windows.Forms.Label();
this.pnlGroups = new System.Windows.Forms.Panel(); this.pnlGroups = new System.Windows.Forms.Panel();
@@ -54,23 +64,22 @@ namespace VEPROMS
this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addMemberToolStripMenuItemUser = new System.Windows.Forms.ToolStripMenuItem(); this.tt = new System.Windows.Forms.ToolTip(this.components);
this.cmGroups = new System.Windows.Forms.ContextMenuStrip(this.components);
this.deleteGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addMemberToolStripMenuItemGroup = new System.Windows.Forms.ToolStripMenuItem();
this.tcSecurity.SuspendLayout(); this.tcSecurity.SuspendLayout();
this.tpGroupUsers.SuspendLayout(); this.tpManageFolders.SuspendLayout();
this.pnlMembers.SuspendLayout();
this.cmFolders.SuspendLayout(); this.cmFolders.SuspendLayout();
this.tpManageGroups.SuspendLayout();
this.pnlMembers.SuspendLayout();
this.tpManageUsers.SuspendLayout();
this.tpDefault.SuspendLayout(); this.tpDefault.SuspendLayout();
this.cmMembers.SuspendLayout();
this.cmUsers.SuspendLayout(); this.cmUsers.SuspendLayout();
this.cmGroups.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// tcSecurity // tcSecurity
// //
this.tcSecurity.Controls.Add(this.tpGroupUsers); this.tcSecurity.Controls.Add(this.tpManageFolders);
this.tcSecurity.Controls.Add(this.tpManageGroups);
this.tcSecurity.Controls.Add(this.tpManageUsers);
this.tcSecurity.Controls.Add(this.tpDefault); this.tcSecurity.Controls.Add(this.tpDefault);
this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill; this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcSecurity.Location = new System.Drawing.Point(0, 0); this.tcSecurity.Location = new System.Drawing.Point(0, 0);
@@ -78,69 +87,38 @@ namespace VEPROMS
this.tcSecurity.SelectedIndex = 0; this.tcSecurity.SelectedIndex = 0;
this.tcSecurity.Size = new System.Drawing.Size(784, 564); this.tcSecurity.Size = new System.Drawing.Size(784, 564);
this.tcSecurity.TabIndex = 0; this.tcSecurity.TabIndex = 0;
this.tcSecurity.SelectedIndexChanged += new System.EventHandler(this.changedTab);
// //
// tpGroupUsers // tpManageFolders
// //
this.tpGroupUsers.BackColor = System.Drawing.SystemColors.ButtonFace; this.tpManageFolders.BackColor = System.Drawing.SystemColors.ButtonFace;
this.tpGroupUsers.Controls.Add(this.pnlMembers); this.tpManageFolders.Controls.Add(this.label6);
this.tpGroupUsers.Controls.Add(this.label6); this.tpManageFolders.Controls.Add(this.tvFolders);
this.tpGroupUsers.Controls.Add(this.tvFolders); this.tpManageFolders.Location = new System.Drawing.Point(4, 22);
this.tpGroupUsers.Controls.Add(this.lstUsers); this.tpManageFolders.Name = "tpManageFolders";
this.tpGroupUsers.Controls.Add(this.label5); this.tpManageFolders.Padding = new System.Windows.Forms.Padding(3);
this.tpGroupUsers.Controls.Add(this.label3); this.tpManageFolders.Size = new System.Drawing.Size(776, 538);
this.tpGroupUsers.Controls.Add(this.lstGroups); this.tpManageFolders.TabIndex = 2;
this.tpGroupUsers.Location = new System.Drawing.Point(4, 22); this.tpManageFolders.Text = "Manage Folders / Add Groups";
this.tpGroupUsers.Name = "tpGroupUsers";
this.tpGroupUsers.Padding = new System.Windows.Forms.Padding(3);
this.tpGroupUsers.Size = new System.Drawing.Size(776, 538);
this.tpGroupUsers.TabIndex = 2;
this.tpGroupUsers.Text = "Folders, Groups and Users";
//
// pnlMembers
//
this.pnlMembers.Controls.Add(this.lstMembers);
this.pnlMembers.Controls.Add(this.lblMembers);
this.pnlMembers.Location = new System.Drawing.Point(384, 304);
this.pnlMembers.Name = "pnlMembers";
this.pnlMembers.Size = new System.Drawing.Size(386, 232);
this.pnlMembers.TabIndex = 12;
//
// lstMembers
//
this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstMembers.FormattingEnabled = true;
this.lstMembers.Location = new System.Drawing.Point(0, 19);
this.lstMembers.Name = "lstMembers";
this.lstMembers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstMembers.Size = new System.Drawing.Size(386, 212);
this.lstMembers.TabIndex = 10;
this.lstMembers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstMembers_MouseUp);
//
// lblMembers
//
this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top;
this.lblMembers.Location = new System.Drawing.Point(0, 0);
this.lblMembers.Name = "lblMembers";
this.lblMembers.Size = new System.Drawing.Size(386, 19);
this.lblMembers.TabIndex = 2;
this.lblMembers.Text = "Members";
// //
// label6 // label6
// //
this.label6.AutoSize = true; this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label6.Location = new System.Drawing.Point(8, 5); this.label6.Location = new System.Drawing.Point(8, 5);
this.label6.Name = "label6"; this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(41, 13); this.label6.Size = new System.Drawing.Size(55, 15);
this.label6.TabIndex = 7; this.label6.TabIndex = 7;
this.label6.Text = "Folders"; this.label6.Text = "Folders";
// //
// tvFolders // tvFolders
// //
this.tvFolders.ContextMenuStrip = this.cmFolders; this.tvFolders.ContextMenuStrip = this.cmFolders;
this.tvFolders.Dock = System.Windows.Forms.DockStyle.Bottom;
this.tvFolders.HideSelection = false; this.tvFolders.HideSelection = false;
this.tvFolders.Location = new System.Drawing.Point(8, 21); this.tvFolders.Location = new System.Drawing.Point(3, 32);
this.tvFolders.Name = "tvFolders"; this.tvFolders.Name = "tvFolders";
this.tvFolders.Size = new System.Drawing.Size(370, 511); this.tvFolders.Size = new System.Drawing.Size(770, 503);
this.tvFolders.TabIndex = 6; this.tvFolders.TabIndex = 6;
this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick); this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick);
// //
@@ -182,49 +160,189 @@ namespace VEPROMS
this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group"; this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group";
this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
// //
// lstUsers // tpManageGroups
// //
this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.tpManageGroups.Controls.Add(this.btnAddMember);
| System.Windows.Forms.AnchorStyles.Left))); this.tpManageGroups.Controls.Add(this.btnRemoveMember);
this.lstUsers.FormattingEnabled = true; this.tpManageGroups.Controls.Add(this.label1);
this.lstUsers.Location = new System.Drawing.Point(630, 21); this.tpManageGroups.Controls.Add(this.lbNonMembers);
this.lstUsers.Name = "lstUsers"; this.tpManageGroups.Controls.Add(this.btnDeleteGroup);
this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; this.tpManageGroups.Controls.Add(this.cbGroupSelection);
this.lstUsers.Size = new System.Drawing.Size(140, 277); this.tpManageGroups.Controls.Add(this.lstNonMembers);
this.lstUsers.TabIndex = 5; this.tpManageGroups.Controls.Add(this.pnlMembers);
this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp); this.tpManageGroups.Controls.Add(this.label3);
this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged); this.tpManageGroups.Location = new System.Drawing.Point(4, 22);
this.tpManageGroups.Name = "tpManageGroups";
this.tpManageGroups.Padding = new System.Windows.Forms.Padding(3);
this.tpManageGroups.Size = new System.Drawing.Size(776, 538);
this.tpManageGroups.TabIndex = 3;
this.tpManageGroups.Text = "Manage Groups";
this.tpManageGroups.UseVisualStyleBackColor = true;
// //
// label5 // btnAddMember
// //
this.label5.AutoSize = true; this.btnAddMember.Location = new System.Drawing.Point(337, 190);
this.label5.Location = new System.Drawing.Point(630, 6); this.btnAddMember.Name = "btnAddMember";
this.label5.Name = "label5"; this.btnAddMember.Size = new System.Drawing.Size(36, 29);
this.label5.Size = new System.Drawing.Size(34, 13); this.btnAddMember.TabIndex = 19;
this.label5.TabIndex = 4; this.btnAddMember.Text = "<<";
this.label5.Text = "Users"; this.tt.SetToolTip(this.btnAddMember, "Add User as Members of Group");
this.btnAddMember.UseVisualStyleBackColor = true;
this.btnAddMember.Click += new System.EventHandler(this.addMember_Click);
//
// btnRemoveMember
//
this.btnRemoveMember.Location = new System.Drawing.Point(337, 254);
this.btnRemoveMember.Name = "btnRemoveMember";
this.btnRemoveMember.Size = new System.Drawing.Size(36, 29);
this.btnRemoveMember.TabIndex = 18;
this.btnRemoveMember.Text = ">>";
this.tt.SetToolTip(this.btnRemoveMember, "Remove User From Group");
this.btnRemoveMember.UseVisualStyleBackColor = true;
this.btnRemoveMember.Click += new System.EventHandler(this.removeMember_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(386, 42);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(97, 15);
this.label1.TabIndex = 17;
this.label1.Text = "Non Members";
//
// lbNonMembers
//
this.lbNonMembers.AutoSize = true;
this.lbNonMembers.Location = new System.Drawing.Point(386, 42);
this.lbNonMembers.Name = "lbNonMembers";
this.lbNonMembers.Size = new System.Drawing.Size(73, 13);
this.lbNonMembers.TabIndex = 17;
this.lbNonMembers.Text = "Non Members";
//
// btnDeleteGroup
//
this.btnDeleteGroup.ForeColor = System.Drawing.Color.Red;
this.btnDeleteGroup.Location = new System.Drawing.Point(668, 12);
this.btnDeleteGroup.Name = "btnDeleteGroup";
this.btnDeleteGroup.Size = new System.Drawing.Size(89, 23);
this.btnDeleteGroup.TabIndex = 16;
this.btnDeleteGroup.Text = "Delete Group";
this.btnDeleteGroup.UseVisualStyleBackColor = true;
this.btnDeleteGroup.Click += new System.EventHandler(this.deleteGroup_Click);
//
// cbGroupSelection
//
this.cbGroupSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbGroupSelection.FormattingEnabled = true;
this.cbGroupSelection.Location = new System.Drawing.Point(50, 9);
this.cbGroupSelection.Name = "cbGroupSelection";
this.cbGroupSelection.Size = new System.Drawing.Size(272, 21);
this.cbGroupSelection.TabIndex = 15;
this.cbGroupSelection.SelectedIndexChanged += new System.EventHandler(this.cbGroupSelection_SelectedIndexChanged);
//
// lstNonMembers
//
this.lstNonMembers.FormattingEnabled = true;
this.lstNonMembers.Location = new System.Drawing.Point(389, 61);
this.lstNonMembers.Name = "lstNonMembers";
this.lstNonMembers.Size = new System.Drawing.Size(316, 472);
this.lstNonMembers.TabIndex = 14;
//
// pnlMembers
//
this.pnlMembers.Controls.Add(this.lstMembers);
this.pnlMembers.Controls.Add(this.lblMembers);
this.pnlMembers.Location = new System.Drawing.Point(6, 42);
this.pnlMembers.Name = "pnlMembers";
this.pnlMembers.Size = new System.Drawing.Size(316, 493);
this.pnlMembers.TabIndex = 13;
//
// lstMembers
//
this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstMembers.FormattingEnabled = true;
this.lstMembers.Location = new System.Drawing.Point(0, 19);
this.lstMembers.Name = "lstMembers";
this.lstMembers.Size = new System.Drawing.Size(316, 474);
this.lstMembers.TabIndex = 10;
//
// lblMembers
//
this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top;
this.lblMembers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblMembers.Location = new System.Drawing.Point(0, 0);
this.lblMembers.Name = "lblMembers";
this.lblMembers.Size = new System.Drawing.Size(316, 19);
this.lblMembers.TabIndex = 2;
this.lblMembers.Text = "Selected Group Users";
// //
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(381, 6); this.label3.Location = new System.Drawing.Point(3, 12);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 13); this.label3.Size = new System.Drawing.Size(39, 13);
this.label3.TabIndex = 1; this.label3.TabIndex = 3;
this.label3.Text = "Groups"; this.label3.Text = "Group:";
//
// tpManageUsers
//
this.tpManageUsers.Controls.Add(this.lblUserGroups);
this.tpManageUsers.Controls.Add(this.lstGroups);
this.tpManageUsers.Controls.Add(this.lstUsers);
this.tpManageUsers.Controls.Add(this.lblUsers);
this.tpManageUsers.Location = new System.Drawing.Point(4, 22);
this.tpManageUsers.Name = "tpManageUsers";
this.tpManageUsers.Size = new System.Drawing.Size(776, 538);
this.tpManageUsers.TabIndex = 4;
this.tpManageUsers.Text = "Manage Users";
this.tpManageUsers.UseVisualStyleBackColor = true;
//
// lblUserGroups
//
this.lblUserGroups.AutoSize = true;
this.lblUserGroups.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUserGroups.Location = new System.Drawing.Point(268, 11);
this.lblUserGroups.Name = "lblUserGroups";
this.lblUserGroups.Size = new System.Drawing.Size(225, 15);
this.lblUserGroups.TabIndex = 9;
this.lblUserGroups.Text = "Groups That User Is a Member Of:";
// //
// lstGroups // lstGroups
// //
this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left))); | System.Windows.Forms.AnchorStyles.Left)));
this.lstGroups.FormattingEnabled = true; this.lstGroups.FormattingEnabled = true;
this.lstGroups.Location = new System.Drawing.Point(384, 21); this.lstGroups.Location = new System.Drawing.Point(271, 36);
this.lstGroups.Name = "lstGroups"; this.lstGroups.Name = "lstGroups";
this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstGroups.Size = new System.Drawing.Size(240, 277); this.lstGroups.Size = new System.Drawing.Size(502, 498);
this.lstGroups.TabIndex = 0; this.lstGroups.TabIndex = 8;
this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp); this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp);
this.lstGroups.SelectedIndexChanged += new System.EventHandler(this.lstGroups_SelectedIndexChanged); //
// lstUsers
//
this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.lstUsers.FormattingEnabled = true;
this.lstUsers.Location = new System.Drawing.Point(8, 36);
this.lstUsers.Name = "lstUsers";
this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstUsers.Size = new System.Drawing.Size(217, 498);
this.lstUsers.TabIndex = 7;
this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged);
this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp);
//
// lblUsers
//
this.lblUsers.AutoSize = true;
this.lblUsers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUsers.Location = new System.Drawing.Point(8, 11);
this.lblUsers.Name = "lblUsers";
this.lblUsers.Size = new System.Drawing.Size(44, 15);
this.lblUsers.TabIndex = 6;
this.lblUsers.Text = "Users";
// //
// tpDefault // tpDefault
// //
@@ -256,10 +374,8 @@ namespace VEPROMS
// //
// cmMembers // cmMembers
// //
this.cmMembers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.removeMemberToolStripMenuItem});
this.cmMembers.Name = "cmGroupMembers"; this.cmMembers.Name = "cmGroupMembers";
this.cmMembers.Size = new System.Drawing.Size(166, 26); this.cmMembers.Size = new System.Drawing.Size(61, 4);
// //
// removeMemberToolStripMenuItem // removeMemberToolStripMenuItem
// //
@@ -273,61 +389,31 @@ namespace VEPROMS
this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addUserToolStripMenuItem, this.addUserToolStripMenuItem,
this.editUserToolStripMenuItem, this.editUserToolStripMenuItem,
this.deleteUserToolStripMenuItem, this.deleteUserToolStripMenuItem});
this.addMemberToolStripMenuItemUser});
this.cmUsers.Name = "cmUsers"; this.cmUsers.Name = "cmUsers";
this.cmUsers.Size = new System.Drawing.Size(153, 114); this.cmUsers.Size = new System.Drawing.Size(145, 92);
// //
// addUserToolStripMenuItem // addUserToolStripMenuItem
// //
this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem"; this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem";
this.addUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.addUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.addUserToolStripMenuItem.Text = "Add User"; this.addUserToolStripMenuItem.Text = "Add User";
this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click); this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click);
// //
// editUserToolStripMenuItem // editUserToolStripMenuItem
// //
this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem"; this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem";
this.editUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.editUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.editUserToolStripMenuItem.Text = "Edit User"; this.editUserToolStripMenuItem.Text = "Edit User";
this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click); this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click);
// //
// deleteUserToolStripMenuItem // deleteUserToolStripMenuItem
// //
this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem"; this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem";
this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.deleteUserToolStripMenuItem.Text = "Delete User"; this.deleteUserToolStripMenuItem.Text = "Delete User";
this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click); this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click);
// //
// addMemberToolStripMenuItemUser
//
this.addMemberToolStripMenuItemUser.Name = "addMemberToolStripMenuItemUser";
this.addMemberToolStripMenuItemUser.Size = new System.Drawing.Size(152, 22);
this.addMemberToolStripMenuItemUser.Text = "Add Member";
this.addMemberToolStripMenuItemUser.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click);
//
// cmGroups
//
this.cmGroups.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.deleteGroupToolStripMenuItem,
this.addMemberToolStripMenuItemGroup});
this.cmGroups.Name = "cmGroups";
this.cmGroups.Size = new System.Drawing.Size(145, 48);
//
// deleteGroupToolStripMenuItem
//
this.deleteGroupToolStripMenuItem.Name = "deleteGroupToolStripMenuItem";
this.deleteGroupToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.deleteGroupToolStripMenuItem.Text = "Delete Group";
this.deleteGroupToolStripMenuItem.Click += new System.EventHandler(this.deleteGroupToolStripMenuItem_Click);
//
// addMemberToolStripMenuItemGroup
//
this.addMemberToolStripMenuItemGroup.Name = "addMemberToolStripMenuItemGroup";
this.addMemberToolStripMenuItemGroup.Size = new System.Drawing.Size(144, 22);
this.addMemberToolStripMenuItemGroup.Text = "Add Member";
this.addMemberToolStripMenuItemGroup.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click);
//
// dlgManageSecurity // dlgManageSecurity
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -341,14 +427,16 @@ namespace VEPROMS
this.Text = "Manage Security"; this.Text = "Manage Security";
this.Load += new System.EventHandler(this.dlgManageSecurity_Load); this.Load += new System.EventHandler(this.dlgManageSecurity_Load);
this.tcSecurity.ResumeLayout(false); this.tcSecurity.ResumeLayout(false);
this.tpGroupUsers.ResumeLayout(false); this.tpManageFolders.ResumeLayout(false);
this.tpGroupUsers.PerformLayout(); this.tpManageFolders.PerformLayout();
this.pnlMembers.ResumeLayout(false);
this.cmFolders.ResumeLayout(false); this.cmFolders.ResumeLayout(false);
this.tpManageGroups.ResumeLayout(false);
this.tpManageGroups.PerformLayout();
this.pnlMembers.ResumeLayout(false);
this.tpManageUsers.ResumeLayout(false);
this.tpManageUsers.PerformLayout();
this.tpDefault.ResumeLayout(false); this.tpDefault.ResumeLayout(false);
this.cmMembers.ResumeLayout(false);
this.cmUsers.ResumeLayout(false); this.cmUsers.ResumeLayout(false);
this.cmGroups.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@@ -357,13 +445,7 @@ namespace VEPROMS
private System.Windows.Forms.TabControl tcSecurity; private System.Windows.Forms.TabControl tcSecurity;
private System.Windows.Forms.TabPage tpDefault; private System.Windows.Forms.TabPage tpDefault;
private System.Windows.Forms.TabPage tpGroupUsers; private System.Windows.Forms.TabPage tpManageFolders;
private System.Windows.Forms.ListBox lstGroups;
private System.Windows.Forms.Label lblMembers;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ContextMenuStrip cmGroups;
private System.Windows.Forms.ListBox lstUsers;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ContextMenuStrip cmUsers; private System.Windows.Forms.ContextMenuStrip cmUsers;
private System.Windows.Forms.ToolStripMenuItem addUserToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem addUserToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem editUserToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editUserToolStripMenuItem;
@@ -379,10 +461,23 @@ namespace VEPROMS
private System.Windows.Forms.ToolStripMenuItem createReviewerGroupToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem createReviewerGroupToolStripMenuItem;
private System.Windows.Forms.Panel pnlGroups; private System.Windows.Forms.Panel pnlGroups;
private System.Windows.Forms.Label label8; private System.Windows.Forms.Label label8;
private System.Windows.Forms.ToolStripMenuItem deleteGroupToolStripMenuItem; private System.Windows.Forms.TabPage tpManageGroups;
private System.Windows.Forms.TabPage tpManageUsers;
private System.Windows.Forms.Panel pnlMembers; private System.Windows.Forms.Panel pnlMembers;
private System.Windows.Forms.ListBox lstMembers; private System.Windows.Forms.ListBox lstMembers;
private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemUser; private System.Windows.Forms.Label lblMembers;
private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemGroup; private System.Windows.Forms.ListBox lstUsers;
private System.Windows.Forms.Label lblUsers;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox cbGroupSelection;
private System.Windows.Forms.ListBox lstNonMembers;
private System.Windows.Forms.Button btnDeleteGroup;
private System.Windows.Forms.Label lbNonMembers;
private System.Windows.Forms.ListBox lstGroups;
private System.Windows.Forms.Button btnAddMember;
private System.Windows.Forms.Button btnRemoveMember;
private System.Windows.Forms.ToolTip tt;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label lblUserGroups;
} }
} }
+475 -443
View File
@@ -7,30 +7,500 @@ using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using VEPROMS.CSLA.Library; using VEPROMS.CSLA.Library;
using Volian.Base.Library; using Volian.Base.Library;
using Volian.Controls.Library;
using System.Linq;
namespace VEPROMS namespace VEPROMS
{ {
//C2024-047 Redesign PROMS Security Dialog
public partial class dlgManageSecurity : Form public partial class dlgManageSecurity : Form
{ {
#region Log4Net #region Log4Net
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion #endregion
#region Main Form / Shared Code
private GroupInfoList myGroupInfoList; private GroupInfoList myGroupInfoList;
private UserInfoList myUserInfoList; private UserInfoList myUserInfoList;
private List<MembershipInfo> myMembershipInfoList; private List<MembershipInfo> myMembershipInfoList;
private Folder myFolder; private Folder myFolder;
public dlgManageSecurity() public dlgManageSecurity()
{ {
InitializeComponent(); InitializeComponent();
} }
private void dlgManageSecurity_Load(object sender, EventArgs e) private void dlgManageSecurity_Load(object sender, EventArgs e)
{ {
//load all folders
myFolder = Folder.Get(1); myFolder = Folder.Get(1);
SetupSecurity();
//Default to Users Tab
tcSecurity.SelectedIndex = 2;
}
//This is called when the Index Changes for main tab Control
//it loads info for the current tab
private void changedTab(object sender, EventArgs e)
{
LoadRefreshGroupUsers();
switch (tcSecurity.SelectedIndex)
{
//Manage Folders
case 0:
SetupFolderOptions();
break;
//Manage Groups
case 1:
SetupGroups();
break;
//Manage Users (note that this is the default)
case 2:
SetupUserOptions();
break;
//Default Options tab
case 3:
SetupDefaultGroupOptions();
break;
}
}
//Loads a refreshed list of Groups and Users
private void LoadRefreshGroupUsers()
{
GroupInfoList.Reset();
myGroupInfoList = GroupInfoList.Get();
UserInfoList.Reset();
myUserInfoList = UserInfoList.Get();
}
#endregion
#region Manage Folders
//Sets up Folders
private void SetupFolderOptions()
{
if (tvFolders.Nodes.Count == 0)
{
FolderInfo fi = FolderInfo.Get(1);
LoadChildFolders(fi, null);
}
}
//loads child folders in tree view
private void LoadChildFolders(FolderInfo fi, TreeNode tn)
{
if (tn == null)
{
tn = tvFolders.Nodes.Add(fi.Name);
tn.Tag = fi;
}
else
{
tn = tn.Nodes.Add(fi.Name);
tn.Tag = fi;
}
if (fi.ChildFolderCount > 0)
{
foreach (FolderInfo fic in fi.SortedChildFolders)
{
LoadChildFolders(fic, tn);
}
}
}
//Handles Creating a New Group
private void createGroupMenuItem(object sender, EventArgs e)
{
try
{
ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem;
TreeNode tn = tvFolders.SelectedNode;
FolderInfo fi = tn.Tag as FolderInfo;
AddNewGroup(tsddi.Text, fi);
}
catch (Exception ex)
{
_MyLog.Warn("createGroupMenuItem", ex);
}
}
private void AddNewGroup(string txt, FolderInfo fi)
{
txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim();
RoleInfoList ril = RoleInfoList.Get();
// B2022-080: cannot add a new group in Proms security. if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator,
// Writer, Reviewer, RO Editor, the Adding of new groups won't work. Databases should have this loaded by default.
// Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles)
if (ril == null || ril.Count < 2)
{
MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
foreach (var ri in ril.Where(ri => ri.Name == txt))
{
string gin = string.Format("{0}s - {1}", ri.Name, fi.Name);
if (!myGroupInfoList.Any(gi => gi.GroupName == gin))
{
Group group = Group.MakeGroup(gin, null, null);
Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null);
}
}
LoadRefreshGroupUsers();
// C2026-004 - messagebox when create group
MessageBox.Show($"{txt} group successfully created.", "Create group", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
tvFolders.SelectedNode = e.Node;
}
#endregion
#region Manage Groups
//Sets up Group Options
private void SetupGroups()
{
cbGroupSelection.Items.Clear();
foreach (GroupInfo gi in myGroupInfoList)
cbGroupSelection.Items.Add(gi.GroupName);
cbGroupSelection.SelectedIndex = 0;
}
private void cbGroupSelection_SelectedIndexChanged(object sender, EventArgs e) => updateMembershipLists();
//Updates the lists of members / nonMembers
private void updateMembershipLists()
{
myMembershipInfoList = new List<MembershipInfo>();
if (cbGroupSelection.SelectedIndex > -1)
{
GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex];
gi.RefreshGroupMemberships();
if (gi.GroupMembershipCount > 0)
myMembershipInfoList.AddRange(gi.GroupMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty).OrderBy(x => x.MyUserUserID));
}
lstMembers.DataSource = myMembershipInfoList;
lstMembers.ValueMember = "UID";
lstMembers.DisplayMember = "MyUserUserID";
//set NonMembers to Users that are not in Members
lstNonMembers.DataSource = myUserInfoList.Select(x => x.UserID).Except(myMembershipInfoList.Select(x => x.MyUser.UserID)).ToList();
}
//Add a Member to a Group
private void addMember_Click(object sender, EventArgs e)
{
// B2026-007 PROMS Security - don't error when add a user to a group but no group selected
if (lstNonMembers.SelectedValue != null)
{
int groupIndex = cbGroupSelection.SelectedIndex;
string selectedUserID = lstNonMembers.SelectedValue.ToString();
int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
GroupInfo gi = myGroupInfoList[groupIndex];
User selectedUser = User.Get(selectedUID);
Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
updateMembershipLists();
lstNonMembers.SelectedIndex = -1;
int index = lstMembers.FindString(selectedUserID);
lstMembers.SetSelected(index, true);
}
}
//Remove a Member From a Group
private void removeMember_Click(object sender, EventArgs e)
{
if (lstMembers.SelectedIndex > -1)
{
MembershipInfo mi = (MembershipInfo)lstMembers.SelectedItem;
string selectedUserID = mi.MyUserUserID;
string msg = "Are you sure you want to remove this Group Member?";
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
{
MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Membership m = Membership.Get(mi.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
updateMembershipLists();
lstMembers.SelectedIndex = -1;
lstNonMembers.SelectedItem = selectedUserID;
}
}
}
//Deletes the Currently Selected Group
private void deleteGroup_Click(object sender, EventArgs e)
{
if (cbGroupSelection.SelectedIndex < 0)
{
MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex];
if(myFolder.FolderConfig.Security_Group == gi.GID)
{
MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
bool deleteOK = true;
if (gi.GroupMembershipCount > 0 && gi.GroupMemberships.Any(mi => mi.EndDate == null || mi.EndDate == string.Empty))
deleteOK = false;
if (!deleteOK)
{
MessageBox.Show("There are still users who are members of this group. You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Group.Delete(gi.GID);
LoadRefreshGroupUsers();
SetupGroups(); SetupGroups();
} }
private void SetupGroups() }
#endregion
#region Manage Users
//Sets up UserOptions
private void SetupUserOptions()
{
lstUsers.Items.Clear();
foreach (UserInfo ui in myUserInfoList)
lstUsers.Items.Add(ui.UserID);
lstUsers.SelectedIndex = -1;
lstGroups.DataSource = null;
}
#region Manage Users - User Options
//Build Membership list based on selected user
private void lstUsers_SelectedIndexChanged(object sender, EventArgs e)
{
myMembershipInfoList = new List<MembershipInfo>();
if (lstUsers.SelectedIndex > -1)
{
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
if (ui.UserMembershipCount > 0)
{
myMembershipInfoList.AddRange(ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty));
}
}
lstGroups.DataSource = myMembershipInfoList;
lstGroups.ValueMember = "UGID";
lstGroups.DisplayMember = "MyGroupName";
}
//Select User and set up Mouse Click Menus based on
//where click in User Box
private void lstUsers_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
int k = lstUsers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstUsers.SelectedIndex = k;
editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true;
}
else
{
addUserToolStripMenuItem.Visible = true;
editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = false;
}
cmUsers.Show(lstUsers, e.Location);
}
else if (e.Button == MouseButtons.Left)
{
int k = lstUsers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstUsers.SelectedIndex = k;
}
}
}
//Adds a new User
private void addUserToolStripMenuItem_Click(object sender, EventArgs e)
{
User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, "");
frmManageUser frm = new frmManageUser("add");
frm.MyUser = u;
frm.Text = "Enter New UserID"; //C2026-002 Change Title bar on Add/Edit User
if (frm.ShowDialog(this) == DialogResult.OK)
{
u = frm.MyUser;
u.Save();
Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", "");
//Update the User list to reflect the added user
LoadRefreshGroupUsers();
SetupUserOptions();
lstUsers.SelectedItem = u.UserID;
}
else
{
u.Delete();
}
}
//Edit a User's details
private void editUserToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lstUsers.SelectedIndex == -1)
{
MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
using (User u = User.Get(ui.UID))
{
frmManageUser frm = new frmManageUser("edit");
frm.MyUser = u;
if (frm.ShowDialog(this) == DialogResult.OK)
{
frm.MyUser.Save();
//Update the User list to reflect the edited user
//this is done in case the UserID is updated so the list updates to reflect that
LoadRefreshGroupUsers();
SetupUserOptions();
lstUsers.SelectedItem = u.UserID;
}
}
}
//Delete a User
private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lstUsers.SelectedIndex == -1)
{
MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
SessionInfoList sil = SessionInfoList.Get();
foreach (SessionInfo si in sil)
{
if (si.UserID == ui.UserID && (si.DTSEnd == null))
{
MessageBox.Show("The user selected has an active session. You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
int nummemberships = ui.UserMemberships.Count(mi => mi.EndDate == null || mi.EndDate == string.Empty);
string mem_text = nummemberships > 0 ? "\r\nNote that this will remove all memberships that this user has." : "";
if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
foreach (MembershipInfo minfo in ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty))
{
Membership m = Membership.Get(minfo.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
}
User.Delete(ui.UID);
//Update the User list to reflect the deleted user
LoadRefreshGroupUsers();
SetupUserOptions();
lstUsers.SelectedIndex = -1;
lstGroups.DataSource = null;
}
}
#endregion
#region Manage Users - Member Options
//Adds Context Menu for when a Group is selected
private void lstGroups_MouseUp(object sender, MouseEventArgs e)
{
cmMembers.Items.Clear();
lstGroups.SelectedIndex = -1;
//shouldnt be bringing up a menu in the Group box unless a user is 1st selected in the Users box.
if (e.Button == MouseButtons.Right && lstUsers.SelectedIndex > -1)
{
int k = lstGroups.IndexFromPoint(e.Location);
if (k >= 0)
{
lstGroups.SelectedIndex = k;
cmMembers.Items.Add(this.removeMemberToolStripMenuItem);
}
var groupsCanAddTo = myGroupInfoList.Select(x => new { x.GroupName, x.GID }).Except(myMembershipInfoList.Select(x => new { x.MyGroup.GroupName, x.GID }));
foreach (var possiblegroup in groupsCanAddTo)
{
ToolStripMenuItemwithValue AddToMenuItem = new ToolStripMenuItemwithValue($"Add as Member to Group: {possiblegroup.GroupName}", possiblegroup.GID);
AddToMenuItem.Click += addMemberToolStripMenuItem_Click;
cmMembers.Items.Add(AddToMenuItem);
}
cmMembers.Show(lstGroups, e.Location);
}
else if (e.Button == MouseButtons.Left)
{
int k = lstGroups.IndexFromPoint(e.Location);
if (k >= 0)
{
lstGroups.SelectedIndex = k;
}
}
}
//Adds a User to a Group
private void addMemberToolStripMenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItemwithValue item = (ToolStripMenuItemwithValue)sender;
int userIndex = lstUsers.SelectedIndex;
UserInfo ui = myUserInfoList[userIndex];
Membership.MakeMembership(User.Get(ui.UID), Group.Get((int) item.Value), null, "");
//Update the Group list to reflect the added group
LoadRefreshGroupUsers();
lstUsers_SelectedIndexChanged(sender, e);
}
//Removes a User from a Group
private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e)
{
MembershipInfo mi = (MembershipInfo)lstGroups.SelectedItem;
string msg = "Are you sure you want to remove this Group Member?";
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
{
MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Membership m = Membership.Get(mi.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
//Update the Group list to reflect the removed group
LoadRefreshGroupUsers();
lstUsers_SelectedIndexChanged(sender, e);
}
}
#endregion
#endregion
#region Default Options
//Sets up Default Group options for Default Tab
private void SetupDefaultGroupOptions()
{ {
pnlGroups.Controls.Clear(); pnlGroups.Controls.Clear();
foreach (GroupInfo gi in myGroupInfoList) foreach (GroupInfo gi in myGroupInfoList)
@@ -56,6 +526,7 @@ namespace VEPROMS
} }
} }
} }
//Handles changing the default group
private void rb_CheckedChanged(object sender, EventArgs e) private void rb_CheckedChanged(object sender, EventArgs e)
{ {
RadioButton rb = sender as RadioButton; RadioButton rb = sender as RadioButton;
@@ -64,446 +535,7 @@ namespace VEPROMS
myFolder.FolderConfig.Security_Group = gi.GID; myFolder.FolderConfig.Security_Group = gi.GID;
myFolder.Save(); myFolder.Save();
} }
private void SetupSecurity() #endregion
{
if (tvFolders.Nodes.Count == 0)
{
FolderInfo fi = FolderInfo.Get(1);
LoadChildFolders(fi, null);
}
lstMembers.Items.Clear();
lstUsers.Items.Clear();
lstGroups.Items.Clear();
GroupInfoList.Reset();
UserInfoList.Reset();
myGroupInfoList = GroupInfoList.Get();
myUserInfoList = UserInfoList.Get();
foreach (GroupInfo gi in myGroupInfoList)
lstGroups.Items.Add(gi.GroupName);
lstGroups.SelectedIndex = 0;
foreach (UserInfo ui in myUserInfoList)
lstUsers.Items.Add(ui.UserID);
lstGroups.SelectedIndex = -1;
lstUsers.SelectedIndex = -1;
}
private void LoadChildFolders(FolderInfo fi, TreeNode tn)
{
if (tn == null)
{
tn = tvFolders.Nodes.Add(fi.Name);
tn.Tag = fi;
}
else
{
tn = tn.Nodes.Add(fi.Name);
tn.Tag = fi;
}
if (fi.ChildFolderCount > 0)
{
foreach (FolderInfo fic in fi.SortedChildFolders)
{
LoadChildFolders(fic, tn);
}
}
}
private void lstGroups_SelectedIndexChanged(object sender, EventArgs e)
{
lblMembers.Text = "Selected Group Users";
myMembershipInfoList = new List<MembershipInfo>();
lstMembers.Items.Clear();
if (lstGroups.SelectedIndex > -1)
{
GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex];
if (gi.GroupMembershipCount > 0)
foreach (MembershipInfo mi in gi.GroupMemberships)
{
if (mi.EndDate == null || mi.EndDate == string.Empty)
{
myMembershipInfoList.Add(mi);
lstMembers.Items.Add(mi.MyUser.UserID);
}
}
}
}
private void addMemberToolStripMenuItem_Click(object sender, EventArgs e)
{
int groupIndex = lstGroups.SelectedIndex;
int userIndex = lstUsers.SelectedIndex;
GroupInfo gi = myGroupInfoList[groupIndex];
UserInfo ui = myUserInfoList[userIndex];
Membership.MakeMembership(User.Get(ui.UID), Group.Get(gi.GID), null, "");
SetupSecurity();
if ((sender as ToolStripMenuItem).Name.EndsWith("Group"))
{
lstUsers.SelectedIndex = userIndex;
lstGroups.SelectedIndex = groupIndex;
}
else
{
lstGroups.SelectedIndex = groupIndex;
lstUsers.SelectedIndex = userIndex;
}
}
private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e)
{
MembershipInfo mi = myMembershipInfoList[lstMembers.SelectedIndex];
string msg = "Are you sure you want to remove this Group Member?";
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
int groupIndex = lstGroups.SelectedIndex;
int userIndex = lstUsers.SelectedIndex;
if (mi.MyGroup.GroupName == "Administrators")
{
int k = 0;
foreach(MembershipInfo mm in mi.MyGroup.GroupMemberships)
if(mm.EndDate == null || mm.EndDate == string.Empty)
k++;
if (k == 1)
{
MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
Membership m = Membership.Get(mi.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
SetupSecurity();
lstGroups.SelectedIndex = groupIndex;
lstUsers.SelectedIndex = userIndex;
}
// foreach (int gg in lstGroups.SelectedIndices)
// {
// GroupInfo gi = myGroupInfoList[gg];
// if (gi.GroupName == "Administrators" && gi.GroupMembershipCount == 1)
// {
// MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "Can Not Delete User", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// return;
// }
// foreach (MembershipInfo mi in gi.GroupMemberships)
// {
// foreach (int mm in lstGroupUsers.SelectedIndices)
// {
// MembershipInfo mig = myMembershipInfoList[mm];
// if (mi.MyUser.UID == mig.MyUser.UID)
// {
// Membership m = Membership.Get(mi.UGID);
// m.EndDate = DateTime.Now.ToShortDateString();
// m.Save();
// }
// }
// }
// }
// SetupSecurity();
//}
}
private void addUserToolStripMenuItem_Click(object sender, EventArgs e)
{
User u = User.MakeUser("[Enter New UserID]","", "", "", "", "", "", "", "", "", "",DateTime.Now,"");
frmManageUser frm = new frmManageUser("add");
frm.MyUser = u;
if (frm.ShowDialog(this) == DialogResult.OK)
{
u = frm.MyUser;
u.Save();
Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", "");
SetupSecurity();
}
else
{
u.Delete();
}
}
private void editUserToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lstUsers.SelectedIndex == -1)
{
MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
using (User u = User.Get(ui.UID))
{
frmManageUser frm = new frmManageUser("edit");
frm.MyUser = u;
if (frm.ShowDialog(this) == DialogResult.OK)
{
frm.MyUser.Save();
SetupSecurity();
}
}
}
private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lstUsers.SelectedIndex == -1)
{
MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
SessionInfoList sil = SessionInfoList.Get();
foreach (SessionInfo si in sil)
{
if (si.UserID == ui.UserID && (si.DTSEnd == null))
{
MessageBox.Show("The user selected has an active session. You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
int k = 0;
if (ui.UserMembershipCount > 0)
{
foreach (MembershipInfo mi in ui.UserMemberships)
{
if (mi.EndDate == null || mi.EndDate == string.Empty)
k++;
}
}
if (k > 0)
{
MessageBox.Show("You must remove user from all groups that user is a member of in order to delete user", "User Has Memberships", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show("Are you sure you want to delete this user?", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
User.Delete(ui.UID);
SetupSecurity();
}
//to do delete user
//end date user memberships
//delete user
}
private void createGroupMenuItem(object sender, EventArgs e)
{
try
{
ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem;
TreeNode tn = tvFolders.SelectedNode;
FolderInfo fi = tn.Tag as FolderInfo;
AddNewGroup(tsddi.Text, fi);
SetupSecurity();
}
catch (Exception ex)
{
_MyLog.Warn("createGroupMenuItem", ex);
}
}
private void AddNewGroup(string txt, FolderInfo fi)
{
txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim();
RoleInfoList ril = RoleInfoList.Get();
// B2022-080: cannot add a new group in Proms security. if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator,
// Writer, Reviewer, RO Editor, the Adding of new groups won't work. Databases should have this loaded by default.
// Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles)
if (ril == null || ril.Count < 2)
{
MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
foreach(RoleInfo ri in ril)
{
if (ri.Name == txt)
{
string gin = string.Format("{0}s - {1}", ri.Name, fi.Name);
bool addOK = true;
foreach (GroupInfo gi in myGroupInfoList)
{
if (gin == gi.GroupName)
{
addOK = false;
break;
}
}
if (addOK)
{
Group group = Group.MakeGroup(gin, null, null);
Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null);
}
}
}
GroupInfoList.Reset();
myGroupInfoList = GroupInfoList.Get();
SetupGroups();
}
private void lstUsers_SelectedIndexChanged(object sender, EventArgs e)
{
lblMembers.Text = "Selected User Groups";
myMembershipInfoList = new List<MembershipInfo>();
lstMembers.Items.Clear();
if (lstUsers.SelectedIndex > -1)
{
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
if (ui.UserMembershipCount > 0)
{
foreach (MembershipInfo mi in ui.UserMemberships)
{
if (mi.EndDate == null || mi.EndDate == string.Empty)
{
myMembershipInfoList.Add(mi);
lstMembers.Items.Add(mi.MyGroup.GroupName);
}
}
}
}
}
private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
tvFolders.SelectedNode = e.Node;
}
private void deleteGroupToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lstGroups.SelectedIndex < 0)
{
MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex];
if(myFolder.FolderConfig.Security_Group == gi.GID)
{
MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
bool deleteOK = true;
if(gi.GroupMembershipCount > 0)
{
foreach (MembershipInfo mi in gi.GroupMemberships)
{
if (mi.EndDate == null || mi.EndDate == string.Empty)
{
deleteOK = false;
break;
}
}
}
if (!deleteOK)
{
MessageBox.Show("There are still users who are members of this group. You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
Group.Delete(gi.GID);
GroupInfoList.Reset();
myGroupInfoList = GroupInfoList.Get();
SetupGroups();
SetupSecurity();
}
}
private void lstGroups_MouseUp(object sender, MouseEventArgs e)
{
lstGroups.SelectedIndex = -1;
if (e.Button == MouseButtons.Right)
{
int k = lstGroups.IndexFromPoint(e.Location);
if (k >= 0)
{
lstGroups.SelectedIndex = k;
if (lstUsers.SelectedIndex >= 0)
{
GroupInfo gi = myGroupInfoList[k];
if (gi.GroupMembershipCount > 0)
{
addMemberToolStripMenuItemGroup.Visible = true;
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
foreach (MembershipInfo mi in gi.GroupMemberships)
{
if (mi.MyUser.UserID == ui.UserID && (mi.EndDate == null || mi.EndDate == string.Empty))
{
addMemberToolStripMenuItemGroup.Visible = false;
break;
}
}
}
}
else
addMemberToolStripMenuItemGroup.Visible = false;
cmGroups.Show(lstGroups, e.Location);
}
}
else if (e.Button == MouseButtons.Left)
{
int k = lstGroups.IndexFromPoint(e.Location);
if (k >= 0)
{
lstGroups.SelectedIndex = k;
}
}
}
private void lstUsers_MouseUp(object sender, MouseEventArgs e)
{
lstUsers.SelectedIndex = -1;
if (e.Button == MouseButtons.Right)
{
int k = lstUsers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstUsers.SelectedIndex = k;
//addUserToolStripMenuItem.Visible = false;
editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true;
if (lstGroups.SelectedIndex >= 0)
{
UserInfo ui = myUserInfoList[k];
if(ui.UserMembershipCount > 0)
{
addMemberToolStripMenuItemUser.Visible = true;
GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex];
foreach(MembershipInfo mi in ui.UserMemberships)
{
if (mi.MyGroup.GroupName == gi.GroupName && (mi.EndDate == null || mi.EndDate == string.Empty))
{
addMemberToolStripMenuItemUser.Visible = false;
break;
}
}
}
}
else
addMemberToolStripMenuItemUser.Visible = false;
cmUsers.Show(lstUsers, e.Location);
}
else
{
addUserToolStripMenuItem.Visible = true;
editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = addMemberToolStripMenuItemUser.Visible = false;
cmUsers.Show(lstUsers, e.Location);
}
}
else if (e.Button == MouseButtons.Left)
{
int k = lstUsers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstUsers.SelectedIndex = k;
}
}
}
private void lstMembers_MouseUp(object sender, MouseEventArgs e)
{
lstMembers.SelectedIndex = -1;
if (e.Button == MouseButtons.Right)
{
int k = lstMembers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstMembers.SelectedIndex = k;
addMemberToolStripMenuItemUser.Visible = false;
removeMemberToolStripMenuItem.Visible = true;
cmMembers.Show(lstMembers, e.Location);
}
else
{
addMemberToolStripMenuItemUser.Visible = true;
removeMemberToolStripMenuItem.Visible = false;
cmMembers.Show(lstMembers, e.Location);
}
}
else if (e.Button == MouseButtons.Left)
{
int k = lstMembers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstMembers.SelectedIndex = k;
}
}
}
} }
} }
@@ -112,21 +112,27 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="cmFolders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="cmFolders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>234, 17</value>
</metadata>
<metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>341, 17</value> <value>341, 17</value>
</metadata> </metadata>
<metadata name="cmMembers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="cmMembers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<metadata name="cmUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="cmUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>243, 17</value>
</metadata>
<metadata name="cmGroups.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>136, 17</value> <value>136, 17</value>
</metadata> </metadata>
<metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>341, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>58</value>
</metadata>
</root> </root>
@@ -34,6 +34,7 @@
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
this.dateTimeInput1 = new DevComponents.Editors.DateTimeAdv.DateTimeInput(); this.dateTimeInput1 = new DevComponents.Editors.DateTimeAdv.DateTimeInput();
this.btnNow = new DevComponents.DotNetBar.ButtonX(); this.btnNow = new DevComponents.DotNetBar.ButtonX();
this.btnResetToApproved = new DevComponents.DotNetBar.ButtonX();
((System.ComponentModel.ISupportInitialize)(this.dateTimeInput1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dateTimeInput1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
@@ -142,11 +143,26 @@
this.btnNow.Text = "Today"; this.btnNow.Text = "Today";
this.btnNow.Click += new System.EventHandler(this.btnNow_Click); this.btnNow.Click += new System.EventHandler(this.btnNow_Click);
// //
// btnResetToApproved
//
this.btnResetToApproved.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnResetToApproved.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnResetToApproved.Location = new System.Drawing.Point(30, 77);
this.btnResetToApproved.Name = "btnResetToApproved";
this.btnResetToApproved.Size = new System.Drawing.Size(201, 23);
this.btnResetToApproved.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnResetToApproved.TabIndex = 6;
this.btnResetToApproved.Text = "Reset Change Bar To Approved Date";
this.btnResetToApproved.Tooltip = "Reset Change Bar to the last approved date. If no approvals, reset to as if no ch" +
"ange bar date. After selecting this, press OK to save.";
this.btnResetToApproved.Click += new System.EventHandler(this.btnResetToApproved_Click);
//
// dlgSetChangeBarStartDate // dlgSetChangeBarStartDate
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(268, 144); this.ClientSize = new System.Drawing.Size(268, 144);
this.Controls.Add(this.btnResetToApproved);
this.Controls.Add(this.btnNow); this.Controls.Add(this.btnNow);
this.Controls.Add(this.dateTimeInput1); this.Controls.Add(this.dateTimeInput1);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
@@ -175,5 +191,6 @@
private DevComponents.DotNetBar.SuperTooltip superTooltip1; private DevComponents.DotNetBar.SuperTooltip superTooltip1;
private DevComponents.Editors.DateTimeAdv.DateTimeInput dateTimeInput1; private DevComponents.Editors.DateTimeAdv.DateTimeInput dateTimeInput1;
private DevComponents.DotNetBar.ButtonX btnNow; private DevComponents.DotNetBar.ButtonX btnNow;
private DevComponents.DotNetBar.ButtonX btnResetToApproved;
} }
} }
@@ -1,31 +1,25 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data; using System.Data;
using System.Drawing;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Controls;
using VEPROMS.CSLA.Library; using VEPROMS.CSLA.Library;
using Volian.Base.Library;
using Volian.Controls.Library;
namespace VEPROMS namespace VEPROMS
{ {
public partial class dlgSetChangeBarStartDate : DevComponents.DotNetBar.Office2007Form public partial class dlgSetChangeBarStartDate : DevComponents.DotNetBar.Office2007Form
{ {
private ProcedureConfig _MyProcConfig = null; public ProcedureConfig MyProcConfig { get; set; } = null;
public ProcedureConfig MyProcConfig public ProcedureInfo MyProcInfo { get; set; } = null;
{
get { return _MyProcConfig; }
set { _MyProcConfig = value; }
}
public dlgSetChangeBarStartDate(ProcedureConfig pc) public dlgSetChangeBarStartDate(ProcedureConfig pc, ProcedureInfo pi)
{ {
InitializeComponent(); InitializeComponent();
_MyProcConfig = pc; MyProcConfig = pc;
MyProcInfo = pi;
} }
private void dlgSetChangeBarStartDate_Load(object sender, EventArgs e) private void dlgSetChangeBarStartDate_Load(object sender, EventArgs e)
@@ -72,6 +66,10 @@ namespace VEPROMS
private void btnOK_Click(object sender, EventArgs e) private void btnOK_Click(object sender, EventArgs e)
{ {
MyProcConfig.Print_ChangeBarDate = dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss");// ("MM/dd/yyyy HH:mm:ss"); MyProcConfig.Print_ChangeBarDate = dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss");// ("MM/dd/yyyy HH:mm:ss");
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Set ChangeBars set to ({ dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss")}) by ({ VlnSettings.UserID}) on ({DateTime.Now})", DateTime.Now, VlnSettings.UserID, 0);
} }
@@ -80,5 +78,80 @@ namespace VEPROMS
dateTimeInput1.Value = DateTime.Now; dateTimeInput1.Value = DateTime.Now;
} }
//C2026-009 Add Option to Reset Change Bar to Last Approved Date/Time
private void btnResetToApproved_Click(object sender, EventArgs e)
{
System.Data.DataTable dt = RevisionData.GetRevisionDataByUnit(MyProcInfo.ItemID);
if (dt.Rows.Count == 0)
{
//no records, remove
if (MessageBox.Show("There are currently no approvals set. Selecting yes will set ChangeBars to show all changes since the creation of the procedure.\r\nAre you sure you wish to reset ChangeBars?", "Reset ChangeBar Date", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
MyProcConfig.Print_ChangeBarDate = "";
DialogResult = DialogResult.OK;
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show all changes.", DateTime.Now, VlnSettings.UserID, 0);
Close();
}
}
else if (RevisionData.HasUnits(dt))
{
//any with units
string maxDTS = RevisionData.MaxDTS(dt).ToString("MM/dd/yyyy HH:mm:ss");
//create wording for ChangeBar changes
StringBuilder sb = new StringBuilder();
sb.Append($" The Procedure Viewer Change Bar Date will be set to ({maxDTS}).");
foreach (DataRow r in dt.Rows)
{
sb.Append($"\r\n The Change Bar Date for Unit ({r["UnitName"]}) will be set to ({Convert.ToDateTime(r["DTS"]):MM/dd/yyyy HH:mm:ss}).");
}
sb.Append("\r\n Any Change Bars for Units not listed above will use the Overall/Procedure Viewer Change Bar Date (as these Units have no approvals).");
if (CustomMessageBox.Show($"This will reset ChangeBars to show for changes newer than the last approval.\r\nThis includes the following changes:\r\n{sb.ToString()}\r\n\r\nAre you sure you wish to reset ChangeBars?", "Reset ChangeBar Date", "Yes", "No") == DialogResult.Yes)
{
//Change the overall ChangeBarDate
MyProcConfig.Print_ChangeBarDate = maxDTS;
//Change the ChangeBarDate for each unit
foreach (DataRow r in dt.Rows)
{
MyProcConfig.SelectedSlave = Convert.ToInt32(r["UnitID"]);
MyProcConfig.Print_ChangeBarDate = Convert.ToDateTime(r["DTS"]).ToString("MM / dd / yyyy HH: mm: ss");
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({Convert.ToDateTime(r["DTS"]):MM/dd/yyyy HH:mm:ss}) for (Unit {r["UnitName"]})", DateTime.Now, VlnSettings.UserID, MyProcConfig.SelectedSlave);
}
MyProcConfig.SelectedSlave = 0;
DialogResult = DialogResult.OK;
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({maxDTS})", DateTime.Now, VlnSettings.UserID, 0);
Close();
}
}
else
{
//no units
string maxDTS = RevisionData.MaxDTS(dt).ToString("MM/dd/yyyy HH:mm:ss");
if (MessageBox.Show($"This will reset ChangeBars to show for changes newer than the last approval ({maxDTS}).\r\nAre you sure you wish to reset ChangeBars?", "Reset ChangeBar Date", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
MyProcConfig.Print_ChangeBarDate = maxDTS;
DialogResult = DialogResult.OK;
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({maxDTS})", DateTime.Now, VlnSettings.UserID, 0);
Close();
}
}
}
} }
} }
File diff suppressed because it is too large Load Diff
+201 -3
View File
@@ -62,6 +62,8 @@ namespace VEPROMS
swRmObsoleteROData.Enabled = false; swRmObsoleteROData.Enabled = false;
swRmOrphanDataRecs.Enabled = false; swRmOrphanDataRecs.Enabled = false;
swRefreshWordAttmts.Enabled = false; swRefreshWordAttmts.Enabled = false;
swRegenWordAttmts.Enabled = false;
swRefreshTblsForSrch.Enabled = false;
swStandardHypenChars.Enabled = false; swStandardHypenChars.Enabled = false;
//if not full admin, disable Purge Change History //if not full admin, disable Purge Change History
@@ -149,6 +151,27 @@ namespace VEPROMS
return false; return false;
} }
//C2026-002 Enhancements to new admin Tool for ROs not used.
private void ResetmyTV_RO_DBs()
{
this.Cursor = Cursors.WaitCursor;
myTV_RO_DBs.Nodes.Clear();
TreeNode tn = myTV_RO_DBs.Nodes.Add("Select All");
tn.Tag = 0;
tn.Checked = true;
foreach (DataRow rw in GeneralReports.GetRODBs().Rows)
{
TreeNode tn_db = tn.Nodes.Add(rw["dbiTitle"].ToString());
tn_db.Tag = rw["dbiID"].ToString();
tn_db.Checked = true;
}
tn.Expand();
this.Cursor = Cursors.Default;
}
private void ResetTV(bool noProcs) private void ResetTV(bool noProcs)
{ {
btnFixLinks.Enabled = false; btnFixLinks.Enabled = false;
@@ -627,6 +650,106 @@ namespace VEPROMS
this.Cursor = Cursors.Default; this.Cursor = Cursors.Default;
} }
private int RegenCounter = 0;
private int RegenTotal = 0;
private const int TicksToupdate = 300000; //5 minutes(300 seconds).
// C2026-007 - Generate Missing PDFs
// regenerates the saved attachment PDFs from the database
// so that this is not needed the next time the procedures are printed. This also forces ROs to be refreshed in the attachments
private void RegenPDFs()
{
this.Cursor = Cursors.WaitCursor;
DateTime pStart = DateTime.Now;
txtProcess.AppendText("Generating missing Word Attachments");
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText("Gathering data for Word Attachments that need generated.");
txtProcess.AppendText(Environment.NewLine);
Application.DoEvents();
//get data of missing Docs by Unit that will need regenerated
DataTable dt = Maintenance.GetMissingDocsByUnit();
RegenCounter = 0;
RegenTotal = dt.Rows.Count;
txtProcess.AppendText($"Word Attachments to be generated: {RegenTotal}");
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText($"Note that this will provide updates approximately every {TicksToupdate/60000} minutes. Some attachments may take longer than others due to size/number of pages/number of ROs. If PROMS is in the middle of generating a large attachment, it may delay the update message until generation of that attachment completes (in that case taking more than 5 minutes between updates).");
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText(Environment.NewLine);
txtResults.AppendText($"{RegenTotal} Word Attachments to be generated.");
txtResults.AppendText(Environment.NewLine);
txtResults.AppendText(Environment.NewLine);
//generate as if not debug
int debugstatus = MSWordToPDF.DebugStatus;
MSWordToPDF.DebugStatus = 0;
MSWordToPDF.OverrideColor = Color.Transparent;
Timer timer1 = new Timer();
timer1.Tick += new EventHandler(UpdateRegenProgress);
timer1.Interval = TicksToupdate;
timer1.Start();
foreach (DataRow dr in dt.Rows)
{
//Do Generation
using (Section sect = Section.Get((int)dr["SectionID"]))
{
using (DocumentInfo docInfo = DocumentInfo.Get((int)dr["DocID"]))
{
if (!dr.IsNull("UnitID")) sect.MyItemInfo.MyDocVersion.DocVersionConfig.SelectedSlave = (int)dr["UnitID"];
MSWordToPDF.SetDocPdf(docInfo, sect.MyItemInfo);
}
}
//Increment - message every _ minutes
RegenCounter++;
}
//done with loop - stop timer and destroy it
timer1.Stop();
timer1.Dispose();
//Change DebugStatus Back to what it was
if (debugstatus == 1)
{
MSWordToPDF.DebugStatus = 1;
MSWordToPDF.OverrideColor = Color.Red;
}
else
{
MSWordToPDF.DebugStatus = 0;
MSWordToPDF.OverrideColor = Color.Transparent;
}
//end messaging
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText($"Word Attachments Generated: {RegenTotal}");
txtProcess.AppendText(Environment.NewLine);
txtResults.AppendText(Environment.NewLine);
txtResults.AppendText($"{RegenTotal} Word Attachments generated.");
txtResults.AppendText(Environment.NewLine);
txtResults.AppendText(Environment.NewLine);
txtProcess.AppendText($"Completed: {DateTime.Now:G}");
txtProcess.AppendText(Environment.NewLine);
txtProcess.AppendText(Environment.NewLine);
Application.DoEvents();
this.Cursor = Cursors.Default;
}
//Outputs the Progress of Regenerating the PDFs every __ minutes
private void UpdateRegenProgress(Object myObject, EventArgs myEventArgs)
{
string progress_str = $"Generated {RegenCounter} of {RegenTotal} ({(decimal)RegenCounter / RegenTotal * 100M:F2}%): {DateTime.Now:G}";
txtProcess.AppendText(progress_str);
txtProcess.AppendText(Environment.NewLine);
txtResults.AppendText(progress_str);
txtResults.AppendText(Environment.NewLine);
}
// B2022-047 - refresh the Content/Text field for table, i.e. Grid, Data so that search will find text in the Grid // B2022-047 - refresh the Content/Text field for table, i.e. Grid, Data so that search will find text in the Grid
// NOTE that an out of memeory error occurs when having to process alot of tables. A config flag is used on the // NOTE that an out of memeory error occurs when having to process alot of tables. A config flag is used on the
// grid record to flag that this operation has been run. And a message is placed in the result window stating to // grid record to flag that this operation has been run. And a message is placed in the result window stating to
@@ -1071,6 +1194,24 @@ namespace VEPROMS
} }
private void myTV_AfterCheck(object sender, TreeViewEventArgs e) private void myTV_AfterCheck(object sender, TreeViewEventArgs e)
{
//B2025 - 013 Admin Tool Tree Behavior
//only want to perform this if
// not an unknown action
// aka is a mouse click
// if this is fire-ing because clicked a parent or a child of an item
// want this to only fire once - for the item clicked - not for parents/children
if (e.Action != TreeViewAction.Unknown)
{
TreeView_AfterCheck(sender, e);
btnFixLinks.Enabled = btnDeleteItems.Enabled = AtLeastOneNodeChecked(((TreeView)sender).Nodes); // C2017-030 support for Refresh Transitions/Update RO Values
}
}
//C2026-002 Enhancements to new admin Tool for ROs not used.
private void TreeView_AfterCheck(object sender, TreeViewEventArgs e)
{ {
//B2025 - 013 Admin Tool Tree Behavior //B2025 - 013 Admin Tool Tree Behavior
//only want to perform this if //only want to perform this if
@@ -1092,12 +1233,9 @@ namespace VEPROMS
DiselectParentNodes(e.Node.Parent); DiselectParentNodes(e.Node.Parent);
DiselectChildNodes(e.Node.Nodes); DiselectChildNodes(e.Node.Nodes);
} }
btnFixLinks.Enabled = btnDeleteItems.Enabled = AtLeastOneNodeChecked(((TreeView)sender).Nodes); // C2017-030 support for Refresh Transitions/Update RO Values
} }
} }
private void DiselectParentNodes(TreeNode parent) private void DiselectParentNodes(TreeNode parent)
{ {
while (parent != null) while (parent != null)
@@ -1244,6 +1382,7 @@ namespace VEPROMS
{ {
AdminToolType = E_AdminToolType.Maintenance; AdminToolType = E_AdminToolType.Maintenance;
setupProgessSteps1(); setupProgessSteps1();
ResetmyTV_RO_DBs(); //C2026-002 Enhancements to new admin Tool for ROs not used.
//notify Set Admin user that only Full Admins can run maintenance tools //notify Set Admin user that only Full Admins can run maintenance tools
if (!IsAdministratorUser) if (!IsAdministratorUser)
@@ -1268,6 +1407,7 @@ namespace VEPROMS
DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data"); DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data");
DevComponents.DotNetBar.StepItem siStandardHyphens = new DevComponents.DotNetBar.StepItem("siStandardHyphens", "Standardize Hyphens"); DevComponents.DotNetBar.StepItem siStandardHyphens = new DevComponents.DotNetBar.StepItem("siStandardHyphens", "Standardize Hyphens");
DevComponents.DotNetBar.StepItem siRefreshAttmts = new DevComponents.DotNetBar.StepItem("siRefreshAttmts", "Refresh Word Attachments"); DevComponents.DotNetBar.StepItem siRefreshAttmts = new DevComponents.DotNetBar.StepItem("siRefreshAttmts", "Refresh Word Attachments");
DevComponents.DotNetBar.StepItem siRegenAttmts = new DevComponents.DotNetBar.StepItem("siRegenAttmts", "Regenerate Word Attachments");
DevComponents.DotNetBar.StepItem siRefreshTblsSrchTxt = new DevComponents.DotNetBar.StepItem("siRefreshTblsSrchTxt", "Refresh Tables For Search"); DevComponents.DotNetBar.StepItem siRefreshTblsSrchTxt = new DevComponents.DotNetBar.StepItem("siRefreshTblsSrchTxt", "Refresh Tables For Search");
// this will update/rebuild the progress bar in the bottom panel of Admin Tools // this will update/rebuild the progress bar in the bottom panel of Admin Tools
private void setupProgessSteps1() private void setupProgessSteps1()
@@ -1286,6 +1426,8 @@ namespace VEPROMS
progressSteps1.Items.Add(siStandardHyphens); progressSteps1.Items.Add(siStandardHyphens);
if (swRefreshWordAttmts.Value) if (swRefreshWordAttmts.Value)
progressSteps1.Items.Add(siRefreshAttmts); progressSteps1.Items.Add(siRefreshAttmts);
if (swRegenWordAttmts.Value)
progressSteps1.Items.Add(siRegenAttmts);
if (swRefreshTblsForSrch.Value) if (swRefreshTblsForSrch.Value)
progressSteps1.Items.Add(siRefreshTblsSrchTxt); progressSteps1.Items.Add(siRefreshTblsSrchTxt);
splitContainer3.Panel2Collapsed = false; splitContainer3.Panel2Collapsed = false;
@@ -1450,6 +1592,12 @@ namespace VEPROMS
DeletePDFs(); // refresh word attachments DeletePDFs(); // refresh word attachments
StepProgress(prgStpIdx, 100); StepProgress(prgStpIdx, 100);
} }
if (swRegenWordAttmts.Value)
{
StepProgress(++prgStpIdx, 50);
RegenPDFs(); // generate missing pdfs
StepProgress(prgStpIdx, 100);
}
if (swRefreshTblsForSrch.Value) if (swRefreshTblsForSrch.Value)
{ {
StepProgress(++prgStpIdx, 50); StepProgress(++prgStpIdx, 50);
@@ -1778,6 +1926,56 @@ namespace VEPROMS
return true; return true;
} }
//CSM - C2025-043 report RO's that are not used in any of the PROMS data.
private void btnROsNotUsed_Click(object sender, EventArgs e)
{
//Get the path to save the Image to
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "bmp";
sfd.AddExtension = true;
sfd.Filter = "Image Files (*.bmp)|*.bmp";
sfd.FileName = string.Format("ROsNotUsed_{0}", DateTime.Now.ToString("yyyyMMdd_HHmm"));
sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS";
DialogResult dr = sfd.ShowDialog();
if (dr == DialogResult.OK)
{
//Initial messaging
string statmsg = "Generating Snapshot (this may take a few minutes to complete)...";
InitialProgressBarMessage = statmsg;
txtResults.AppendText(statmsg);
txtResults.AppendText(Environment.NewLine);
//C2026-002 Enhancements to new admin Tool for ROs not used.
//Get the selected nodes
DataTable dtIDs = new DataTable();
dtIDs.Columns.Add("ID");
foreach (TreeNode tn in myTV_RO_DBs.Nodes[0].Nodes)
if (tn.Checked)
{
DataRow dtrw = dtIDs.NewRow();
dtrw["ID"] = int.Parse(tn.Tag.ToString());
dtIDs.Rows.Add(dtrw);
}
//Generate the data for ROs Not Used and save it to a TreeView
TreeView tv = TreeViewExtensions.GetROTree(GeneralReports.GetROsNotUsedInPROMS(dtIDs), true);
//Output the TreeView as an Image
if (tv.Nodes.Count != 0)
tv.SaveTreeViewAsImage(sfd.FileName);
//Give Messaging demonstrating finished and open file if requested
statmsg = "Finished Generating Snapshot of ROs Not Used.";
FinalProgressBarMessage = statmsg;
txtResults.AppendText(statmsg);
txtResults.AppendText(Environment.NewLine);
if (tv.Nodes.Count != 0 && MessageBox.Show($"{statmsg}\r\n\r\nDo you wish to open the snapshot now?", "ROs Not Used", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
System.Diagnostics.Process.Start(sfd.FileName);
else if (tv.Nodes.Count == 0)
MessageBox.Show("All ROs are currently in use.", "ROs Not Used", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
} }
} }
@@ -120,16 +120,24 @@
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<data name="swRefreshTblsForSrch.SuperTooltip" xml:space="preserve"> <data name="swRegenWordAttmts.SuperTooltip" xml:space="preserve">
<value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. <value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. Certain actions like loading a new RO.FST require that these PDFs be regenerated which is normally done at print time.
This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed. This function will generate (and save) any missing saved attachment PDFs stored in the database (not the PDFs of the entire procedure that you had previous printed). This will cause printing to be faster when you print after this as the PDFs will be pre-genrated in those cases (and thus not require regeneration unless changes were made to the Word Sections or ROs after running this).
</value>
</data>
<data name="labelX1.SuperTooltip" xml:space="preserve">
<value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. Certain actions like loading a new RO.FST require that these PDFs be regenerated which is normally done at print time.
This function will generate (and save) any missing saved attachment PDFs stored in the database (not the PDFs of the entire procedure that you had previous printed). This will cause printing to be faster when you print after this as the PDFs will be pre-genrated in those cases (and thus not require regeneration unless changes were made to the Word Sections or ROs after running this).
</value>
</data>
<data name="swRefreshTblsForSrch.SuperTooltip" xml:space="preserve">
<value>To allow for a quicker search of the contents within a PROMS Step editor table, a text version of the table is stored separately. If the PROMS Search function is not finding something in a table, this tool will refresh the content of that separately stored table text. Another search should then be performed for the content that was not originally found.
</value> </value>
</data> </data>
<data name="lblRefreshTblForSrch.SuperTooltip" xml:space="preserve"> <data name="lblRefreshTblForSrch.SuperTooltip" xml:space="preserve">
<value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. <value>To allow for a quicker search of the contents within a PROMS Step editor table, a text version of the table is stored separately. If the PROMS Search function is not finding something in a table, this tool will refresh the content of that separately stored table text. Another search should then be performed for the content that was not originally found.
This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed.
</value> </value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
@@ -175,7 +183,7 @@ RO paths, ROFST versions, and the contents of RO figures are stored in the datab
Be sure a current backup exists prior to running this function!!</value> Be sure a current backup exists prior to running this function!!</value>
</data> </data>
<data name="swRefreshWordAttmts.SuperTooltip" xml:space="preserve"> <data name="swRefreshWordAttmts.SuperTooltip" xml:space="preserve">
<value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. <value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents.
This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed. This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed.
</value> </value>
@@ -194,9 +202,9 @@ RO paths, ROFST versions, and the contents of RO figures are stored in the datab
Be sure a current backup exists prior to running this function!!</value> Be sure a current backup exists prior to running this function!!</value>
</data> </data>
<data name="labelX5.SuperTooltip" xml:space="preserve"> <data name="labelX5.SuperTooltip" xml:space="preserve">
<value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. <value>When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents.
This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed. This function will remove all of the saved attachment PDFs stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed.
</value> </value>
</data> </data>
<data name="labelX9.SuperTooltip" xml:space="preserve"> <data name="labelX9.SuperTooltip" xml:space="preserve">
@@ -216,51 +224,6 @@ Should an item become orphaned (disconnected) from the rest of the data, it will
Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool removes any orphaned items from the database. Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool removes any orphaned items from the database.
</value> </value>
</data>
<data name="btnIndexMaint.Tooltip" xml:space="preserve">
<value>This will perform Index Maintenance to realign indexes to optimize performance.
This function will cause no change to data or records in PROMS.
It should however be performed when other users are not in PROMS, as it could
cause slowdown or errors for other users while it is running.</value>
</data>
<data name="swDeleteFolder.SuperTooltip" xml:space="preserve">
<value>This allows the user to remove folders and sub folders as well as their contents.
Be sure a current backup of the database exists prior performing this function.
It is recommended that this be done during off hours.
</value>
</data>
<data name="labelX13.SuperTooltip" xml:space="preserve">
<value>This allows the user to remove folders and sub folders as well as their contents.
Be sure a current backup of the database exists prior performing this function.
It is recommended that this be done during off hours.
</value>
</data>
<data name="swDeleteAnnotations.SuperTooltip" xml:space="preserve">
<value>This function will allow the user to remove annotations from the selected working drafts.
Be sure a current backup of the database exists prior to running this function.
If more than one working draft is selected, it is recommended that this be performed during off hours.</value>
</data>
<data name="labelX14.SuperTooltip" xml:space="preserve">
<value>This function will allow the user to remove annotations from the selected working drafts.
Be sure a current backup of the database exists prior to running this function.
If more than one working draft is selected, it is recommended that this be performed during off hours.</value>
</data>
<data name="btnDeleteItems.SuperTooltip" xml:space="preserve">
<value>This will allow for the deletion of groups of annotations and allow for deleting entire folders within PROMS. Use the tree nodes to select which items to delete.
Click on the on/off switches to turn on/off each tool.
Note that only one of these tools can be run at a time.</value>
</data> </data>
<data name="btnPurgeChange.Tooltip" xml:space="preserve"> <data name="btnPurgeChange.Tooltip" xml:space="preserve">
<value>Purges all audit information and change history older than the above date. <value>Purges all audit information and change history older than the above date.
@@ -302,24 +265,30 @@ Only Full PROMS Administrator Users can perform this action.</value>
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
ud8AKwnMnBpmYFAAAAAASUVORK5CYII= ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
</value> </value>
</data>
<data name="btnIndexMaint.Tooltip" xml:space="preserve">
<value>This will perform Index Maintenance to realign indexes to optimize performance.
This function will cause no change to data or records in PROMS.
It should however be performed when other users are not in PROMS, as it could
cause slowdown or errors for other users while it is running.</value>
</data> </data>
<data name="swCheckROLinks.SuperTooltip" xml:space="preserve"> <data name="swCheckROLinks.SuperTooltip" xml:space="preserve">
<value>This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. <value>This allows the user to check referenced object links in procedure step data for multiple working drafts in a batch mode.
Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. Bad referenced object links will be identified with a Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation.
Be sure a current backup of the database exists prior performing this function. Be sure a current backup of the database exists prior to performing this function.
It is recommended that this be done during off hours. It is recommended that this be done during off hours.
</value> </value>
</data> </data>
<data name="labelX12.SuperTooltip" xml:space="preserve"> <data name="labelX12.SuperTooltip" xml:space="preserve">
<value>This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. <value>This allows the user to check referenced object links in procedure step data for multiple working drafts in a batch mode.
Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. Bad referenced object links will be identified with a Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation.
Be sure a current backup of the database exists prior performing this function. Be sure a current backup of the database exists prior to performing this function.
It is recommended that this be done during off hours. It is recommended that this be done during off hours.
</value> </value>
@@ -387,8 +356,47 @@ If more than one procedure is selected, it is recommended that this be performed
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
ud8AKwnMnBpmYFAAAAAASUVORK5CYII= ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
</value> </value>
</data>
<data name="swDeleteFolder.SuperTooltip" xml:space="preserve">
<value>This allows the user to remove folders and sub folders as well as their contents.
Be sure a current backup of the database exists prior performing this function.
It is recommended that this be done during off hours.
</value>
</data>
<data name="labelX13.SuperTooltip" xml:space="preserve">
<value>This allows the user to remove folders and sub folders as well as their contents.
Be sure a current backup of the database exists prior performing this function.
It is recommended that this be done during off hours.
</value>
</data>
<data name="swDeleteAnnotations.SuperTooltip" xml:space="preserve">
<value>This function will allow the user to remove annotations from the selected working drafts.
Be sure a current backup of the database exists prior to running this function.
If more than one working draft is selected, it is recommended that this be performed during off hours.</value>
</data>
<data name="labelX14.SuperTooltip" xml:space="preserve">
<value>This function will allow the user to remove annotations from the selected working drafts.
Be sure a current backup of the database exists prior to running this function.
If more than one working draft is selected, it is recommended that this be performed during off hours.</value>
</data>
<data name="btnDeleteItems.SuperTooltip" xml:space="preserve">
<value>This will allow for the deletion of groups of annotations and allow for deleting entire folders within PROMS. Use the tree nodes to select which items to delete.
Click on the on/off switches to turn on/off each tool.
Note that only one of these tools can be run at a time.</value>
</data> </data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>137</value> <value>25</value>
</metadata> </metadata>
</root> </root>
+21 -1
View File
@@ -20,7 +20,27 @@ namespace VEPROMS
_MyUser = value; _MyUser = value;
SimpleUser su = new SimpleUser(_MyUser); SimpleUser su = new SimpleUser(_MyUser);
pgUser.SelectedObject = su; pgUser.SelectedObject = su;
this.Text = string.Format("{0} ({1} {2}) Information",su.UserID,su.FirstName,su.LastName);
//C2026-002 Change Title bar on Add/Edit User
string tmp;
if (!string.IsNullOrEmpty(su.FirstName) && !string.IsNullOrEmpty(su.LastName))
{
tmp = $"{su.UserID} ({su.FirstName} {su.LastName}) Information";
}
else if (!string.IsNullOrEmpty(su.LastName))
{
tmp = $"{su.UserID} ({su.LastName}) Information";
}
else if (!string.IsNullOrEmpty(su.FirstName))
{
tmp = $"{su.UserID} ({su.FirstName}) Information";
}
else
{
tmp = $"{su.UserID} Information";
}
this.Text = tmp;
} }
} }
private string _Mode; private string _Mode;
@@ -284,6 +284,15 @@ namespace VEPROMS
cachePartInfo = PartInfo.CacheList; cachePartInfo = PartInfo.CacheList;
} }
//B2025-048 Problem with Printing CAS Steps
// skip doing section titles if printing CAS or CTAS
// - was causing it to
// skip/overwrite data
if (OnlyShowContinuousActionSummary)
{ MyPromsPrinter.PromsPrinterPrintType = PromsPrinterPrintType.CAS_Only; }
if (OnlyShowTimeCriticalActionSummary)
{ MyPromsPrinter.PromsPrinterPrintType = PromsPrinterPrintType.TCAS_only; }
_PdfFile = MyPromsPrinter.Print(PDFPath, MakePlaceKeeper, MakeContinuousActionSummary, MakeTimeCriticalActionSummary, PrtSectID); _PdfFile = MyPromsPrinter.Print(PDFPath, MakePlaceKeeper, MakeContinuousActionSummary, MakeTimeCriticalActionSummary, PrtSectID);
ProfileTimer.Pop(profileDepth); ProfileTimer.Pop(profileDepth);
@@ -678,7 +678,7 @@ namespace VEPROMS
// to check that there are enough docstyles to map the selected type of section. // to check that there are enough docstyles to map the selected type of section.
PlantFormat pf = _SectionConfig.MyFormat != null ? _SectionConfig.MyFormat.PlantFormat : _SectionConfig.MyDefaultFormat.PlantFormat; PlantFormat pf = _SectionConfig.MyFormat != null ? _SectionConfig.MyFormat.PlantFormat : _SectionConfig.MyDefaultFormat.PlantFormat;
if (!_Initializing && ppCmbxFormat.SelectedIndex >= 0) if (!_Initializing && ppCmbxFormat.SelectedIndex >= 0)
pf = FormatInfoList.SortedFormatInfoList[ppCmbxFormat.SelectedIndex].PlantFormat; pf = ((FormatInfo) ppCmbxFormat.SelectedItem).PlantFormat;
else if (!_Initializing) // if the format was changed, it may have been set to default. else if (!_Initializing) // if the format was changed, it may have been set to default.
pf = _SectionConfig.MyDefaultFormat.PlantFormat; pf = _SectionConfig.MyDefaultFormat.PlantFormat;
_Initializing = true; _Initializing = true;
+41 -55
View File
@@ -30,7 +30,6 @@ namespace VEPROMS
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSysOptions)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSysOptions));
//this.btnCancel = new DevComponents.DotNetBar.ButtonX();
this.btnOK = new DevComponents.DotNetBar.ButtonX(); this.btnOK = new DevComponents.DotNetBar.ButtonX();
this.gpSystemColor = new DevComponents.DotNetBar.Controls.GroupPanel(); this.gpSystemColor = new DevComponents.DotNetBar.Controls.GroupPanel();
this.cbRibonBlack = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbRibonBlack = new DevComponents.DotNetBar.Controls.CheckBoxX();
@@ -50,6 +49,7 @@ namespace VEPROMS
this.gpShwRplWords = new DevComponents.DotNetBar.Controls.GroupPanel(); this.gpShwRplWords = new DevComponents.DotNetBar.Controls.GroupPanel();
this.cbShwRplWrdsColor = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbShwRplWrdsColor = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.gpAnnoTypeFilter = new DevComponents.DotNetBar.Controls.GroupPanel(); this.gpAnnoTypeFilter = new DevComponents.DotNetBar.Controls.GroupPanel();
this.cbShwAnnoFilter = new DevComponents.DotNetBar.ButtonX();
this.gpVisioPath = new DevComponents.DotNetBar.Controls.GroupPanel(); this.gpVisioPath = new DevComponents.DotNetBar.Controls.GroupPanel();
this.txbxVisioPath = new DevComponents.DotNetBar.Controls.TextBoxX(); this.txbxVisioPath = new DevComponents.DotNetBar.Controls.TextBoxX();
this.gpSeparateWindows = new DevComponents.DotNetBar.Controls.GroupPanel(); this.gpSeparateWindows = new DevComponents.DotNetBar.Controls.GroupPanel();
@@ -72,10 +72,10 @@ namespace VEPROMS
this.cbTabbedIntrFace = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbTabbedIntrFace = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.cbButtonIntrFace = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbButtonIntrFace = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.tiIntrFaceStngs = new DevComponents.DotNetBar.TabItem(this.components); this.tiIntrFaceStngs = new DevComponents.DotNetBar.TabItem(this.components);
this.tabControlPanel1 = new DevComponents.DotNetBar.TabControlPanel();
this.tiGeneral = new DevComponents.DotNetBar.TabItem(this.components);
this.tabControlPanel2 = new DevComponents.DotNetBar.TabControlPanel(); this.tabControlPanel2 = new DevComponents.DotNetBar.TabControlPanel();
this.tiStUpMsg = new DevComponents.DotNetBar.TabItem(this.components); this.tiStUpMsg = new DevComponents.DotNetBar.TabItem(this.components);
this.tabControlPanel1 = new DevComponents.DotNetBar.TabControlPanel();
this.tiGeneral = new DevComponents.DotNetBar.TabItem(this.components);
this.cbUCFLForSetOnly = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbUCFLForSetOnly = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.cbUCFLUseAll = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbUCFLUseAll = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.cbUCFLOnlyImport = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbUCFLOnlyImport = new DevComponents.DotNetBar.Controls.CheckBoxX();
@@ -83,7 +83,6 @@ namespace VEPROMS
this.cbUCFIgnore = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbUCFIgnore = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.btnReset = new DevComponents.DotNetBar.ButtonX(); this.btnReset = new DevComponents.DotNetBar.ButtonX();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
this.cbShwAnnoFilter = new DevComponents.DotNetBar.ButtonX();
this.gpSystemColor.SuspendLayout(); this.gpSystemColor.SuspendLayout();
this.panButtons.SuspendLayout(); this.panButtons.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.tcSysOpts)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.tcSysOpts)).BeginInit();
@@ -103,18 +102,6 @@ namespace VEPROMS
this.gpTransRangeColor.SuspendLayout(); this.gpTransRangeColor.SuspendLayout();
this.gpPropPageStyle.SuspendLayout(); this.gpPropPageStyle.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
////
//// btnCancel
////
//this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
//this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
//this.btnCancel.Location = new System.Drawing.Point(616, 591);
//this.btnCancel.Margin = new System.Windows.Forms.Padding(2);
//this.btnCancel.Name = "btnCancel";
//this.btnCancel.Size = new System.Drawing.Size(56, 19);
//this.btnCancel.TabIndex = 0;
//this.btnCancel.Text = "Cancel";
//this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
// //
// btnOK // btnOK
// //
@@ -564,6 +551,18 @@ namespace VEPROMS
this.gpAnnoTypeFilter.TabIndex = 13; this.gpAnnoTypeFilter.TabIndex = 13;
this.gpAnnoTypeFilter.Text = "Filter Annotation Types"; this.gpAnnoTypeFilter.Text = "Filter Annotation Types";
// //
// cbShwAnnoFilter
//
this.cbShwAnnoFilter.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.cbShwAnnoFilter.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.cbShwAnnoFilter.Location = new System.Drawing.Point(25, 13);
this.cbShwAnnoFilter.Name = "cbShwAnnoFilter";
this.cbShwAnnoFilter.Size = new System.Drawing.Size(91, 23);
this.cbShwAnnoFilter.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.cbShwAnnoFilter.TabIndex = 0;
this.cbShwAnnoFilter.Text = "Open";
this.cbShwAnnoFilter.Click += new System.EventHandler(this.cbShwAnnoFilter_Click);
//
// gpVisioPath // gpVisioPath
// //
this.gpVisioPath.BackColor = System.Drawing.Color.Transparent; this.gpVisioPath.BackColor = System.Drawing.Color.Transparent;
@@ -741,6 +740,7 @@ namespace VEPROMS
this.cbEnhancedDocumentSync.Size = new System.Drawing.Size(99, 19); this.cbEnhancedDocumentSync.Size = new System.Drawing.Size(99, 19);
this.cbEnhancedDocumentSync.TabIndex = 9; this.cbEnhancedDocumentSync.TabIndex = 9;
this.cbEnhancedDocumentSync.Text = "Sync Navigation"; this.cbEnhancedDocumentSync.Text = "Sync Navigation";
this.cbEnhancedDocumentSync.CheckedChanged += new System.EventHandler(this.cbEnhancedDocumentSync_CheckedChanged);
// //
// gpPasteSettings // gpPasteSettings
// //
@@ -1147,31 +1147,6 @@ namespace VEPROMS
this.tiIntrFaceStngs.Name = "tiIntrFaceStngs"; this.tiIntrFaceStngs.Name = "tiIntrFaceStngs";
this.tiIntrFaceStngs.Text = "My Interface Settings"; this.tiIntrFaceStngs.Text = "My Interface Settings";
// //
// tabControlPanel1
//
this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty;
this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControlPanel1.Location = new System.Drawing.Point(0, 27);
this.tabControlPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tabControlPanel1.Name = "tabControlPanel1";
this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1);
this.tabControlPanel1.Size = new System.Drawing.Size(645, 528);
this.tabControlPanel1.Style.BackColor1.Color = System.Drawing.SystemColors.Control;
this.tabControlPanel1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.tabControlPanel1.Style.BorderSide = ((DevComponents.DotNetBar.eBorderSide)(((DevComponents.DotNetBar.eBorderSide.Left | DevComponents.DotNetBar.eBorderSide.Right)
| DevComponents.DotNetBar.eBorderSide.Bottom)));
this.tabControlPanel1.Style.GradientAngle = 90;
this.tabControlPanel1.TabIndex = 1;
this.tabControlPanel1.TabItem = this.tiGeneral;
this.tabControlPanel1.ThemeAware = true;
//
// tiGeneral
//
this.tiGeneral.AttachedControl = this.tabControlPanel1;
this.tiGeneral.Name = "tiGeneral";
this.tiGeneral.Text = "General";
this.tiGeneral.Visible = false;
//
// tabControlPanel2 // tabControlPanel2
// //
this.tabControlPanel2.DisabledBackColor = System.Drawing.Color.Empty; this.tabControlPanel2.DisabledBackColor = System.Drawing.Color.Empty;
@@ -1197,6 +1172,31 @@ namespace VEPROMS
this.tiStUpMsg.Text = "Startup Message"; this.tiStUpMsg.Text = "Startup Message";
this.tiStUpMsg.Visible = false; this.tiStUpMsg.Visible = false;
// //
// tabControlPanel1
//
this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty;
this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControlPanel1.Location = new System.Drawing.Point(0, 27);
this.tabControlPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tabControlPanel1.Name = "tabControlPanel1";
this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1);
this.tabControlPanel1.Size = new System.Drawing.Size(645, 528);
this.tabControlPanel1.Style.BackColor1.Color = System.Drawing.SystemColors.Control;
this.tabControlPanel1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.tabControlPanel1.Style.BorderSide = ((DevComponents.DotNetBar.eBorderSide)(((DevComponents.DotNetBar.eBorderSide.Left | DevComponents.DotNetBar.eBorderSide.Right)
| DevComponents.DotNetBar.eBorderSide.Bottom)));
this.tabControlPanel1.Style.GradientAngle = 90;
this.tabControlPanel1.TabIndex = 1;
this.tabControlPanel1.TabItem = this.tiGeneral;
this.tabControlPanel1.ThemeAware = true;
//
// tiGeneral
//
this.tiGeneral.AttachedControl = this.tabControlPanel1;
this.tiGeneral.Name = "tiGeneral";
this.tiGeneral.Text = "General";
this.tiGeneral.Visible = false;
//
// cbUCFLForSetOnly // cbUCFLForSetOnly
// //
this.cbUCFLForSetOnly.BackColor = System.Drawing.Color.Transparent; this.cbUCFLForSetOnly.BackColor = System.Drawing.Color.Transparent;
@@ -1291,31 +1291,17 @@ namespace VEPROMS
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray); this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
// //
// cbShwAnnoFilter
//
this.cbShwAnnoFilter.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.cbShwAnnoFilter.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.cbShwAnnoFilter.Location = new System.Drawing.Point(25, 13);
this.cbShwAnnoFilter.Name = "cbShwAnnoFilter";
this.cbShwAnnoFilter.Size = new System.Drawing.Size(91, 23);
this.cbShwAnnoFilter.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.cbShwAnnoFilter.TabIndex = 0;
this.cbShwAnnoFilter.Text = "Open";
this.cbShwAnnoFilter.Click += new System.EventHandler(this.cbShwAnnoFilter_Click);
//
// frmSysOptions // frmSysOptions
// //
this.AcceptButton = this.btnOK; this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
//this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(699, 620); this.ClientSize = new System.Drawing.Size(699, 620);
this.ControlBox = false; this.ControlBox = false;
this.Controls.Add(this.btnReset); this.Controls.Add(this.btnReset);
this.Controls.Add(this.tcSysOpts); this.Controls.Add(this.tcSysOpts);
this.Controls.Add(this.panButtons); this.Controls.Add(this.panButtons);
this.Controls.Add(this.btnOK); this.Controls.Add(this.btnOK);
//this.Controls.Add(this.btnCancel);
this.DoubleBuffered = true; this.DoubleBuffered = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(2); this.Margin = new System.Windows.Forms.Padding(2);
@@ -270,7 +270,7 @@ namespace VEPROMS
private void cbStepTypeToolTip_CheckedChanged(object sender, EventArgs e) private void cbStepTypeToolTip_CheckedChanged(object sender, EventArgs e)
{ {
Settings.Default.StepTypeToolTip = cbStepTypeToolTip.Checked; Settings.Default.StepTypeToolTip = cbStepTypeToolTip.Checked;
VlnSettings.StepTypeToolType = cbStepTypeToolTip.Checked; VlnSettings.StepTypeToolTip = cbStepTypeToolTip.Checked;
} }
private void cbTVExpand_CheckedChanged(object sender, EventArgs e) private void cbTVExpand_CheckedChanged(object sender, EventArgs e)
{ {
+1 -1
View File
@@ -877,7 +877,7 @@ namespace VEPROMS
this.infoPanel.ExpandOnTitleClick = true; this.infoPanel.ExpandOnTitleClick = true;
this.infoPanel.Location = new System.Drawing.Point(614, 57); this.infoPanel.Location = new System.Drawing.Point(614, 57);
this.infoPanel.Name = "infoPanel"; this.infoPanel.Name = "infoPanel";
this.infoPanel.Size = new System.Drawing.Size(230, 490); this.infoPanel.Size = new System.Drawing.Size(300, 490);
this.infoPanel.Style.Alignment = System.Drawing.StringAlignment.Center; this.infoPanel.Style.Alignment = System.Drawing.StringAlignment.Center;
this.infoPanel.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; this.infoPanel.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.infoPanel.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; this.infoPanel.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
+103 -10
View File
@@ -98,6 +98,8 @@ namespace VEPROMS
_SelectedStepTabPanel.MyStepTabRibbon.ContActionSummaryRequest += MyStepTabRibbon_ContActionSummaryRequest; _SelectedStepTabPanel.MyStepTabRibbon.ContActionSummaryRequest += MyStepTabRibbon_ContActionSummaryRequest;
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree -= new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree); _SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree -= new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree += new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree); _SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree += new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties -= EnableDisableStepProperties;
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
// F2022-024 Time Critical Action Summary // F2022-024 Time Critical Action Summary
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest -= MyStepTabRibbon_TimeCriticalActionSummaryRequest; _SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest -= MyStepTabRibbon_TimeCriticalActionSummaryRequest;
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest += MyStepTabRibbon_TimeCriticalActionSummaryRequest; _SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest += MyStepTabRibbon_TimeCriticalActionSummaryRequest;
@@ -524,7 +526,7 @@ namespace VEPROMS
this.Activated += new EventHandler(frmVEPROMS_Activated); this.Activated += new EventHandler(frmVEPROMS_Activated);
VlnSettings.StepTypeToolType = Settings.Default.StepTypeToolTip; VlnSettings.StepTypeToolTip = Settings.Default.StepTypeToolTip;
VlnSettings.cbShwRplWrdsColor = Settings.Default.cbShwRplWrdsColor; VlnSettings.cbShwRplWrdsColor = Settings.Default.cbShwRplWrdsColor;
displayLibDocs.PrintRequest += new DisplayLibDocEvent(displayLibDocs_PrintRequest); displayLibDocs.PrintRequest += new DisplayLibDocEvent(displayLibDocs_PrintRequest);
ContentInfo.InfoChanged += new ContentInfoEvent(RefreshDisplayHistory); ContentInfo.InfoChanged += new ContentInfoEvent(RefreshDisplayHistory);
@@ -554,10 +556,23 @@ namespace VEPROMS
tv.CreateContinuousActionSummary += new vlnTreeViewEvent(tv_CreateContinuousActionSummary); tv.CreateContinuousActionSummary += new vlnTreeViewEvent(tv_CreateContinuousActionSummary);
tv.SelectDateToStartChangeBars += tv_SelectDateToStartChangeBars; tv.SelectDateToStartChangeBars += tv_SelectDateToStartChangeBars;
tv.CreateTimeCriticalActionSummary += new vlnTreeViewEvent(tv_CreateTimeCriticalActionSummary); tv.CreateTimeCriticalActionSummary += new vlnTreeViewEvent(tv_CreateTimeCriticalActionSummary);
tv.RefreshFormats += new vlnTreeViewStatusEvent(RefreshFormats);
displayBookMarks.ResetBookMarksInPROMSWindows += displayBookMarks_ResetBookMarksInPROMSWindows; displayBookMarks.ResetBookMarksInPROMSWindows += displayBookMarks_ResetBookMarksInPROMSWindows;
} }
//C2021-035 Add Refresh Tree Option at highest level
void RefreshFormats(object sender, vlnTreeStatusEventArgs args)
{
Format.ClearFormatCache();
FormatInfo.ClearFormatInfoCache();
FormatInfo.Reset();
FormatInfoList.Reset();
Format.Reset();
FormatList.Reset();
displaySearch1.SetupContextMenu();
}
// Part of Separate Windows upgrade C2015-022 // Part of Separate Windows upgrade C2015-022
// Extend Changes to BookMark information to all of the child windows // Extend Changes to BookMark information to all of the child windows
void displayBookMarks_ResetBookMarksInPROMSWindows(object sender, EventArgs args) void displayBookMarks_ResetBookMarksInPROMSWindows(object sender, EventArgs args)
@@ -574,6 +589,25 @@ namespace VEPROMS
} }
} }
//B2019-140 Change bars do not get refreshed when approval is run.
// Get the displaytab containing the procedure
// if none exists, return null
public DisplayTabItem GetTabContainingProcedure(int procid) => tc?.MyBar?.Items?.OfType<DisplayTabItem>().FirstOrDefault(x => x.MyItemInfo?.ItemID == procid);
// Refresh Node in Tree
// Used for when Change Bar Updates as part of approval.
public void RefreshProcedureNode(ProcedureInfo itm)
{
VETreeNode tn = tv.FindNode(itm, tv.Nodes);
var tmp = (ProcedureInfo)tn?.VEObject;
if (tmp != null)
{
tmp.ChangeBarDate = itm.ChangeBarDate;
tmp.MyConfig = itm.MyConfig;
}
tn?.RefreshNode();
}
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args) void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
{ {
ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo; ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo;
@@ -583,7 +617,7 @@ namespace VEPROMS
ProcedureConfig pc = pi.MyConfig as ProcedureConfig; ProcedureConfig pc = pi.MyConfig as ProcedureConfig;
if (pc == null) return; if (pc == null) return;
dlgSetChangeBarStartDate cbdDlg = new dlgSetChangeBarStartDate(pc); dlgSetChangeBarStartDate cbdDlg = new dlgSetChangeBarStartDate(pc, pi);
if (cbdDlg.ShowDialog() == DialogResult.OK) if (cbdDlg.ShowDialog() == DialogResult.OK)
{ {
using (Item itm = Item.Get(pi.ItemID)) using (Item itm = Item.Get(pi.ItemID))
@@ -591,6 +625,28 @@ namespace VEPROMS
itm.MyContent.Config = pc.ToString(); itm.MyContent.Config = pc.ToString();
itm.UserID = Volian.Base.Library.VlnSettings.UserID; itm.UserID = Volian.Base.Library.VlnSettings.UserID;
itm.Save(); itm.Save();
//B2019-140 Change bars do not get refreshed when approval is run.
// Reset a Procedure and sub items in the cache
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
//// Refresh the StepPanel for the current Procedure
//// so change bars update
//// on any open StepPanel
//B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open
DisplayTabItem dti = GetTabContainingProcedure(pi.ItemID);
if (dti != null)
{
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
dti.MyStepTabPanel.MyStepPanel.Focus();
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
{
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
}
}
} }
} }
} }
@@ -1183,6 +1239,7 @@ namespace VEPROMS
if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref message)) if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref message))
{ {
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return; return;
} }
@@ -1325,9 +1382,14 @@ namespace VEPROMS
prnDlg.SetupForProcedure(); // Setup filename prnDlg.SetupForProcedure(); // Setup filename
if (quickprint) if (quickprint)
{
prnDlg.OverwritePDF = false; // turn off overwriting of PDFs B2025-051
prnDlg.QPCreatePDF(); // Create Print report prnDlg.QPCreatePDF(); // Create Print report
}
else else
{
prnDlg.ShowDialog(this); // Create Print report prnDlg.ShowDialog(this); // Create Print report
}
//B2025-032 Fix Section not Printing Applicability Properly //B2025-032 Fix Section not Printing Applicability Properly
si2.MyDocVersion.DocVersionConfig.SelectedSlave = 0; si2.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
@@ -1802,14 +1864,15 @@ namespace VEPROMS
// Deactivate previous procedure tab state by user // Deactivate previous procedure tab state by user
VEPROMS.CSLA.Library.Item.DeactivateStateDisplayTabTmp(MySessionInfo.UserID); VEPROMS.CSLA.Library.Item.DeactivateStateDisplayTabTmp(MySessionInfo.UserID);
// Save current procedure tab state // Save current procedure tab state
foreach (KeyValuePair<string, DisplayTabItem> pgTab in tc._MyDisplayTabItems)
//B2024-082 Remember Tabs Not opening in correct order
foreach (DisplayTabItem dti in tc.MyBar.Items)
{ {
cnt++; cnt++;
DisplayTabID = pgTab.Key; DisplayTabID = dti.MyKey;
TabItemID = Int32.Parse(DisplayTabID.Substring(DisplayTabID.IndexOf("Item - ") + 7)); TabItemID = dti.MyItemInfo.ItemID;
DisplayTabName = pgTab.Value.ToString(); DisplayTabName = dti.ToString();
//tc.SelectedDisplayTabItem.MyStepTabPanel.ToString() Item.AddDisplayTabsState(TabItemID, DisplayTabID, DisplayTabName, MySessionInfo.UserID, cnt);
VEPROMS.CSLA.Library.Item.AddDisplayTabsState(TabItemID, DisplayTabID, DisplayTabName, MySessionInfo.UserID, cnt);
} }
} }
@@ -2066,7 +2129,10 @@ namespace VEPROMS
{ {
foreach (DisplayTabItem dti in tc.MyBar.Items) foreach (DisplayTabItem dti in tc.MyBar.Items)
{ {
if (!myList.Contains(dti.OwnerID)) //C2019-036 View Only mode work with Checked Out Procedures
// View Only Mode is no longer checked out, so no longer has an OwnerID
// This will keep those tabs from auto-closing based on the timer
if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View)
{ {
MyCloseTabList.PushDTI(dti); MyCloseTabList.PushDTI(dti);
} }
@@ -2472,7 +2538,7 @@ namespace VEPROMS
//and set checkboxes based on what they are set to //and set checkboxes based on what they are set to
UserSettings usersettings = new UserSettings(VlnSettings.UserID); UserSettings usersettings = new UserSettings(VlnSettings.UserID);
if (DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember)) if (!Settings.Default.SeparateWindows && DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
{ {
//will open tabs by default / ask by default //will open tabs by default / ask by default
DialogResult result = DialogResult.Yes; DialogResult result = DialogResult.Yes;
@@ -2496,6 +2562,7 @@ namespace VEPROMS
// Open procedure in the editor. // Open procedure in the editor.
if (_Procedure == null) continue; //skip and continue with foreach if (_Procedure == null) continue; //skip and continue with foreach
OpenItem(_Procedure); OpenItem(_Procedure);
if (tc.MyEditItem == null) continue; // skip and continue with foreach
// SelectedStepTabPanel needs to be set so the print buttons on the ribbon will work. // SelectedStepTabPanel needs to be set so the print buttons on the ribbon will work.
SelectedStepTabPanel = tc.MyEditItem.MyStepPanel.MyStepTabPanel; SelectedStepTabPanel = tc.MyEditItem.MyStepPanel.MyStepTabPanel;
@@ -2507,6 +2574,7 @@ namespace VEPROMS
{ {
SelectedStepTabPanel.Select(); SelectedStepTabPanel.Select();
dlgFindReplace.MyEditItem = tc.MyEditItem; dlgFindReplace.MyEditItem = tc.MyEditItem;
SpellChecker.MyEditItem = tc.MyEditItem; //B2025-043 Remember Tabs is not setting the EditItem for the active window causing a PROMS crash when Spell Check
} }
} }
} }
@@ -3905,6 +3973,7 @@ namespace VEPROMS
string message = string.Empty; string message = string.Empty;
if (!MySessionInfo.CanCheckOutItem(args.ProcedureConfig.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) if (!MySessionInfo.CanCheckOutItem(args.ProcedureConfig.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
{ {
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
this.Cursor = Cursors.Default; this.Cursor = Cursors.Default;
return DialogResult.None; return DialogResult.None;
@@ -3928,6 +3997,7 @@ namespace VEPROMS
string message = string.Empty; string message = string.Empty;
if (!MySessionInfo.CanCheckOutItem(args.SectionConfig.MySection.MySectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) if (!MySessionInfo.CanCheckOutItem(args.SectionConfig.MySection.MySectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
{ {
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
this.Cursor = Cursors.Default; this.Cursor = Cursors.Default;
return DialogResult.None; return DialogResult.None;
@@ -4728,6 +4798,11 @@ namespace VEPROMS
// B2022-026 RO Memory reduction coding (Jakes Merge) // B2022-026 RO Memory reduction coding (Jakes Merge)
displayRO.SetFindDocROButton(false); displayRO.SetFindDocROButton(false);
displayRO.LoadTree(); displayRO.LoadTree();
//C2019-036 View Only mode work with Checked Out Procedures
//In View Only Mode - Step Properties should be disabled
EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(args.MyEditItem.MyItemInfo, 0, args.MyEditItem.MyStepPanel.VwMode));
} }
else else
{ {
@@ -4759,6 +4834,22 @@ namespace VEPROMS
} }
//C2019-036 View Only mode work with Checked Out Procedures
//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))
{
infoTabs.Enabled = true;
infoTabs.SelectedTab = infotabTags;
infoTabs.Enabled = false;
}
else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled)
{
infoTabs.Enabled = true;
}
}
void _LastStepRTB_EditModeChanged(object sender, EventArgs args) void _LastStepRTB_EditModeChanged(object sender, EventArgs args)
{ {
if (_LastStepRTB.EditMode) // going into edit mode in a cell of the grid. if (_LastStepRTB.EditMode) // going into edit mode in a cell of the grid.
@@ -5294,6 +5385,8 @@ namespace VEPROMS
private void btnUpdateFormat_Click(object sender, EventArgs e) private void btnUpdateFormat_Click(object sender, EventArgs e)
{ {
UpdateFormats(null); UpdateFormats(null);
//C2025-060 When format is updated in PROMS, auto-update the format cache so it doesn't require exiting PROMS and going back in.
RefreshFormats(sender, null);
} }
private void UpdateFormats(string mypath) private void UpdateFormats(string mypath)
@@ -1114,11 +1114,32 @@ namespace VEPROMS
{ {
_Apples = new List<MiniConfig>(); _Apples = new List<MiniConfig>();
} }
//B2026-017 Use Pre-typed in information when adding New Applicability
if (_Apples.Count == 0)
{
cfg.ID = textBox1.Text;
if (!string.IsNullOrEmpty(textBox2.Text))
{
cfg.Name = textBox2.Text;
}
cfg.Number = textBox3.Text;
cfg.Text = textBox4.Text;
cfg.OtherID = textBox8.Text;
cfg.OtherName = textBox9.Text;
cfg.OtherNumber = textBox10.Text;
cfg.OtherText = textBox11.Text;
cfg.ProcedureNumber = textBox5.Text;
cfg.SetID = textBox6.Text;
cfg.SetName = textBox7.Text;
}
_Apples.Add(cfg); _Apples.Add(cfg);
bsApples.DataSource = null; bsApples.DataSource = null;
bsApples.DataSource = _Apples; bsApples.DataSource = _Apples;
lbApplicabilities.SelectedItem = cfg; lbApplicabilities.SelectedItem = cfg;
lbApplicabilities_SelectedIndexChanged(sender, e);
} }
private bool ApplicIsUsed(MiniConfig cfg) // B2017-230 - don't allow user to remove an applicability that is being used (specified) private bool ApplicIsUsed(MiniConfig cfg) // B2017-230 - don't allow user to remove an applicability that is being used (specified)
@@ -2291,7 +2291,7 @@ OnPropertyChanged("Default_BkColor");
public void RemoveSlave(int index) public void RemoveSlave(int index)
{ {
XmlNode dd = _Xp.XmlContents.SelectSingleNode("//Slave[@index='" + index.ToString() + "']"); XmlNode dd = _Xp.XmlContents.SelectSingleNode("//Slave[@index='" + index.ToString() + "']");
dd.ParentNode.RemoveChild(dd); dd?.ParentNode?.RemoveChild(dd);
} }
public int MaxSlaveIndex public int MaxSlaveIndex
{ {
@@ -1,14 +1,14 @@
using Csla.Data;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
using System.ComponentModel; using System.ComponentModel;
using System.Text.RegularExpressions;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq; using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using static System.Net.Mime.MediaTypeNames;
using Csla.Data;
namespace VEPROMS.CSLA.Library namespace VEPROMS.CSLA.Library
@@ -494,6 +494,8 @@ namespace VEPROMS.CSLA.Library
{ {
roid = FormatRoidKey(roid, true); roid = FormatRoidKey(roid, true);
string retval = GetRoChild(roid).value; string retval = GetRoChild(roid).value;
if (string.IsNullOrEmpty(retval)) if (string.IsNullOrEmpty(retval))
@@ -2098,6 +2100,15 @@ namespace VEPROMS.CSLA.Library
{ {
string resstr = rtnstr.Substring(0, indx); string resstr = rtnstr.Substring(0, indx);
int endHsp = rtnstr.IndexOf(")", indx); int endHsp = rtnstr.IndexOf(")", indx);
//B2026 - 002 handle if parens inside a HSP
int startpos = indx + 5;
while (rtnstr.Substring(startpos, endHsp - startpos).Contains("("))
{
startpos = rtnstr.IndexOf("(", startpos + 1, endHsp - startpos) + 1;
endHsp = rtnstr.IndexOf(")", endHsp + 1);
}
string tmpstr = rtnstr.Substring(indx + 5, endHsp - indx - 5); string tmpstr = rtnstr.Substring(indx + 5, endHsp - indx - 5);
// B2017-012 Don't convert space to hard spaces for XY Plots. // B2017-012 Don't convert space to hard spaces for XY Plots.
@@ -2153,7 +2164,7 @@ namespace VEPROMS.CSLA.Library
return s2; return s2;
s2 = s2.Replace(@"\u160?", "<HSP>"); // convert hard spaces bug fix: B2016-206 s2 = s2.Replace(@"\u160?", "<HSP>"); // convert hard spaces bug fix: B2016-206
s2 = s2.Replace(@"\", @"\u9586?"); // convert backslashes to a backslash symbol s2 = Regex.Replace(s2, @"\\(?!u)", @"\u9586?"); // convert backslashes to a backslash symbol
s2 = s2.Replace("<HSP>", @"\u160?"); // convert hard spaces bug fix: B2016-206 s2 = s2.Replace("<HSP>", @"\u160?"); // convert hard spaces bug fix: B2016-206
s2 = s2.Replace("`", @"\'b0"); // convert backquote to degree - left over from DOS days. s2 = s2.Replace("`", @"\'b0"); // convert backquote to degree - left over from DOS days.
s2 = s2.Replace("\xf8", @"\'b0"); // convert \xf8 to degree. s2 = s2.Replace("\xf8", @"\'b0"); // convert \xf8 to degree.
@@ -394,6 +394,33 @@ namespace VEPROMS.CSLA.Library
OnPropertyChanged("Step_ChangeID"); OnPropertyChanged("Step_ChangeID");
} }
} }
// C2015-028 Add Editorial Mode to PROMS Step Editor
// was last change made in editorial mode and thus change bars should be disabled?
// will contain userid of user that made last change if it was in Editorial Mode
// if there was not a previous change that would have caused change bars
// will be blank/empty by default
// will get overwritten every time a change is made
public string Step_ChangeIDEditorialMode
{
get
{
string s = _Xp["Step", "ChangeIDEMode"];
if (s == string.Empty) return null;
return s;
}
set
{
string s = _Xp["Step", "ChangeIDEMode"];
if (value != null && value.ToString() == s) return;
if (value == null && s != null) _Xp["Step", "ChangeIDEMode"] = null;
else _Xp["Step", "ChangeIDEMode"] = value.ToString();
OnPropertyChanged("Step_ChangeIDEMode");
}
}
public string Step_Responsibility public string Step_Responsibility
{ {
get get
@@ -2647,8 +2647,8 @@ namespace VEPROMS.CSLA.Library
with = with.Replace(@"\ul ", ""); with = with.Replace(@"\ul ", "");
with = with.Replace(@"\ulnone ", ""); with = with.Replace(@"\ulnone ", "");
} }
//if (Properties.Settings.Default.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print)) // B2025-050 use VlnSettings so we don't need to restart PROMS
if (Properties.Settings.Default.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print)) if (VlnSettings.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print))
{ {
with = $@"\cf2{with}\cf0 "; with = $@"\cf2{with}\cf0 ";
} }
@@ -765,6 +765,19 @@ namespace VEPROMS.CSLA.Library
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key]) foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
dvi.ResetProcedures(); dvi.ResetProcedures();
} }
//C2021-035 Add Refresh Tree Option at highest level
public static void ResetAllProcedures()
{
foreach (string key in _CacheByPrimaryKey.Keys)
{
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
dvi.ResetProcedures();
}
foreach (DocVersionInfo dvi in _CacheList)
dvi.ResetProcedures();
}
#region IVEReadOnlyItem #region IVEReadOnlyItem
public System.Collections.IList GetChildren() public System.Collections.IList GetChildren()
{ {
@@ -1003,19 +1003,13 @@ namespace VEPROMS.CSLA.Library
if (pdfTmp == null) return false; if (pdfTmp == null) return false;
FileInfo pdfFile = new FileInfo(pdfTmp); FileInfo pdfFile = new FileInfo(pdfTmp);
FileStream fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
Byte[] buf = new byte[pdfFile.Length]; Byte[] buf = new byte[pdfFile.Length];
using (FileStream fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fs.Read(buf, 0, buf.Length); fs.Read(buf, 0, buf.Length);
fs.Close(); fs.Close();
}
// B2023-022 & B2023-023 commented out the deletion of the temporary Word section PDF file
// These files are deleted when the procedure pdf file is closed after being generated.
// PROMS was crashing because it could not find these temporary files to delete.
//try
//{
// pdfFile.Delete();
//}
//catch { }
using (Document doc = docInfo.Get()) using (Document doc = docInfo.Get())
{ {
@@ -1363,9 +1357,14 @@ namespace VEPROMS.CSLA.Library
// An X/Y Plot RO type might have text preceding the Plot Commands // An X/Y Plot RO type might have text preceding the Plot Commands
int pstart = roValue.IndexOf("<<G"); // find the starting Plot Command int pstart = roValue.IndexOf("<<G"); // find the starting Plot Command
//B2025-065 When Printing a Word Section containing XY Plot ROs - when there is a title on the XY Plot, only the first line is indented.
//get x-offset
float fx1 = (float)MyApp.ActiveDocument.Range(sel.Start, sel.Start).get_Information(LBWdInformation.wdHorizontalPositionRelativeToPage);
fx1 -= (float)MyApp.ActiveDocument.Range(0, 0).get_Information(LBWdInformation.wdHorizontalPositionRelativeToPage);
// B2017-217 Added logic so that underscores are not converted to underline // B2017-217 Added logic so that underscores are not converted to underline
// C2018-003 fixed use of getting the active section // C2018-003 fixed use of getting the active section
AddPrecedingText(sel, roValue.Substring(0, pstart), 0.0F, (sect.ActiveSection != null) ? sect.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertUnderscoreToUnderline : false);// replace the RO token with what's in front of the X/Y Plot AddPrecedingText(sel, roValue.Substring(0, pstart), fx1, (sect.ActiveSection != null) ? sect.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertUnderscoreToUnderline : false);// replace the RO token with what's in front of the X/Y Plot
roValue = roValue.Substring(pstart); // set rovalue to the start of the plot commands roValue = roValue.Substring(pstart); // set rovalue to the start of the plot commands
pngFile = VlnSettings.TemporaryFolder + @"\XYPlot1.png"; //@"C:\Temp\XYPlot1.png"; pngFile = VlnSettings.TemporaryFolder + @"\XYPlot1.png"; //@"C:\Temp\XYPlot1.png";
@@ -1386,6 +1385,10 @@ namespace VEPROMS.CSLA.Library
float yAdjust = sel.Font.Size; float yAdjust = sel.Font.Size;
float yyy = yAdjust + y + plotRect.Y; float yyy = yAdjust + y + plotRect.Y;
//B2025-065 When Printing a Word Section containing XY Plot ROs - when there is a title on the XY Plot, only the first line is indented.
xxx += fx1; //shift by x-offset
LBShape shape = myDoc.Shapes.AddPicture(pngFile, xxx, yyy, sel.Range); LBShape shape = myDoc.Shapes.AddPicture(pngFile, xxx, yyy, sel.Range);
try try
@@ -1473,10 +1476,20 @@ namespace VEPROMS.CSLA.Library
} }
catch { } catch { }
try
{
if (CloseWordWhenDone) if (CloseWordWhenDone)
{ {
CloseAppAfterWait(); CloseAppAfterWait();
} }
}
catch (Exception ex)
{
System.Windows.Forms.Application.DoEvents();
_MyLog.Error("Failed to close Microsoft Word. Collecting reclaimable memory.", ex);
GC.Collect();
_MyLog.Warn("Finished collecting reclaimable memory.");
}
if (statusChange != null) statusChange(VolianStatusType.Complete, 0, string.Empty); if (statusChange != null) statusChange(VolianStatusType.Complete, 0, string.Empty);
if (Volian.Base.Library.BaselineMetaFile.IsOpen && Volian.Base.Library.BaselineMetaFile.IncludeWordSecText) Volian.Base.Library.BaselineMetaFile.WriteLine("++EndTxt++"); if (Volian.Base.Library.BaselineMetaFile.IsOpen && Volian.Base.Library.BaselineMetaFile.IncludeWordSecText) Volian.Base.Library.BaselineMetaFile.WriteLine("++EndTxt++");
@@ -275,6 +275,14 @@ namespace VEPROMS.CSLA.Library
} }
} }
//C2021-035 Add Refresh Tree Option at highest level
public static void Reset()
{
_LookupFormats?.Clear();
_LookupFormats = null;
_ = LookupFormats;
}
private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath) private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath)
{ {
string fmtdata = null; string fmtdata = null;
@@ -509,6 +517,11 @@ public partial class FormatInfo : IFormatOrFormatInfo
return _PROMSBaseFormat; return _PROMSBaseFormat;
} }
} }
public static void Reset()
{
_PROMSBaseFormat = null;
}
public static FormatInfo Get(string name) public static FormatInfo Get(string name)
{ {
try try
+127 -9
View File
@@ -3312,6 +3312,25 @@ namespace VEPROMS.CSLA.Library
return retval; return retval;
} }
} }
//B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
// for enhanced documents, when copying content, need to not resolve the
//unit designators until print time
public string DisplayTextKeepSpecialCharsKeepUnitSpecific
{
get
{
string str = MyContent.Text;
foreach (string key in SpecialCharacters.Keys)
str = str.Replace(key, SpecialCharacters[key]);
string retval = ConvertToDisplayText(str);
foreach (string key in SpecialCharacters.Keys)
retval = retval.Replace(SpecialCharacters[key], key);
return retval;
}
}
public string DisplayNumber public string DisplayNumber
{ {
get get
@@ -3819,6 +3838,60 @@ namespace VEPROMS.CSLA.Library
_Tables = null; _Tables = null;
_SupInfos = null; _SupInfos = null;
} }
//B2019-140 Change bars do not get refreshed when approval is run.
// Reset a Procedure and sub items in the cache
// **********************
// Be carefull calling this when the Procedure is Open
// When the Procedure is Open - use StepTabRibbon.RefreshProcedure(); instead
// When a Procedure is open and you try to refresh it,
// events can fire behind the scenes - causing data to try to be accessed while you are trying to refresh it
// When This occurs, it will cause a
// "ThreadException ... Collection was modified; enumeration operation may not execute.”
// **********************
public static ProcedureInfo ResetProcedure(int procID)
{
// The following lines reload the procedure info cache
ProcedureInfo newproc = ProcedureInfo.Get(procID, true);
newproc.RefreshConfig();
//the following is needed to force the ProcedureConfig to reload
#pragma warning disable S1656 // Variables should not be self-assigned
newproc.MyConfig = newproc.MyConfig;
#pragma warning restore S1656 // Variables should not be self-assigned
//reload the Content Cache for the procedure
ContentInfo.Refresh(Content.Get(newproc.MyContent.ContentID, true));
// The following line actually reloads the item info cache
ItemInfo newprocitem = Get(procID, true);
newprocitem.RefreshConfig();
//Reload all the child/sub items
#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
List<int> itemIDs = _CacheByPrimaryKey.SelectMany(kvp => kvp.Value).ToList().Where(t => t?.ActiveParent != null && (t.ActiveParent is ItemInfo) && t.MyProcedure.ItemID == procID).Select(x => (x.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
#pragma warning restore S2971 // LINQ expressions should be simplified
for (int index = 0; index < itemIDs.Count; index++)
{
ResetParts(itemIDs[index]);
}
//reset the procedure config for all items attached to current procedure
#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
List<ItemInfo> pconfigrefresh_items = _CacheByPrimaryKey.SelectMany(kvp => kvp.Value).ToList().Where(t => t?.MyProcedure?.ItemID == procID).Distinct().ToList();
#pragma warning restore S2971 // LINQ expressions should be simplified
for (int index = 0; index < pconfigrefresh_items.Count; index++)
{
pconfigrefresh_items[index].MyProcedure = newproc;
}
//return the changed procedure info
return newproc;
}
private ItemInfoList _Procedures; private ItemInfoList _Procedures;
public ItemInfoList Procedures public ItemInfoList Procedures
{ get { return Lookup(E_FromType.Procedure, ref _Procedures); } } { get { return Lookup(E_FromType.Procedure, ref _Procedures); } }
@@ -3933,9 +4006,7 @@ namespace VEPROMS.CSLA.Library
get get
{ {
bool chg = HasChanges; bool chg = HasChanges;
StepInfo si = this as StepInfo; StepConfig sc = this.MyConfig as StepConfig;
if (si == null) return false;
StepConfig sc = si.MyConfig as StepConfig;
if (sc == null) return false; if (sc == null) return false;
// if there is no override & return whether there was a change to the text. // if there is no override & return whether there was a change to the text.
if (chg && ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds && if (chg && ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds &&
@@ -3943,6 +4014,21 @@ namespace VEPROMS.CSLA.Library
return false; // No Change ID - No Change Bar return false; // No Change ID - No Change Bar
if ((sc.Step_SpellCheckerChangedText ?? "") == "NoChangeBar") if ((sc.Step_SpellCheckerChangedText ?? "") == "NoChangeBar")
return false; // Spell Checker, in editorial mode (format flag EditoralSpellCheck) , made the change and there was no change bar prior to that change B2015-024 return false; // Spell Checker, in editorial mode (format flag EditoralSpellCheck) , made the change and there was no change bar prior to that change B2015-024
// C2015-028 Add Editorial Mode to PROMS Step Editor
// last change was in editorial mode, so ignore it
if (!string.IsNullOrEmpty(sc.Step_ChangeIDEditorialMode))
return false;
// C2015-028 Add Editorial Mode to PROMS Step Editor
// Add Check for enhanced docs
// If enhanced docs, need to check the step_config for the master
if (sc.MyEnhancedDocuments != null && sc.MyEnhancedDocuments.Count == 1 && sc.MyEnhancedDocuments[0].Type == 0)
{
ItemInfo ii = ItemInfo.Get(sc.MyEnhancedDocuments[0].ItemID, true);
if (ii == null) return false; // when deleting a source step, this was causing a crash (null ii)
return ii.HasChangeBar;
}
if (sc.Step_CBOverride == null) if (sc.Step_CBOverride == null)
return chg; return chg;
return (sc.Step_CBOverride == "On"); return (sc.Step_CBOverride == "On");
@@ -3953,9 +4039,7 @@ namespace VEPROMS.CSLA.Library
get get
{ {
if (this.IsAccPages || this.IsProcedure || this.IsSection) return false; if (this.IsAccPages || this.IsProcedure || this.IsSection) return false;
StepInfo si = this as StepInfo; StepConfig sc = this.MyConfig as StepConfig;
if (si == null) return false;
StepConfig sc = si.MyConfig as StepConfig;
if (sc == null) return false; if (sc == null) return false;
// go back to source & see what date it has: // go back to source & see what date it has:
if (sc.MyEnhancedDocuments != null && sc.MyEnhancedDocuments.Count == 1 && sc.MyEnhancedDocuments[0].Type == 0) if (sc.MyEnhancedDocuments != null && sc.MyEnhancedDocuments.Count == 1 && sc.MyEnhancedDocuments[0].Type == 0)
@@ -4689,6 +4773,26 @@ namespace VEPROMS.CSLA.Library
{ {
_MyTab.Text = _MyTab.Text.Substring(1); _MyTab.Text = _MyTab.Text.Substring(1);
} }
// C2026-003 Vogtle Continuous Action high level RNO (AER is not continuous action)
if (ActiveFormat.MyStepSectionLayoutData.AddContActTagToHighLevelRNOWhenIncludedOnCAS &&
IsInRNO && !MyParent.IsInRNO && FormatStepData.TabData.CASPrintMacro != null)
{
// B2026-009 needed to make sure parent wasn't a continuous action step type
// the ExcludeFromContActSum is set to False for continuous action
// step types and True for all others
StepConfig psc = MyParent.MyConfig as StepConfig;
if (MyParent.FormatStepData.ExcludeFromContActSum && psc != null && psc.Step_CAS != "True")
{
StepConfig sc = MyConfig as StepConfig;
if (sc != null && sc.Step_CAS == "True")
{
if (FormatStepData.TabData.CASPrintMacro != null)
_MyTab.Text = FormatStepData.TabData.CASPrintMacro + _MyTab.Text;
if (FormatStepData.TabData.CASEditTag != null)
_MyTab.CleanText = FormatStepData.TabData.CASEditTag + _MyTab.CleanText;
}
}
}
_MyTab.RNOTabWidthAdjust = ((ItemInfo)ActiveParent).FormatStepData.TabData.RNOAdjustTabSize ?? 0; _MyTab.RNOTabWidthAdjust = ((ItemInfo)ActiveParent).FormatStepData.TabData.RNOAdjustTabSize ?? 0;
if (((ItemInfo)ActiveParent).MyTab.Offset != 0) _MyTab.Offset = ((ItemInfo)ActiveParent).MyTab.Offset; if (((ItemInfo)ActiveParent).MyTab.Offset != 0) _MyTab.Offset = ((ItemInfo)ActiveParent).MyTab.Offset;
if (((ItemInfo)ActiveParent).FormatStepData.TabData.RNOExcludeMacros) if (((ItemInfo)ActiveParent).FormatStepData.TabData.RNOExcludeMacros)
@@ -7973,12 +8077,20 @@ namespace VEPROMS.CSLA.Library
public ProcedureInfo(SafeDataReader dr) : base(dr) { } public ProcedureInfo(SafeDataReader dr) : base(dr) { }
#endif #endif
private ProcedureInfo() : base() { ;} private ProcedureInfo() : base() { ;}
public new static ProcedureInfo Get(int itemID) public new static ProcedureInfo Get(int itemID, bool forcerefresh = false)
{ {
//if (!CanGetObject()) //if (!CanGetObject())
// throw new System.Security.SecurityException("User not authorized to view a Item"); // throw new System.Security.SecurityException("User not authorized to view a Item");
try try
{ {
//C2019-036 View Only mode work with Checked Out Procedures
// fixes caching issue
// so this forces a refresh of the cache
if (forcerefresh)
{
_CacheByPrimaryKey.Remove(itemID.ToString());
}
ProcedureInfo tmp = GetCachedByPrimaryKey(itemID); ProcedureInfo tmp = GetCachedByPrimaryKey(itemID);
if (tmp == null) if (tmp == null)
{ {
@@ -8274,7 +8386,10 @@ namespace VEPROMS.CSLA.Library
{ {
ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID); ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID);
// B2022-049: Copy/paste of enhanced procedure and bad links between source and enhanced. Null reference check // B2022-049: Copy/paste of enhanced procedure and bad links between source and enhanced. Null reference check
if (srcItem != null && srcItem.DisplayTextKeepSpecialChars != ii.DisplayTextKeepSpecialChars) //B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
// for enhanced documents, when copying content, need to not resolve the
//unit designators until print time
if (srcItem != null && srcItem.DisplayTextKeepSpecialCharsKeepUnitSpecific != ii.DisplayTextKeepSpecialCharsKeepUnitSpecific)
{ {
if (retiil == null) retiil = new ItemInfoList(ii); if (retiil == null) retiil = new ItemInfoList(ii);
else retiil.AddItem(ii); else retiil.AddItem(ii);
@@ -8300,7 +8415,10 @@ namespace VEPROMS.CSLA.Library
ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID); ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID);
using (Item enhItem = Item.Get(ii.ItemID)) using (Item enhItem = Item.Get(ii.ItemID))
{ {
enhItem.MyContent.Text = srcItem.DisplayTextKeepSpecialChars; //B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
// for enhanced documents, when copying content, need to not resolve the
//unit designators until print time
enhItem.MyContent.Text = srcItem.DisplayTextKeepSpecialCharsKeepUnitSpecific;
enhItem.Save(); enhItem.Save();
} }
} }
@@ -1638,7 +1638,7 @@ namespace VEPROMS.CSLA.Library
// get the first enhanced section, there may be non-linked sections before first linked section: // get the first enhanced section, there may be non-linked sections before first linked section:
SectionConfig firstEnhSectionConfig = pastedEnhancedProc.Sections == null ? null : pastedEnhancedProc.Sections[0].MyConfig as SectionConfig; SectionConfig firstEnhSectionConfig = pastedEnhancedProc.Sections == null ? null : pastedEnhancedProc.Sections[0].MyConfig as SectionConfig;
ItemInfo pastedEnhancedCurrentSection = null; ItemInfo pastedEnhancedCurrentSection = null;
if (firstEnhSectionConfig.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0]; if (firstEnhSectionConfig?.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0];
else pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedProc.Sections[0]); else pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedProc.Sections[0]);
// newly pasted procedure has sections/steps, need to adjust 'MyEnhancedDocuments' config items to point to correct // newly pasted procedure has sections/steps, need to adjust 'MyEnhancedDocuments' config items to point to correct
@@ -1647,7 +1647,7 @@ namespace VEPROMS.CSLA.Library
foreach (ItemInfo sourceSect in Sections) foreach (ItemInfo sourceSect in Sections)
{ {
SectionConfig srcCfg = sourceSect.MyConfig as SectionConfig; SectionConfig srcCfg = sourceSect.MyConfig as SectionConfig;
if (srcCfg != null && (srcCfg.Section_LnkEnh=="Y" || srcCfg.Section_LnkEnh=="T") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0) if (srcCfg != null && (srcCfg.Section_LnkEnh != "N") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0)
{ {
// use pastedEnhancedCurrentSection to link to: // use pastedEnhancedCurrentSection to link to:
foreach (EnhancedDocument ed in srcCfg.MyEnhancedDocuments) foreach (EnhancedDocument ed in srcCfg.MyEnhancedDocuments)
@@ -1664,7 +1664,7 @@ namespace VEPROMS.CSLA.Library
enhSectCfg.MyEnhancedDocuments[0].ItemID = sourceSect.ItemID; enhSectCfg.MyEnhancedDocuments[0].ItemID = sourceSect.ItemID;
enhSectCfg.SaveEnhancedDocuments(); enhSectCfg.SaveEnhancedDocuments();
pastedEnhancedCurrentSection.SaveConfig(enhSectCfg.ToString()); pastedEnhancedCurrentSection.SaveConfig(enhSectCfg.ToString());
if (srcCfg.Section_LnkEnh == "Y") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type if (srcCfg.Section_LnkEnh != "T") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type
pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedCurrentSection); pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedCurrentSection);
} }
} }
@@ -186,7 +186,7 @@ namespace VEPROMS.CSLA.Library
if (string.IsNullOrEmpty(name)) if (string.IsNullOrEmpty(name))
{ name = tmpproc.DisplayText; } { name = tmpproc.DisplayText; }
message = string.Format("The procedure {0} is already checked out to {1}", name, si.UserID); message = string.Format("The procedure {0} is already checked out to {1}.\r\nWould You like to open the procedure in View Only Mode?", name, si.UserID);
rv = rv && false; rv = rv && false;
} }
else if (si.ProcessID != this.ProcessID && objectType == CheckOutType.Document) else if (si.ProcessID != this.ProcessID && objectType == CheckOutType.Document)
@@ -97,6 +97,12 @@ namespace VEPROMS.CSLA.Library
if (formatInfo != null && formatInfo.ToString() == formatName) return formatInfo.Get(); if (formatInfo != null && formatInfo.ToString() == formatName) return formatInfo.Get();
return null; return null;
} }
//C2021-035 Add Refresh Tree Option at highest level
public static void Reset()
{
_MyFormatInfoList?.Clear();
_MyFormatInfoList = null;
}
} }
public class DocStyleListConverter : System.ComponentModel.StringConverter public class DocStyleListConverter : System.ComponentModel.StringConverter
{ {
@@ -597,13 +597,6 @@ namespace VEPROMS.CSLA.Library
//if (_RevisionInfoList != null) //if (_RevisionInfoList != null)
// return _RevisionInfoList; // return _RevisionInfoList;
RevisionInfoList tmp = DataPortal.Fetch<RevisionInfoList>(new ItemUnitCriteria(itemID, unitID)); RevisionInfoList tmp = DataPortal.Fetch<RevisionInfoList>(new ItemUnitCriteria(itemID, unitID));
foreach (var x in tmp)
{
x.LatestVersion.ApprovedXML = x.RevisionID.ToString();
x.LatestVersion.PDF = Encoding.ASCII.GetBytes(x.RevisionID.ToString());
x.LatestVersion.SummaryPDF = Encoding.ASCII.GetBytes(x.RevisionID.ToString());
}
RevisionInfo.AddList(tmp); RevisionInfo.AddList(tmp);
tmp.AddEvents(); tmp.AddEvents();
//_RevisionInfoList = tmp; //_RevisionInfoList = tmp;
@@ -1145,6 +1145,10 @@ namespace VEPROMS.CSLA.Library
{ {
//string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText; //string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText;
string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText; string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText;
//B2025-058 remove continuous action indicator
string medittag = pitem.FormatStepData.TabData.MacroEditTag;
if (medittag != null && thisTab.StartsWith(medittag))
thisTab = thisTab.Substring(medittag.Length);
// remove delimiters of '.' and ')' in tab. // remove delimiters of '.' and ')' in tab.
if (!hasDelim) if (!hasDelim)
{ {
@@ -1148,6 +1148,15 @@ namespace VEPROMS.CSLA.Library
} }
} }
private LazyLoad<bool> _DontIncludeRNOTabIfHasAERParent;
public bool DontIncludeRNOTabIfHasAERParent // F2026-002: Vogtle Units 3&4 Top Continue Message.
{
get
{
return LazyLoad(ref _DontIncludeRNOTabIfHasAERParent, "@DontIncludeRNOTabIfHasAERParent");
}
}
private LazyLoad<string> _Message; private LazyLoad<string> _Message;
[Category("Continue Msg")] [Category("Continue Msg")]
[DisplayName("Top Continue Msg")] [DisplayName("Top Continue Msg")]
@@ -37,7 +37,7 @@ namespace VEPROMS.CSLA.Library
// Variables in this region are not set in the format files. They are used only in the C# code // Variables in this region are not set in the format files. They are used only in the C# code
// when IgnoreUCF is true, get the original data, i.e.don't apply any UCF changes to it // when IgnoreUCF is true, get the original data, i.e.don't apply any UCF changes to it
private static bool _IgnoreUCF = false; private static bool _IgnoreUCF = true; // turn off reading in UCF values when getting format information
public static bool IgnoreUCF public static bool IgnoreUCF
{ {
get { return PlantFormat._IgnoreUCF; } get { return PlantFormat._IgnoreUCF; }
@@ -3814,6 +3814,18 @@ namespace VEPROMS.CSLA.Library
} }
} }
// C2026-003 (for Vogtle Units 3&4) Adds the continuous action tag to a high level RNO
// only when it as a tab and the parent is an AER step that is not tagged as a continuous action
// Use this with the setting of CASPrintMacro and CASEditTag on the RNO step type TabData definition
private LazyLoad<bool> _AddContActTagToHighLevelRNOWhenIncludedOnCAS;
public bool AddContActTagToHighLevelRNOWhenIncludedOnCAS
{
get
{
return LazyLoad(ref _AddContActTagToHighLevelRNOWhenIncludedOnCAS, "@AddContActTagToHighLevelRNOWhenIncludedOnCAS");
}
}
// treat sub-sections and High Level Steps as if they are at the same procedure structure level. This is used with the TieTabToLevel flag // treat sub-sections and High Level Steps as if they are at the same procedure structure level. This is used with the TieTabToLevel flag
private LazyLoad<bool> _SubSectAndHighSameLevel; private LazyLoad<bool> _SubSectAndHighSameLevel;
public bool SubSectAndHighSameLevel public bool SubSectAndHighSameLevel
@@ -4341,6 +4353,26 @@ public LeftJustifyList(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
return LazyLoad(ref _IncludeSectionNumAndTitle, "@IncludeSectionNumAndTitle"); return LazyLoad(ref _IncludeSectionNumAndTitle, "@IncludeSectionNumAndTitle");
} }
} }
//F2025-038 default (in base format) is True. The lable "SECTION" will precede the section number an title
private LazyLoad<bool> _IncludeSectionLabel;
public bool IncludeSectionLabel
{
get
{
return LazyLoad(ref _IncludeSectionLabel, "@IncludeSectionLabel");
}
}
//F2026-001 default (in base format) is False. Put in for Vogtle Units 3 & 4.
// this will add the parent sub-step tab if the parent is not identified as a continueous action step
private LazyLoad<bool> _AddParentTabToSubStepTab;
public bool AddParentTabToSubStepTab
{
get
{
return LazyLoad(ref _AddParentTabToSubStepTab, "@AddParentTabToSubStepTab");
}
}
// the font and font styles to use for the continuous action summary // the font and font styles to use for the continuous action summary
private VE_Font _Font; private VE_Font _Font;
public VE_Font Font public VE_Font Font
@@ -5688,6 +5720,30 @@ public StepData Equation // equation has a parent of embedded object.
return LazyLoad(ref _RNOIdentPrint, "TabData/@RNOIdent"); return LazyLoad(ref _RNOIdentPrint, "TabData/@RNOIdent");
} }
} }
// Adds a print macro for the high level RNO when the user want it to be a Continuous Action
// while the corresponding AER is not a continuous action
// C2026-003 used in RNO step definition for Vogtle 3&4 two column format
// use with AddContActTagToHighLevelRNOWhenIncludedOnCAS set to True in the format file's StpSectLayData
private LazyLoad<string> _CASPrintMacro;
public string CASPrintMacro
{
get
{
return LazyLoad(ref _CASPrintMacro, "TabData/@CASPrintMacro");
}
}
// Adds a character indicator in the step editor for the high level RNO when the user want it to be a Continuous Action
// while the corresponding AER is not a continuous action
// C2026-003 used in RNO step definition for Vogtle 3&4 two colmn format
// use with AddContActTagToHighLevelRNOWhenIncludedOnCAS set to True in the format file's StpSectLayData
private LazyLoad<string> _CASEditTag;
public string CASEditTag
{
get
{
return LazyLoad(ref _CASEditTag, "TabData/@CASEditTag");
}
}
// don't use the defined macro when creating a step tab for the step type's RNO // don't use the defined macro when creating a step tab for the step type's RNO
private LazyLoad<bool> _RNOExcludeMacros; private LazyLoad<bool> _RNOExcludeMacros;
@@ -990,12 +990,21 @@ namespace VEPROMS.CSLA.Library
} }
return tmp; return tmp;
} }
public static Content Get(int contentID) public static Content Get(int contentID, bool forcerefresh = false)
{ {
if (!CanGetObject()) if (!CanGetObject())
throw new System.Security.SecurityException("User not authorized to view a Content"); throw new System.Security.SecurityException("User not authorized to view a Content");
try try
{ {
//C2019-036 View Only mode work with Checked Out Procedures
// fixes caching issue
// this forces a refresh of the cache for a case when need to do a hard refresh
if (forcerefresh)
{
ConvertListToDictionary();
_CacheByPrimaryKey.Remove(contentID.ToString());
}
Content tmp = GetCachedByPrimaryKey(contentID); Content tmp = GetCachedByPrimaryKey(contentID);
if (tmp == null) if (tmp == null)
{ {
@@ -502,6 +502,15 @@ namespace VEPROMS.CSLA.Library
_FolderInfoExtension.Refresh(this); _FolderInfoExtension.Refresh(this);
OnChange();// raise an event OnChange();// raise an event
} }
//C2021-035 Add Refresh Tree Option at highest level
public static void ClearFolderInfoCache()
{
_CacheByPrimaryKey.Clear();
while (_CacheList.Count > 0)
{ _CacheList[0].Dispose(); }
}
public static FolderInfo Get(int folderID) public static FolderInfo Get(int folderID)
{ {
//if (!CanGetObject()) //if (!CanGetObject())
@@ -143,6 +143,14 @@ namespace VEPROMS.CSLA.Library
if (_CacheByParentID_Name.ContainsKey(key)) return _CacheByParentID_Name[key][0]; if (_CacheByParentID_Name.ContainsKey(key)) return _CacheByParentID_Name[key][0];
return null; return null;
} }
//C2021-035 Add Refresh Tree Option at highest level
public static void ClearFormatCache()
{
_CacheByPrimaryKey.Clear();
while (_CacheList.Count > 0)
{ _CacheList[0].Dispose(); }
}
#endregion #endregion
#region Business Methods #region Business Methods
private string _ErrorMessage = string.Empty; private string _ErrorMessage = string.Empty;
@@ -71,6 +71,13 @@ namespace VEPROMS.CSLA.Library
if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0]; if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0];
return null; return null;
} }
//C2021-035 Add Refresh Tree Option at highest level
public static void ClearFormatInfoCache()
{
_CacheByPrimaryKey.Clear();
while (_CacheList.Count > 0)
{ _CacheList[0].Dispose(); }
}
#endregion #endregion
#region Business Methods #region Business Methods
private string _ErrorMessage = string.Empty; private string _ErrorMessage = string.Empty;
@@ -606,12 +606,20 @@ namespace VEPROMS.CSLA.Library
_ItemInfoExtension.Refresh(this); _ItemInfoExtension.Refresh(this);
OnChange();// raise an event OnChange();// raise an event
} }
public static ItemInfo Get(int itemID) public static ItemInfo Get(int itemID, bool forcerefresh = false)
{ {
//if (!CanGetObject())
// throw new System.Security.SecurityException("User not authorized to view a Item");
try try
{ {
// C2015-028 Add Editorial Mode to PROMS Step Editor
// fixes caching issue
// item.myconfig was cached not containing the bypass changebar info
// so this forces a refresh of the cache
if (forcerefresh)
{
_CacheByPrimaryKey.Remove(itemID.ToString());
}
ItemInfo tmp = GetCachedByPrimaryKey(itemID); ItemInfo tmp = GetCachedByPrimaryKey(itemID);
if (tmp == null) if (tmp == null)
{ {
@@ -119,6 +119,15 @@ namespace VEPROMS.CSLA.Library
return _MyUser; return _MyUser;
} }
} }
public string MyUserUserID
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
if (_MyUser == null && _UID != 0) _MyUser = UserInfo.Get(_UID);
return _MyUser?.UserID;
}
}
private int _GID; private int _GID;
public int GID public int GID
{ {
@@ -139,6 +148,15 @@ namespace VEPROMS.CSLA.Library
return _MyGroup; return _MyGroup;
} }
} }
public string MyGroupName
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
if (_MyGroup == null && _GID != 0) _MyGroup = GroupInfo.Get(_GID);
return _MyGroup?.GroupName;
}
}
private string _StartDate = string.Empty; private string _StartDate = string.Empty;
public string StartDate public string StartDate
{ {
+6 -3
View File
@@ -522,9 +522,10 @@ namespace VEPROMS.CSLA.Library
} }
public static Pdf MakePdf(Document myDocument, int debugStatus, int topRow, int pageLength, int leftMargin, int pageWidth, double pageCount, byte[] docPdf) public static Pdf MakePdf(Document myDocument, int debugStatus, int topRow, int pageLength, int leftMargin, int pageWidth, double pageCount, byte[] docPdf)
{ {
Pdf tmp = Pdf.New(myDocument, debugStatus, topRow, pageLength, leftMargin, pageWidth, pageCount, docPdf); using (Pdf tmp = Pdf.New(myDocument, debugStatus, topRow, pageLength, leftMargin, pageWidth, pageCount, docPdf))
{
if (tmp.IsSavable) if (tmp.IsSavable)
tmp = tmp.Save(); return tmp.Save();
else else
{ {
Csla.Validation.BrokenRulesCollection brc = tmp.ValidationRules.GetBrokenRules(); Csla.Validation.BrokenRulesCollection brc = tmp.ValidationRules.GetBrokenRules();
@@ -533,9 +534,11 @@ namespace VEPROMS.CSLA.Library
{ {
tmp._ErrorMessage += "\r\n\tFailure: " + br.RuleName; tmp._ErrorMessage += "\r\n\tFailure: " + br.RuleName;
} }
}
return tmp; return tmp;
} }
}
}
public static Pdf Get(int docID, int debugStatus, int topRow, int pageLength, int leftMargin, int pageWidth) public static Pdf Get(int docID, int debugStatus, int topRow, int pageLength, int leftMargin, int pageWidth)
{ {
if (!CanGetObject()) if (!CanGetObject())
@@ -0,0 +1,72 @@
using System;
using Csla.Data;
using System.Data;
using System.Data.SqlClient;
//CSM - C2026-010 - Minimal Class for Managing Change Bar Audit History
namespace VEPROMS.CSLA.Library
{
public static class ChangeBarAuditHistory
{
#region Add Audit Record for ChangeBar History
public static void AddAudit(int itemID, string description, DateTime dts, string userID, int unitIndex)
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "AddChangeBarAuditHistory";
cm.Parameters.AddWithValue("@ItemID", itemID);
cm.Parameters.AddWithValue("@Description", description);
cm.Parameters.AddWithValue("@DTS", dts);
cm.Parameters.AddWithValue("@UserID", userID);
if (unitIndex != 0) cm.Parameters.AddWithValue("@UnitIndex", unitIndex);
cm.CommandTimeout = 0;
cm.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in ChangeBarAuditHistory.AddAudit: ", ex);
}
}
#endregion
#region Get Change Bar Audit History
public static DataTable GetChangeBarAuditHistory(int itemID)
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "GetChangeBarAuditHistoryByItem";
cm.Parameters.AddWithValue("@ItemID", itemID);
cm.CommandTimeout = Database.DefaultTimeout;
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in ChangeBarAuditHistory.GetChangeBarAuditHistoryByItem: retrieving data failed", ex);
}
}
#endregion
}
}
@@ -0,0 +1,76 @@
using System;
using Csla.Data;
using System.Data;
using System.Data.SqlClient;
//CSM - C2025-043 - Minimal Class for General Reports
namespace VEPROMS.CSLA.Library
{
public static class GeneralReports
{
#region Get General Reports
//CSM - C2025-043 report RO's that are not used in any of the PROMS data.
public static DataTable GetROsNotUsedInPROMS(DataTable dtDBids)
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "vesp_GetROsNotUsed";
cm.CommandTimeout = 0;
//Pass table Valued parameter to Store Procedure
SqlParameter sqlParam = cm.Parameters.AddWithValue("@dbIDs", dtDBids);
sqlParam.SqlDbType = SqlDbType.Structured;
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in GetROsNotUsedInPROMS Report: retrieving data failed", ex);
}
}
//C2026-002 Enhancements to new admin Tool for ROs not used.
//used to build checkboxes of dbs to include
public static DataTable GetRODBs()
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.Text;
cm.CommandText = "select RofstDatabase.*, RODbID FROM RofstDatabase INNER JOIN (Select FSTID = max(RoFSTID), RODbID from ROFsts GROUP BY RODbID) fsts ON fsts.FSTID = RofstDatabase.RofstID ORDER BY RofstID, RODbID, dbiTitle";
cm.CommandTimeout = 0;
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in GetROsNotUsedInPROMS Report - GetRODBs: retrieving data failed", ex);
}
}
#endregion
}
}
@@ -88,5 +88,36 @@ namespace VEPROMS.CSLA.Library
} }
#endregion #endregion
#region Get Docs by Unit
//C2026-007 Get Missing Docs by Unit
// for Generating/Regenerating Pdf table
// can be ran overnight to assist with Printing when RO Updates
// and large Word Sections conatining ROs
public static DataTable GetMissingDocsByUnit()
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "GetMissingDocsByUnit";
cm.CommandTimeout = Database.DefaultTimeout;
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in GetMissingDocsByUnit: retrieving data failed", ex);
}
}
#endregion
} }
} }
@@ -0,0 +1,53 @@
using Csla.Data;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
//CSM - C2026-009 - Minimal Class for Getting Revision Data
namespace VEPROMS.CSLA.Library
{
public static class RevisionData
{
#region Check Data
//Check if Data Has Units
public static bool HasUnits(DataTable dt) => dt.AsEnumerable().Any(x => x.Field<int?>("UnitID") > 0);
//Get Maximum Date Time Stamp
public static DateTime MaxDTS(DataTable dt) => dt.AsEnumerable().Max(x => x.Field<DateTime>("DTS"));
#endregion
#region Get Revision Data
//CSM - C2026-009 Get Current Revision Data by Unit
public static DataTable GetRevisionDataByUnit(int itemID)
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "GetCurrentApprovedRevisions";
cm.CommandTimeout = Database.DefaultTimeout;
cm.Parameters.AddWithValue("@ItemID", itemID);
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in GetRevisionDataByUnit: retrieving data failed", ex);
}
}
#endregion
}
}
@@ -389,7 +389,10 @@
<Compile Include="Generated\ZTransition.cs" /> <Compile Include="Generated\ZTransition.cs" />
<Compile Include="Generated\ZTransitionInfo.cs" /> <Compile Include="Generated\ZTransitionInfo.cs" />
<Compile Include="Minimal\AnnotationstypeSections.cs" /> <Compile Include="Minimal\AnnotationstypeSections.cs" />
<Compile Include="Minimal\ChangeBarAuditHistory.cs" />
<Compile Include="Minimal\Maintenance.cs" /> <Compile Include="Minimal\Maintenance.cs" />
<Compile Include="Minimal\GeneralReports.cs" />
<Compile Include="Minimal\RevisionData.cs" />
<Compile Include="Minimal\UserReports.cs" /> <Compile Include="Minimal\UserReports.cs" />
<Compile Include="Minimal\UserSettings.cs" /> <Compile Include="Minimal\UserSettings.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
+33 -33
View File
@@ -42,7 +42,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RoAccessToSql", "..\RoAcces
{AEEE9FD1-6892-45E2-A67E-418C06D46FF9} = {AEEE9FD1-6892-45E2-A67E-418C06D46FF9} {AEEE9FD1-6892-45E2-A67E-418C06D46FF9} = {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VlnStatus64", "VlnStatus64\VlnStatus64.csproj", "{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VlnStatus", "..\ReferencedObjects\LibSource\VlnStatus\VlnStatus.csproj", "{551CB7B3-00B1-11D7-8590-482B59000000}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -550,38 +550,38 @@ Global
{1EC96BDA-01E7-4153-A95D-6A4A36FA278E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1EC96BDA-01E7-4153-A95D-6A4A36FA278E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1EC96BDA-01E7-4153-A95D-6A4A36FA278E}.Release|Win32.ActiveCfg = Release|Any CPU {1EC96BDA-01E7-4153-A95D-6A4A36FA278E}.Release|Win32.ActiveCfg = Release|Any CPU
{1EC96BDA-01E7-4153-A95D-6A4A36FA278E}.Release|x86.ActiveCfg = Release|Any CPU {1EC96BDA-01E7-4153-A95D-6A4A36FA278E}.Release|x86.ActiveCfg = Release|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|Any CPU.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|Mixed Platforms.Build.0 = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|Win32.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|Win32.ActiveCfg = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|Win32.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|Win32.Build.0 = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|x86.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|x86.ActiveCfg = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Debug|x86.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Debug|x86.Build.0 = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|Any CPU.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|Any CPU.ActiveCfg = Debug|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|Any CPU.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|Any CPU.Build.0 = Debug|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|Mixed Platforms.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|Mixed Platforms.ActiveCfg = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|Mixed Platforms.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|Mixed Platforms.Build.0 = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|Win32.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|Win32.ActiveCfg = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|Win32.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|Win32.Build.0 = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|x86.ActiveCfg = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|x86.ActiveCfg = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Demo|x86.Build.0 = Debug|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Demo|x86.Build.0 = Debug|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|Any CPU.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|Any CPU.ActiveCfg = Release|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|Any CPU.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|Any CPU.Build.0 = Release|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|Mixed Platforms.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|Mixed Platforms.ActiveCfg = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|Mixed Platforms.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|Mixed Platforms.Build.0 = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|Win32.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|Win32.ActiveCfg = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|Win32.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|Win32.Build.0 = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|x86.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|x86.ActiveCfg = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release_PreRegistered|x86.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release_PreRegistered|x86.Build.0 = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|Any CPU.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|Any CPU.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|Any CPU.Build.0 = Release|Any CPU
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|Mixed Platforms.ActiveCfg = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|Mixed Platforms.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|Mixed Platforms.Build.0 = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|Win32.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|Win32.ActiveCfg = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|Win32.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|Win32.Build.0 = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|x86.ActiveCfg = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|x86.ActiveCfg = Release|x86
{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}.Release|x86.Build.0 = Release|Any CPU {551CB7B3-00B1-11D7-8590-482B59000000}.Release|x86.Build.0 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
-232
View File
@@ -1,232 +0,0 @@
/*********************************************************************************************
* Copyright 2002 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: StatusBarFrm.cs $ $Revision: 3 $
* $Author: Jsj $ $Date: 4/08/04 9:50a $
*
* $History: StatusBarFrm.cs $
*
* ***************** Version 3 *****************
* User: Jsj Date: 4/08/04 Time: 9:50a
* Updated in $/LibSource/VlnStatus
* added profile code and try to optimize
*
* ***************** Version 2 *****************
* User: Jsj Date: 11/26/02 Time: 3:38p
* Updated in $/LibSource/VlnStatus
* Added overbounds check
*********************************************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
//using ROProfiler; //don't forget to add VlnProfiler to the reference list
namespace VlnStatus
{
/// <summary>
/// Create a status window with a progress bar
/// </summary>
public class StatusBarFrm : System.Windows.Forms.Form
{
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.Label lblBar;
private System.Windows.Forms.Label StatMsg;
// private string strLblLast="";
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public StatusBarFrm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Text = "Status";
}
public StatusBarFrm(string StatusBoxTitle)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Text = StatusBoxTitle;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(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.progressBar1 = new System.Windows.Forms.ProgressBar();
this.lblBar = new System.Windows.Forms.Label();
this.StatMsg = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(29, 83);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(297, 27);
this.progressBar1.TabIndex = 0;
//
// lblBar
//
this.lblBar.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblBar.Location = new System.Drawing.Point(29, 136);
this.lblBar.Name = "lblBar";
this.lblBar.Size = new System.Drawing.Size(297, 16);
this.lblBar.TabIndex = 1;
this.lblBar.Text = "% Complete";
this.lblBar.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// StatMsg
//
this.StatMsg.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.StatMsg.Location = new System.Drawing.Point(29, 18);
this.StatMsg.Name = "StatMsg";
this.StatMsg.Size = new System.Drawing.Size(307, 56);
this.StatMsg.TabIndex = 2;
this.StatMsg.Text = "Progress Bar";
this.StatMsg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// StatusBarFrm
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
this.ClientSize = new System.Drawing.Size(350, 171);
this.ControlBox = false;
this.Controls.Add(this.StatMsg);
this.Controls.Add(this.lblBar);
this.Controls.Add(this.progressBar1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "StatusBarFrm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Status";
this.TopMost = true;
this.Load += new System.EventHandler(this.StatusBarFrm_Load);
this.ResumeLayout(false);
}
#endregion
private void StatusBarFrm_Load(object sender, System.EventArgs e)
{
}
public int Value
{
get
{
return progressBar1.Value;
}
set
{
if (value >= progressBar1.Maximum)
progressBar1.Value = progressBar1.Maximum;
else
progressBar1.Value = value;
UpateLabel();
}
}
public int Maximum
{
get
{
return progressBar1.Maximum;
}
set
{
progressBar1.Maximum = value;
}
}
public int Step
{
get
{
return progressBar1.Step;
}
set
{
progressBar1.Step = value;
}
}
public void PerformStep()
{
progressBar1.PerformStep();
}
private void UpateLabel()
{
lblBar.Text = (Math.Round((decimal)(progressBar1.Value * 100) / progressBar1.Maximum)).ToString();
lblBar.Text += "% Complete";
// if( lblBar.Text != strLblLast)
// {
// Profiler.Start("UpdateLabel");
lblBar.Refresh();
// lblBar.Update();
// Profiler.End("UpdateLabel");
// }
// strLblLast = lblBar.Text;
}
public string StatusMessage
{
get
{
return StatMsg.Text;
}
set
{
StatMsg.Text = value;
// Profiler.Start("StatusMessage");
StatMsg.Refresh();
// StatMsg.Update();
// Profiler.End("StatusMessage");
}
}
public string StatusBoxTitle
{
get
{
return Text;
}
set
{
Text = value;
}
}
}
}
-157
View File
@@ -1,157 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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 forserialized 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.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:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="progressBar1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="progressBar1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="progressBar1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lblBar.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="lblBar.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lblBar.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="StatMsg.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="StatMsg.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="StatMsg.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.Name">
<value>StatusBarFrm</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>
@@ -1,140 +0,0 @@
/*********************************************************************************************
* Copyright 2002 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: StatusMessageFrm.cs $ $Revision: 3 $
* $Author: Jsj $ $Date: 5/11/04 9:30a $
*
* $History: StatusMessageFrm.cs $
*
* ***************** Version 3 *****************
* User: Jsj Date: 5/11/04 Time: 9:30a
* Updated in $/LibSource/VlnStatus
*
* ***************** Version 2 *****************
* User: Jsj Date: 11/26/02 Time: 3:38p
* Updated in $/LibSource/VlnStatus
* Added overbounds check
*********************************************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace VlnStatus
{
/// <summary>
/// Create status message window.
/// </summary>
public class StatusMessageFrm : System.Windows.Forms.Form
{
private System.Windows.Forms.Label lblStatMsg;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public StatusMessageFrm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
public StatusMessageFrm(string StatTitle)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Text = StatTitle;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(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.lblStatMsg = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// lblStatMsg
//
this.lblStatMsg.Location = new System.Drawing.Point(19, 20);
this.lblStatMsg.Name = "lblStatMsg";
this.lblStatMsg.Size = new System.Drawing.Size(420, 81);
this.lblStatMsg.TabIndex = 0;
this.lblStatMsg.Text = "Put Status Message Here";
this.lblStatMsg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// StatusMessageFrm
//
this.AutoScaleBaseSize = new System.Drawing.Size(7, 19);
this.ClientSize = new System.Drawing.Size(457, 117);
this.ControlBox = false;
this.Controls.Add(this.lblStatMsg);
this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "StatusMessageFrm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Status";
this.TopMost = true;
this.Load += new System.EventHandler(this.StatusMessageFrm_Load);
this.ResumeLayout(false);
}
#endregion
private void StatusMessageFrm_Load(object sender, System.EventArgs e)
{
}
public string StatusMessage
{
get
{
return lblStatMsg.Text;
}
set
{
lblStatMsg.Text = value;
lblStatMsg.Refresh();
}
}
public string StatusBoxTitle
{
get
{
return Text;
}
set
{
Text = value;
}
}
}
}
@@ -1,58 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{797DE52C-278C-41D4-8B65-B9CFC02DDCD9}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>VlnStatus64</RootNamespace>
<AssemblyName>VlnStatus64</AssemblyName>
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StatusBarFrm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StatusMessageFrm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="VlnStatusBar.cs" />
<Compile Include="VlnStatusMessage.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="StatusBarFrm.resx" />
<EmbeddedResource Include="StatusMessageFrm.resx" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-148
View File
@@ -1,148 +0,0 @@
/*********************************************************************************************
* Copyright 2002 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: VlnStatusBar.cs $ $Revision: 4 $
* $Author: Jsj $ $Date: 11/26/02 4:25p $
*
* $History: VlnStatusBar.cs $
*
* ***************** Version 4 *****************
* User: Jsj Date: 11/26/02 Time: 4:25p
* Updated in $/LibSource/VlnStatus
* fixed problem with counter
*
* ***************** Version 3 *****************
* User: Jsj Date: 11/26/02 Time: 3:38p
* Updated in $/LibSource/VlnStatus
* Added overbounds check
*********************************************************************************************/
using System;
namespace VlnStatus
{
/// <summary>
/// Creates a Status Window with a progression bar control.
///
/// This class has two constructors. One allows you to pass in the title
/// of the Status Box. The Other provides a default title of "Status".
/// The Status Box Title can also be set/changed via the StatusBoxTitle
/// property.
///
///
/// </summary>
public class VlnStatusBar
{
StatusBarFrm StatBar;
private int Cnt;
// Create a status window with the default title of "Status"
public VlnStatusBar()
{
StatBar = new StatusBarFrm();
StatBar.Show();
}
// Create a status window with the passed in title
public VlnStatusBar(string Title)
{
StatBar = new StatusBarFrm(Title);
StatBar.Show();
}
// Increament the the status bar by the passed in value.
public void PerformStep(int val)
{
// StatBar.Value = val;
// Cnt = val;
BarValue = val;
StatBar.PerformStep();
}
// Increament the the status bar by one
public void PerformStep()
{
// StatBar.Value = StatBar.Value + 1;
Cnt++;
BarValue = Cnt;
StatBar.PerformStep();
}
// This property gets or sets the current status bar value.
public int BarValue
{
get
{
return StatBar.Value;
}
set
{
StatBar.Value = value;
Cnt = value;
}
}
// This property sets or gets the maximum value that the
// BarValue property can be. i.e. when BarValue reaches this
// number, the status bar is completely displayed.
public int BarMax
{
get
{
return StatBar.Maximum;
}
set
{
StatBar.Maximum = value;
}
}
// This property sets or gets the increamenting value used to
// move the status bar. For example, if set to 5, each tick of
// the status bar represents a value of 5.
public int BarStepValue
{
get
{
return StatBar.Step;
}
set
{
StatBar.Step = value;
}
}
// This property sets or gets the message above the status bar.
public string StatMsg
{
get
{
return StatBar.StatusMessage;
}
set
{
StatBar.StatusMessage = value;
}
}
// This property sets or gets the Status Window Title
public string StatusBoxTitle
{
get
{
return StatBar.StatusBoxTitle;
}
set
{
StatBar.StatusBoxTitle = value;
}
}
public void Dispose()
{
StatBar.Dispose();
}
}
}
@@ -1,79 +0,0 @@
/*********************************************************************************************
* Copyright 2002 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: VlnStatusMessage.cs $ $Revision: 3 $
* $Author: Jsj $ $Date: 11/26/02 3:38p $
*
* $History: VlnStatusMessage.cs $
*
* ***************** Version 3 *****************
* User: Jsj Date: 11/26/02 Time: 3:38p
* Updated in $/LibSource/VlnStatus
* Added overbounds check
*********************************************************************************************/
using System;
namespace VlnStatus
{
/// <summary>
/// Creates a Status Window to display a status message.
///
/// This class has two constructors. One allows you to pass in the title
/// of the Status Box. The Other provides a default title of "Status".
/// The Status Box Title can also be set/changed via the StatusBoxTitle
/// property.
///
/// </summary>
public class VlnStatusMessage
{
StatusMessageFrm StatusMessageBox;
// Create a status window with the default title of "Status"
public VlnStatusMessage()
{
StatusMessageBox = new StatusMessageFrm();
StatusMessageBox.Show();
}
// Create a status window with the passed in title.
public VlnStatusMessage(string StatusBoxTitle)
{
StatusMessageBox = new StatusMessageFrm(StatusBoxTitle);
StatusMessageBox.Show();
}
// This property gets or sets the current status message
public string StatusMessage
{
get
{
return StatusMessageBox.StatusMessage;
}
set
{
StatusMessageBox.StatusMessage = value;
}
}
// This property gets or sets the status box title
public string StatusBoxTitle
{
get
{
return StatusMessageBox.StatusBoxTitle;
}
set
{
StatusMessageBox.StatusBoxTitle = value;
}
}
public void Dispose()
{
StatusMessageBox.Dispose();
}
}
}
+1 -1
View File
@@ -197,7 +197,7 @@ namespace Volian.Base.Library
set { VlnSettings._UserID = value; } set { VlnSettings._UserID = value; }
} }
private static bool _StepTypeToolTip = false; private static bool _StepTypeToolTip = false;
public static bool StepTypeToolType public static bool StepTypeToolTip
{ {
get { return VlnSettings._StepTypeToolTip; } get { return VlnSettings._StepTypeToolTip; }
set { VlnSettings._StepTypeToolTip = value; } set { VlnSettings._StepTypeToolTip = value; }
+121
View File
@@ -0,0 +1,121 @@
namespace Volian.Controls.Library
{
partial class CustomMessageBox
{
/// <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.btn1 = new System.Windows.Forms.Button();
this.btn2 = new System.Windows.Forms.Button();
this.lblMessage = new System.Windows.Forms.Label();
this.tableLP1 = new System.Windows.Forms.TableLayoutPanel();
this.tableLP1.SuspendLayout();
this.SuspendLayout();
//
// btn1
//
this.btn1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btn1.AutoSize = true;
this.btn1.Location = new System.Drawing.Point(18, 102);
this.btn1.Margin = new System.Windows.Forms.Padding(10);
this.btn1.MinimumSize = new System.Drawing.Size(60, 20);
this.btn1.Name = "btn1";
this.btn1.Size = new System.Drawing.Size(60, 20);
this.btn1.TabIndex = 0;
this.btn1.UseVisualStyleBackColor = true;
this.btn1.Click += new System.EventHandler(this.Btn1_Click);
//
// btn2
//
this.btn2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn2.AutoSize = true;
this.btn2.Location = new System.Drawing.Point(335, 102);
this.btn2.Margin = new System.Windows.Forms.Padding(10);
this.btn2.MinimumSize = new System.Drawing.Size(60, 20);
this.btn2.Name = "btn2";
this.btn2.Size = new System.Drawing.Size(60, 20);
this.btn2.TabIndex = 1;
this.btn2.UseVisualStyleBackColor = true;
this.btn2.Click += new System.EventHandler(this.Btn2_Click);
//
// lblMessage
//
this.lblMessage.AutoSize = true;
this.tableLP1.SetColumnSpan(this.lblMessage, 2);
this.lblMessage.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblMessage.Location = new System.Drawing.Point(11, 8);
this.lblMessage.MaximumSize = new System.Drawing.Size(413, 0);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(391, 84);
this.lblMessage.TabIndex = 2;
this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tableLP1
//
this.tableLP1.AutoSize = true;
this.tableLP1.ColumnCount = 2;
this.tableLP1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLP1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLP1.Controls.Add(this.lblMessage, 0, 0);
this.tableLP1.Controls.Add(this.btn1);
this.tableLP1.Controls.Add(this.btn2);
this.tableLP1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLP1.Location = new System.Drawing.Point(0, 0);
this.tableLP1.MaximumSize = new System.Drawing.Size(413, 0);
this.tableLP1.MinimumSize = new System.Drawing.Size(413, 130);
this.tableLP1.Name = "tableLP1";
this.tableLP1.Padding = new System.Windows.Forms.Padding(8);
this.tableLP1.RowCount = 2;
this.tableLP1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLP1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
this.tableLP1.Size = new System.Drawing.Size(413, 130);
this.tableLP1.TabIndex = 0;
//
// CustomMessageBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.ClientSize = new System.Drawing.Size(419, 130);
this.Controls.Add(this.tableLP1);
this.Name = "CustomMessageBox";
this.ShowIcon = false;
this.Text = "CustomMessageBox";
this.tableLP1.ResumeLayout(false);
this.tableLP1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btn1;
private System.Windows.Forms.Button btn2;
private System.Windows.Forms.Label lblMessage;
private System.Windows.Forms.TableLayoutPanel tableLP1;
}
}
@@ -0,0 +1,62 @@
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
{
public partial class CustomMessageBox : Form
{
//Custome Message Box Class to allow renaming of buttons
// originally devleoped for use with
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
// in order to allow the user to decide if they wanted to search on the selected step or the selected procedure
public CustomMessageBox(string message, string title, string button1Text = "OK", string button2Text = "")
{
InitializeComponent();
this.Text = title;
lblMessage.Text = message;
btn1.Text = button1Text;
if (!string.IsNullOrEmpty(button2Text))
{
btn2.Text = button2Text;
btn2.Visible = true;
//make buttons uniform
btn1.Height = btn2.Height = btn1.Height > btn2.Height ? btn1.Height : btn2.Height;
btn1.Width = btn2.Width = btn1.Width > btn2.Width ? btn1.Width : btn2.Width;
}
else
{
btn2.Visible = false;
}
}
private void Btn1_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Yes;
Close();
}
private void Btn2_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.No;
Close();
}
//static method for calling custommessagebox directly
public static DialogResult Show(string message, string title, string button1Text = "OK", string button2Text = "")
{
using (var messageBox = new CustomMessageBox(message, title, button1Text, button2Text))
{
return messageBox.ShowDialog();
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More