프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / KCOM / Extensions / MacroHelper.cs @ b74a9c91

이력 | 보기 | 이력해설 | 다운로드 (6.76 KB)

1 b74a9c91 taeseongkim
using KCOM.Common;
2
using MarkupToPDF.Controls.Text;
3
using System;
4
using System.Collections.Generic;
5
using System.Linq;
6
using System.Text;
7
using System.Threading.Tasks;
8
using System.Windows.Controls;
9
using System.Windows.Controls.Primitives;
10
using Telerik.Windows.Controls;
11
12
namespace KCOM
13
{
14
    public static class MacroHelper
15
    {
16
        private static List<MarkupToPDF.Controls.Common.ControlType> TextControlType = new List<MarkupToPDF.Controls.Common.ControlType>
17
        {
18
            MarkupToPDF.Controls.Common.ControlType.TextBorder,
19
            MarkupToPDF.Controls.Common.ControlType.TextCloud,
20
            MarkupToPDF.Controls.Common.ControlType.TextControl,
21
            MarkupToPDF.Controls.Common.ControlType.ArrowTextBorderControl,
22
            MarkupToPDF.Controls.Common.ControlType.ArrowTextCloudControl,
23
            MarkupToPDF.Controls.Common.ControlType.ArrowTextControl,
24
            MarkupToPDF.Controls.Common.ControlType.ArrowTransTextBorderControl,
25
            MarkupToPDF.Controls.Common.ControlType.ArrowTransTextCloudControl,
26
            MarkupToPDF.Controls.Common.ControlType.ArrowTransTextControl,
27
        };
28
29
        /// <summary>
30
        /// 버튼에 따른 macro 로드
31
        /// </summary>
32
        /// <param name="Key">버튼의 key</param>
33
        /// <returns></returns>
34
        public static List<MacroItem> LoadMacroItems(string Key)
35
        {
36
            List<MacroItem> result = new List<MacroItem>();
37
38
            string items = CommonLib.Common.GetConfigString("MACRO", Key, "");
39
40
            if(!string.IsNullOrWhiteSpace(items))
41
            {
42
                var controlTypes = items.Split(';');
43
44
                for (int i = 0; i < controlTypes.Count(); i++)
45
                {
46
                    result.Add(new MacroItem
47
                    {
48
                        IsCurrent = false,
49
                        Index = i,
50
                        ControlType = (MarkupToPDF.Controls.Common.ControlType)Enum.Parse(typeof(MarkupToPDF.Controls.Common.ControlType), controlTypes[i])
51
                    });
52
                }
53
            }
54
55
            return result;
56
        }
57
58
        public static void MacroAction()
59
        {
60
            var menu = ViewerDataModel.Instance.SystemMain.dzMainMenu;
61
62
            var currentItem = Common.ViewerDataModel.Instance.MacroItems.Find(x => x.IsCurrent);
63
64
            if(currentItem != null)
65
            {
66
                if (TextControlType.Contains(currentItem.ControlType))
67
                {
68
                    var arrowtext_item = ViewerDataModel.Instance.MarkupControls_USER.Where(data => (data as ArrowTextControl) != null && (data as ArrowTextControl).IsEditingMode == true).FirstOrDefault();
69
70
                    var text_item = ViewerDataModel.Instance.MarkupControls_USER.Where(data => (data as TextControl) != null && (data as TextControl).IsEditingMode == true).FirstOrDefault();
71
72
                    if (arrowtext_item != null || text_item != null)
73
                    {
74
                        System.Diagnostics.Debug.WriteLine("MacroAction return = Text Control Edit Mode");
75
                        return;
76
                    }
77
                }
78
            }
79
80
            Common.ViewerDataModel.Instance.MacroItems.ForEach(x =>x.IsCurrent = false);
81
82
            if (Common.ViewerDataModel.Instance.MacroCommandIndex < Common.ViewerDataModel.Instance.MacroItems.Count)
83
            {
84
                Common.ViewerDataModel.Instance.IsMacroCommand = true;
85
86
                var item = Common.ViewerDataModel.Instance.MacroItems[Common.ViewerDataModel.Instance.MacroCommandIndex];
87
88
                item.IsCurrent = true;
89
                item.IsDraw = true;
90
                menu.controlType = item.ControlType;
91
                menu.txtBatch.Visibility = System.Windows.Visibility.Visible;
92
                menu.txtBatch.Text = $"Draw a {item.Desc}";
93
94
                Common.ViewerDataModel.Instance.MacroCommandIndex++;
95
            }
96
            else
97
            {
98
                Common.ViewerDataModel.Instance.IsMacroCommand = false;
99
                Common.ViewerDataModel.Instance.MacroCommandIndex = 0;
100
                Common.ViewerDataModel.Instance.MacroItems.ForEach(x =>
101
                {
102
                    x.IsCurrent = false;
103
                    x.IsDraw = false;
104
                });
105
106
                menu.controlType = MarkupToPDF.Controls.Common.ControlType.None;
107
                menu.txtBatch.Visibility = System.Windows.Visibility.Collapsed;
108
                menu.mouseHandlingMode = IKCOM.MouseHandlingMode.None;
109
                var TogList = menu.Parent.ChildrenOfType<Telerik.Windows.Controls.RadToggleButton>();
110
111
                foreach (var tog in TogList)
112
                {
113
                    tog.IsChecked = false;
114
                }
115
            }
116
117
        }
118
119
        public static List<MarkupMenuItem> TopMenuItems()
120
        {
121
            List<MarkupMenuItem> result = new List<MarkupMenuItem>();
122
123
            var menu = ViewerDataModel.Instance.SystemMain.dzTopMenu;
124
125
            result.AddRange(ItemCollectionToMenuItem(menu.LineControlGroup.Items,"Line"));
126
            result.AddRange(ItemCollectionToMenuItem(menu.ShapeControlGroup.Items, "Shape"));
127
            result.AddRange(ItemCollectionToMenuItem(menu.TextControlGroup.Items, "Text"));
128
            result.AddRange(ItemCollectionToMenuItem(menu.PenControlGroup.Items, "Pen"));
129
            result.AddRange(ItemCollectionToMenuItem(menu.AppStampControlGroup.Items, "Approval Stamp"));
130
131
            return result;
132
        }
133
134
        private static IEnumerable<MarkupMenuItem> ItemCollectionToMenuItem(ItemCollection collection,string GroupName)
135
        {
136
            foreach (var item in collection)
137
            {
138
                foreach (var control in (item as System.Windows.DependencyObject).FindAllChildren(c => c is ButtonBase))
139
                {
140
                    Uri iconUri = null;
141
142
                    if ((control as ButtonBase).CommandParameter != null)
143
                    {
144
                        if ((control as ButtonBase).Content is Image)
145
                        {
146
                            var uri = (((control as ButtonBase).Content as Image).Source as System.Windows.Markup.IUriContext);
147
148
                            if (uri != null)
149
                            {
150
                                iconUri = new Uri(uri.ToString());
151
                            }
152
                        }
153
154
                        yield return new MarkupMenuItem
155
                        {
156
                            GroupName = GroupName,
157
                            Name = (control as ButtonBase).CommandParameter?.ToString(),
158
                            Tooltip = (control as ButtonBase).CommandParameter?.ToString(),
159
                            Icon = iconUri
160
                        };
161
                    }
162
                    else
163
                    {
164
165
                    }
166
                }
167
            }
168
        }
169
170
    }
171
}
클립보드 이미지 추가 (최대 크기: 500 MB)