프로젝트

일반

사용자정보

개정판 4eb052e4

ID4eb052e41c379ad693ebe5456e6ad21df1adf44d
상위 f07a3ceb
하위 b9b3b659

이지연이(가) 5년 이상 전에 추가함

issue #564 Markup List 동기화

Change-Id: I79700340e669508ab329f2cf41afec020b4dbd27

차이점 보기:

KCOM/Common/SelectionSet.cs
105 105
                where comment.Visibility != Visibility.Hidden && rect.Contains(comment.ItemRect)
106 106
                select comment;
107 107
            if (selected.Count() > 0)
108
            {
108
             {
109 109
                this.UnSelect(mainMenu);  /// unselect alreay selected items
110 110

  
111 111
                foreach(var comment in selected) mainMenu.Control_Style(comment);
KCOM/Controls/Sample.xaml
539 539
                            </telerik:RadComboBox>
540 540
                            <telerik:RadComboBox EmptyText="PAGE" Grid.Column="2"  HorizontalAlignment="Stretch" Margin="5" DropDownWidth="*" Background="White" BorderBrush="#d6d6d6" x:Name="commentPage"
541 541
                                                  ClearSelectionButtonVisibility="Visible" ClearSelectionButtonContent="Show All" SelectionChanged="commentPage_SelectionChanged"/>
542

  
543 542
                        </Grid>
544

  
545 543
                    </Border>
546 544
                    <Border Grid.Row="1" Background="#f5f5f5" >
547 545
                        <StackPanel>
KCOM/Controls/Sample.xaml.cs
1 1
using IKCOM;
2 2
using KCOM.Common;
3 3
using KCOMDataModel.DataModel;
4
using MarkupToPDF.Common;
4 5
using MarkupToPDF.Controls.Parsing;
5 6
using System;
6 7
using System.Collections.Generic;
......
13 14
using System.Windows.Input;
14 15
using System.Windows.Media;
15 16
using Telerik.Windows.Controls;
17
using static MarkupToPDF.Controls.Parsing.MarkupParser;
16 18

  
17 19
namespace KCOM.Controls
18 20
{
......
654 656

  
655 657
        private void commentUser_SelectionChanged(object sender, SelectionChangedEventArgs e)
656 658
        {
659
            gogogo.ItemsSource = null;
660
            tbSearch.Text = string.Empty;
661

  
662
            //List<MarkupInfoItemSmall> TempMarkupInfoSmallList = new List<MarkupInfoItemSmall>();
663
            TempMarkupInfoSmallList = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
664
            if (commentType.SelectedValue != null)
665
            {
666
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.Data_Type == Convert.ToInt32(commentType.SelectedValue)).ToList();
667
            }
668

  
669
            if (commentUser.SelectedValue != null)
670
            {
671
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.UserName == ((IKCOM.MarkupInfoItem)commentUser.SelectedValue).UserName).ToList();
672
            }
673

  
674
            if (commentPage.SelectedValue != null)
675
            {
676
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.PageNumber == Convert.ToInt32(commentPage.SelectedValue)).ToList();
677
            }
678

  
679
            gogogo.ItemsSource = TempMarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
680

  
681
            /*
657 682
            tbSearch.Text = string.Empty;
658 683
            if (e.AddedItems.Count > 0)
659 684
            {
660 685
                if (commentUser.Items.Count > 0)
661 686
                {
662 687
                    MarkupInfoSmallList.Clear();
688
                    #region 주석
663 689
                    //var d = e.AddedItems.Cast<MarkupInfoItem>().FirstOrDefault().MarkupList.First();
664 690
                    //d.PageNumber
665 691

  
......
668 694

  
669 695
                    //gogogo.ItemsSource = e.AddedItems.Cast<MarkupInfoItem>().FirstOrDefault().MarkupList;
670 696
                    //gogogo.ItemsSource = ViewerDataModel.Instance._markupInfoList.Where(d=>d.UserName ==  sender as RadCombo
671

  
697
                    #endregion
672 698
                    var temp = e.AddedItems.Cast<MarkupInfoItem>().FirstOrDefault();
673 699
                    var markuplist = ViewerDataModel.Instance.MyMarkupList.Where(d => d.MarkupInfoID == temp.MarkupInfoID).ToList();
674 700
                    markuplist.ForEach(d =>
......
684 710
                    });
685 711
                    gogogo.ItemsSource = null;
686 712
                    gogogo.ItemsSource = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
687

  
688 713
                }
689 714
            }
690 715
            else
......
698 723
                    {
699 724
                        MarkupInfoSmallList.Add(new MarkupInfoItemSmall
700 725
                        {
701

  
702 726
                            Data = b.Data,
703 727
                            Data_Type = b.Data_Type,
704 728
                            PageNumber = b.PageNumber,
......
708 732
                    });
709 733

  
710 734
                });
735
                
711 736
                gogogo.ItemsSource = null;
712 737
                gogogo.ItemsSource = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
713 738
            }
739
            */
714 740
        }
715 741

  
716 742
        public class MarkupInfoItemSmall
......
723 749
            public int Data_Type { get; set; }
724 750
        }
725 751

  
752
        List<MarkupInfoItemSmall> TempMarkupInfoSmallList = new List<MarkupInfoItemSmall>();
726 753
        private List<MarkupInfoItemSmall> _MarkupInfoSmallList { get; set; }
727 754
        public List<MarkupInfoItemSmall> MarkupInfoSmallList
728 755
        {
......
904 931
            }
905 932
        }
906 933

  
934
        public void markupListUpdate(MarkupReturn res, Event_Type eventType, string CommentID, MarkupInfoItem item)
935
        {
936
            if (MarkupInfoSmallList.Count == 0)
937
            {
938
                ViewerDataModel.Instance._markupInfoList.ToList().ForEach(d =>
939
                {
940
                    if (d.MarkupList != null)
941
                    {
942
                        d.MarkupList.ForEach(b =>
943
                        {
944
                            MarkupInfoSmallList.Add(new MarkupInfoItemSmall
945
                            {
946
                                Id = b.ID,
947
                                Data = b.Data,
948
                                Data_Type = b.Data_Type,
949
                                PageNumber = b.PageNumber,
950
                                UserID = d.UserID,
951
                                UserName = d.UserName,
952
                            });
953
                        });
954
                    }
955
                });
956
                gogogo.ItemsSource = null;
957
                gogogo.ItemsSource = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
958

  
959
                commentPage.ItemsSource = MarkupInfoSmallList.Select(d => d.PageNumber).Distinct().OrderBy(d => d).ToList();
960
                commentType.ItemsSource = MarkupInfoSmallList.Select(d => d.Data_Type).Distinct().OrderBy(d => d).ToList();
961
            }
962

  
963
            switch (eventType)
964
            {
965
                case Event_Type.Create:
966
                    MarkupInfoSmallList.Add(new MarkupInfoItemSmall
967
                    {
968
                        Id = res.CommentID,
969
                        Data = res.ConvertData,
970
                        Data_Type = res.DATA_TYPE,
971
                        PageNumber = CurrentPage.PageNumber,
972
                        UserID = App.ViewInfo.UserID,
973
                        UserName = App.UserName,
974
                    });
975
                    break;
976
                case Event_Type.Delete:
977
                    if(CommentID == null) //user information list delete btn
978
                    {
979
                        foreach (var delItem in item.MarkupList)
980
                        {
981
                            MarkupInfoSmallList.RemoveAll(p => p.Id == delItem.ID);
982
                        }
983
                    }
984
                    else //delete, cut, 
985
                    {
986
                        MarkupInfoSmallList.RemoveAll(p => p.Id.Equals(CommentID));
987
                    }                    
988
                    break;
989
                case Event_Type.Thumb://이동 회전,,,,,
990
                    MarkupInfoSmallList.RemoveAll(p => p.Id.Equals(res.CommentID));
991
                    MarkupInfoSmallList.Add(new MarkupInfoItemSmall
992
                    {
993
                        Id = res.CommentID,
994
                        Data = res.ConvertData,
995
                        Data_Type = res.DATA_TYPE,
996
                        PageNumber = CurrentPage.PageNumber,
997
                        UserID = App.ViewInfo.UserID,
998
                        UserName = App.UserName,
999
                    });
1000
                    break;
1001
                default:
1002
                    break;
1003
            }            
1004

  
1005
            //TempMarkupInfoSmallList = new List<MarkupInfoItemSmall>();
1006
            TempMarkupInfoSmallList = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
1007
            if (commentType.SelectedValue != null)
1008
            {
1009
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.Data_Type == Convert.ToInt32(commentType.SelectedValue)).ToList();
1010
            }
1011

  
1012
            if (commentUser.SelectedValue != null)
1013
            {
1014
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.UserName == ((IKCOM.MarkupInfoItem)commentUser.SelectedValue).UserName).ToList();                
1015
            }            
1016

  
1017
            if (commentPage.SelectedValue != null)
1018
            {
1019
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.PageNumber == Convert.ToInt32(commentPage.SelectedValue)).ToList();
1020
            }
1021

  
1022
            gogogo.ItemsSource = TempMarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();            
1023
           
1024
            commentType.ItemsSource = MarkupInfoSmallList.Select(d => d.Data_Type).Distinct().OrderBy(d => d).ToList();
1025
            commentPage.ItemsSource = MarkupInfoSmallList.Select(d => d.PageNumber).Distinct().OrderBy(d => d).ToList();
1026
            
1027
        }
1028

  
907 1029
        private void commentType_SelectionChanged(object sender, SelectionChangedEventArgs e)
908 1030
        {
909 1031
            gogogo.ItemsSource = null;
910 1032
            tbSearch.Text = string.Empty;
1033
            /*
911 1034
            if (e.AddedItems.Count > 0)
912 1035
            {
913

  
914 1036
                gogogo.ItemsSource = MarkupInfoSmallList.Where(d => d.Data_Type == Convert.ToInt32(e.AddedItems[0])).ToList();
915 1037
            }
916 1038
            else
917 1039
            {
918 1040
                gogogo.ItemsSource = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
919 1041
            }
1042
            */
1043

  
1044
           // List<MarkupInfoItemSmall> TempMarkupInfoSmallList = new List<MarkupInfoItemSmall>();
1045
            TempMarkupInfoSmallList = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
1046
            if (commentType.SelectedValue != null)
1047
            {
1048
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.Data_Type == Convert.ToInt32(commentType.SelectedValue)).ToList();
1049
            }
1050

  
1051
            if (commentUser.SelectedValue != null)
1052
            {
1053
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.UserName == ((IKCOM.MarkupInfoItem)commentUser.SelectedValue).UserName).ToList();
1054
            }
1055

  
1056
            if (commentPage.SelectedValue != null)
1057
            {
1058
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.PageNumber == Convert.ToInt32(commentPage.SelectedValue)).ToList();
1059
            }
1060

  
1061
            gogogo.ItemsSource = TempMarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
920 1062
        }
921 1063

  
922 1064
        private void commentPage_SelectionChanged(object sender, SelectionChangedEventArgs e)
923 1065
        {
924 1066
            gogogo.ItemsSource = null;
925 1067
            tbSearch.Text = string.Empty;
1068
            /*
926 1069
            if (e.AddedItems.Count > 0)
927 1070
            {
928 1071
                gogogo.ItemsSource = MarkupInfoSmallList.Where(d => d.PageNumber == Convert.ToInt32(e.AddedItems[0])).ToList();
......
931 1074
            {
932 1075
                gogogo.ItemsSource = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
933 1076
            }
1077
            */
1078

  
1079
            //List<MarkupInfoItemSmall> TempMarkupInfoSmallList = new List<MarkupInfoItemSmall>();
1080
            TempMarkupInfoSmallList = MarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
1081
            if (commentType.SelectedValue != null)
1082
            {
1083
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.Data_Type == Convert.ToInt32(commentType.SelectedValue)).ToList();
1084
            }
1085

  
1086
            if (commentUser.SelectedValue != null)
1087
            {
1088
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.UserName == ((IKCOM.MarkupInfoItem)commentUser.SelectedValue).UserName).ToList();
1089
            }
1090

  
1091
            if (commentPage.SelectedValue != null)
1092
            {
1093
                TempMarkupInfoSmallList = TempMarkupInfoSmallList.Where(d => d.PageNumber == Convert.ToInt32(commentPage.SelectedValue)).ToList();
1094
            }
1095

  
1096
            gogogo.ItemsSource = TempMarkupInfoSmallList.OrderBy(d => d.PageNumber).ToList();
934 1097
        }
935 1098

  
936 1099
        private void btnPanorama_Click(object sender, RoutedEventArgs e)
KCOM/Events/CreateCommand.cs
23 23
using System.Windows.Media;
24 24
using System.Xml;
25 25
using System.Xml.Serialization;
26
using static KCOM.Controls.Sample;
26 27

  
27 28
namespace KCOM
28 29
{
......
77 78

  
78 79
            ViewerDataModel.Instance.UndoDataList.Add(UndoData);
79 80

  
81
            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
82
                MarkupParser.MarkupToString(multi_Undo_Data.Markup, App.ViewInfo.UserID), Event_Type.Create, null, null);
83

  
80 84
            control.ApplyOverViewData();
81 85
        }
82 86
    }
KCOM/Events/CutCommand.cs
70 70
                            var data = MarkupParser.MarkupToString(InnerItem.DrawingData as MarkupToPDF.Common.CommentUserInfo, App.ViewInfo.UserID);
71 71
                            id = (InnerItem.Symbol_ID != null) ? "|SymbolID|" + InnerItem.Symbol_ID : "";
72 72
                            MarkupData += "|OR|" + data.ConvertData + id;
73

  
74
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
75
                            null, Event_Type.Delete, data.CommentID, null);
73 76
                        }
74 77

  
75 78
                        Clipboard.SetText(MarkupData);
KCOM/Events/DeleteCommand.cs
77 77

  
78 78
                var Item_ = ViewerDataModel.Instance.MyMarkupList.Where(d => d.ID == comment.CommentID).FirstOrDefault();
79 79
                ViewerDataModel.Instance.MyMarkupList.Remove(Item_);
80

  
81
                ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
82
                null, Event_Type.Delete, MarkupParser.MarkupToString(multi_Undo_Data.Markup, App.ViewInfo.UserID).CommentID, null);
80 83
            }
81 84

  
82 85
            ViewerDataModel.Instance.UndoDataList.Where(data => data.IsUndo == true).ToList().ForEach(i =>
83 86
            {
84 87
                ViewerDataModel.Instance.UndoDataList.Remove(i);
85 88
            });
86
            ViewerDataModel.Instance.UndoDataList.Add(UndoData);
89
            ViewerDataModel.Instance.UndoDataList.Add(UndoData);            
87 90
        }
88 91
    }
89 92
}
KCOM/Events/PasteCommand.cs
105 105

  
106 106
                        UndoData.Markup_List.Add(multi_Undo_Data);
107 107
                        ViewerDataModel.Instance.UndoDataList.Add(UndoData);
108

  
109
                        ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
110
                        MarkupParser.MarkupToString(multi_Undo_Data.Markup, App.ViewInfo.UserID), Event_Type.Create, null, null);
108 111
                    }
109 112
                }
110 113
                Controls.AdornerFinal final = new Controls.AdornerFinal(adornerSet);
......
222 225
                    ViewerDataModel.Instance.MarkupControls_USER.Remove(currentControl as MarkupToPDF.Common.CommentUserInfo);
223 226
                    Controls.AdornerFinal final = new Controls.AdornerFinal(currentControl as MarkupToPDF.Common.CommentUserInfo);
224 227
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
228

  
229
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
230
                        MarkupParser.MarkupToString(multi_Undo_Data.Markup, App.ViewInfo.UserID), Event_Type.Create, null, null);
225 231
                }
226 232
                catch (Exception ex)
227 233
                {
KCOM/Events/RedoCommand.cs
15 15
using MarkupToPDF.Controls.Cad;
16 16
using KCOM.Common;
17 17
using KCOM.Controls;
18
using MarkupToPDF.Controls.Parsing;
18 19

  
19 20
namespace KCOM.Events
20 21
{
......
57 58
                        foreach (var item in redo.Markup_List)
58 59
                        {
59 60
                            ViewerDataModel.Instance.MarkupControls_USER.Add(item.Markup);
61
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
62
                            MarkupParser.MarkupToString(item.Markup, App.ViewInfo.UserID), Event_Type.Create, null, null);
60 63
                        }
61 64
                    }
62 65
                    break;
......
65 68
                        foreach (var item in redo.Markup_List)
66 69
                        {
67 70
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
71
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
72
                            null, Event_Type.Delete, item.Markup.CommentID, null);
68 73
                        }
69 74
                    }
70 75
                    break;
KCOM/Events/UndoCommand.cs
15 15
using MarkupToPDF.Controls.Cad;
16 16
using KCOM.Common;
17 17
using KCOM.Controls;
18
using MarkupToPDF.Controls.Parsing;
18 19

  
19 20
namespace KCOM.Events
20 21
{
......
87 88

  
88 89
                multi_Undo_Data.Markup = comment;
89 90
                UndoData.Markup_List.Add(multi_Undo_Data);
90
                multi_Undo_Data = new Multi_Undo_data();
91
                ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
92
                            MarkupParser.MarkupToString(multi_Undo_Data.Markup, App.ViewInfo.UserID), Event_Type.Thumb, null, null);
93

  
94
                multi_Undo_Data = new Multi_Undo_data();                
91 95
            }
92 96
            ViewerDataModel.Instance.UndoDataList.Where(data => data.IsUndo == true).ToList().ForEach(i =>
93 97
            {
94 98
                ViewerDataModel.Instance.UndoDataList.Remove(i);
95 99
            });
96 100

  
97
            ViewerDataModel.Instance.UndoDataList.Add(UndoData);
101
            ViewerDataModel.Instance.UndoDataList.Add(UndoData);            
98 102
        }
99 103

  
100 104
        /// <summary>
......
115 119
                        foreach (var item in undo.Markup_List)
116 120
                        {
117 121
                            ViewerDataModel.Instance.MarkupControls_USER.Remove((item.Markup));
122
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
123
                            null, Event_Type.Delete, item.Markup.CommentID, null);
118 124
                        }
119 125
                    }
120 126
                    break;
......
123 129
                        foreach (var item in undo.Markup_List)
124 130
                        {
125 131
                            ViewerDataModel.Instance.MarkupControls_USER.Add(item.Markup);
132
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
133
                            MarkupParser.MarkupToString(item.Markup, App.ViewInfo.UserID), Event_Type.Create, null, null);
126 134
                        }
127 135
                    }
128 136
                    break;
KCOM/Views/MainMenu.xaml.cs
41 41
using MarkupToPDF.Controls.Parsing;
42 42
using Telerik.Windows.Data;
43 43
using System.ComponentModel;
44
using static KCOM.Controls.Sample;
44 45

  
45 46
namespace KCOM.Views
46 47
{
......
301 302
        {
302 303
            if (PreviewUserMarkupInfoItem != null && item.Consolidate == 1 && item.AvoidConsolidate == 0)
303 304
            {
304
                App.Custom_ViewInfoId = PreviewUserMarkupInfoItem.MarkupInfoID;
305
            }
305
                App.Custom_ViewInfoId = PreviewUserMarkupInfoItem.MarkupInfoID;           }
306 306

  
307
            
307 308
            ViewerDataModel.Instance._markupInfoList.Remove(item);
308 309

  
309 310
            ViewerDataModel.Instance.MarkupControls.Where(data => data.MarkupInfoID == item.MarkupInfoID).ToList().ForEach(a =>
......
314 315
            ViewerDataModel.Instance.MarkupControls_USER.Where(data => data.MarkupInfoID == item.MarkupInfoID).ToList().ForEach(a =>
315 316
            {
316 317
                ViewerDataModel.Instance.MarkupControls_USER.Remove(a);
318
                ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.markupListUpdate(
319
                null, Event_Type.Delete, a.CommentID, null);
317 320
            });
318 321

  
319 322
            ViewerDataModel.Instance.MyMarkupList.Where(data => data.MarkupInfoID == item.MarkupInfoID).ToList().ForEach(a =>
320 323
            {
321 324
                ViewerDataModel.Instance.MyMarkupList.Remove(a);
322 325
                //임시파일에서도 삭제
323
                TempFile.DelTemp(a.ID, this.ParentOfType<MainWindow>().dzMainMenu.pageNavigator.CurrentPage.PageNumber.ToString());
326
                TempFile.DelTemp(a.ID, this.ParentOfType<MainWindow>().dzMainMenu.pageNavigator.CurrentPage.PageNumber.ToString());                
324 327
            });
325 328

  
326 329
            gridViewMarkup.ItemsSource = ViewerDataModel.Instance._markupInfoList;
......
353 356
                }
354 357
            }
355 358
            Logger.sendReqLog("DeleteMarkupAsync", App.ViewInfo.ProjectNO + "," + item.MarkupInfoID, 1);
356
            BaseClient.DeleteMarkupAsync(App.ViewInfo.ProjectNO, item.MarkupInfoID);
359
            BaseClient.DeleteMarkupAsync(App.ViewInfo.ProjectNO, item.MarkupInfoID);    
357 360
        }
358 361

  
359 362
        /// <summary>
......
1619 1622
                            break;
1620 1623
                        default:
1621 1624
                            break;
1622
                    }
1625
                    }                    
1623 1626
                }
1624 1627
                else if (mouseHandlingMode == MouseHandlingMode.Selecting && e.ChangedButton == MouseButton.Left || mouseHandlingMode == MouseHandlingMode.Capture && e.ChangedButton == MouseButton.Left || mouseHandlingMode == MouseHandlingMode.DragZoom && e.ChangedButton == MouseButton.Left)
1625 1628
                {
......
4424 4427
                Logger.sendReqLog("GetSyncMarkupInfoItemsAsync", _ViewInfo.ProjectNO + "," + CurrentRev.DOCUMENT_ID + "," + _ViewInfo.UserID, 1);
4425 4428
            }
4426 4429
        }
4430

  
4427 4431
        private void EnsembleLink_Button_Click(object sender, RoutedEventArgs e)
4428 4432
        {
4429 4433
            try

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)