프로젝트

일반

사용자정보

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

markus / KCOM / Events / Event_KeyEvent.cs @ 5ba8f2d5

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

1 787a4489 KangIngu
using KCOM.Common;
2 f816dd63 humkyung
using KCOM.Events;
3 787a4489 KangIngu
using MarkupToPDF.Common;
4 036650a0 humkyung
using MarkupToPDF.Controls.Parsing;
5 53880c83 ljiyeon
using Svg2Xaml;
6 787a4489 KangIngu
using System;
7
using System.Collections.Generic;
8
using System.ComponentModel;
9
using System.Linq;
10
using System.Text;
11
using System.Windows;
12
using System.Windows.Controls;
13
using System.Windows.Input;
14 53880c83 ljiyeon
using System.Windows.Media;
15
using System.Windows.Media.Imaging;
16 787a4489 KangIngu
using Telerik.Windows.Controls;
17 0c997b99 ljiyeon
//using static KCOM.Views.MainMenu;
18 787a4489 KangIngu
19
namespace KCOM
20
{
21 68302e9d taeseongkim
    public partial class MainWindow : KCOM.Controls.CustomizedWindow.CustomWindow
22 787a4489 KangIngu
    {
23
        public double CumulativeWheel = 0;
24 036650a0 humkyung
        MarkupToPDF.Controls.Parsing.MarkupParser.MarkupReturn markupReturn = new MarkupToPDF.Controls.Parsing.MarkupParser.MarkupReturn();
25 da92cfb7 ljiyeon
                
26 91e84544 taeseongkim
        public async void KeyEventDownAction(object sender, KeyEventArgs e)
27 787a4489 KangIngu
        {
28 91e84544 taeseongkim
            //if (e.IsRepeat && !ViewerDataModel.Instance.IsPressCtrl && !ViewerDataModel.Instance.IsPressShift)
29
            //    return;
30
            await this.Dispatcher.InvokeAsync(() => {
31 787a4489 KangIngu
            switch (e.Key)
32
            {
33 5a65e058 taeseongkim
                    //강인구 추가
34 787a4489 KangIngu
                #region 단축키 선택
35
36 872b94b9 taeseongkim
                case Key.I:
37 5a65e058 taeseongkim
                    {
38
                        if (ViewerDataModel.Instance.IsPressCtrl && ViewerDataModel.Instance.IsPressShift)
39
                        {
40 c206d293 taeseongkim
                                if (!ViewerDataModel.Instance.IsAdmin)
41 872b94b9 taeseongkim
                                {
42 c206d293 taeseongkim
                                    EventHandler<WindowClosedEventArgs> closeEventHandler = (snd, evt) =>
43
                                    {
44
                                        if (evt.PromptResult == "markus01#")
45
                                        {
46
                                            ViewerDataModel.Instance.IsAdmin = true;
47
                                        }
48
                                    };
49
50
                                    var parameters = new DialogParameters()
51
                                    {
52
                                        ContentStyle = (Style)this.FindResource("RadPasswordPromptStyle"),
53
                                        Content = "Enter password: ",
54
                                        Closed = closeEventHandler
55
                                    };
56
57
                                    RadWindow.Prompt(parameters);
58 872b94b9 taeseongkim
                                }
59
                                else
60
                                {
61
                                    ViewerDataModel.Instance.IsAdmin = false;
62
                                }
63
                            }
64 5a65e058 taeseongkim
                    }
65
                    break;
66
67
                    #region 전체 선택(Ctrl + A)
68 787a4489 KangIngu
                case Key.A:
69
                    {
70 53393bae KangIngu
                        if (ViewerDataModel.Instance.IsPressCtrl && (App.ViewInfo.CreateFinalPDFPermission || App.ViewInfo.NewCommentPermission))
71 787a4489 KangIngu
                        {
72 f959ea6f humkyung
                            this.dzMainMenu.ConvertInkControlToPolygon();
73 787a4489 KangIngu
74
                            if (Common.ViewerDataModel.Instance.MarkupControls_USER.Count > 0)
75
                            {
76 b37ef4b3 humkyung
                                /// 전체 선택 시 선택된 토글 해제
77 787a4489 KangIngu
                                var TogList = this.dzTopMenu.Parent.ChildrenOfType<RadToggleButton>();
78
                                this.dzMainMenu.controlType = MarkupToPDF.Controls.Common.ControlType.None;
79
                                this.dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.None;
80
81 b37ef4b3 humkyung
                                /// 컨트롤을 그리는 도중일 경우 컨트롤 삭제
82 787a4489 KangIngu
                                ViewerDataModel.Instance.MarkupControls_USER.Remove(this.dzMainMenu.currentControl);
83
                                this.dzMainMenu.currentControl = null;
84
85
                                foreach (var tog in TogList)
86
                                {
87
                                    tog.IsChecked = false;
88
                                }
89 077896be humkyung
90 b37ef4b3 humkyung
                                SelectionSet.Instance.SelectAll();
91 787a4489 KangIngu
                            }
92
                        }
93
                    }
94
                    break;
95
                #endregion
96
97
                #region 복사하기(Ctrl + C)
98
                case Key.C:
99
                    {
100 b37ef4b3 humkyung
                        if (ViewerDataModel.Instance.IsPressCtrl) CopyCommand.Instance.Execute();
101 787a4489 KangIngu
                    }
102
                    break;
103
                #endregion
104
105
                #region 잘라내기(Ctrl + X)
106
                case Key.X:
107
                    {
108 b37ef4b3 humkyung
                        if (ViewerDataModel.Instance.IsPressCtrl) CutCommand.Instance.Execute();
109 787a4489 KangIngu
                    }
110
                    break;
111
                #endregion
112
113
                #region 붙여넣기(Ctrl + V)
114
                case Key.V:
115
                    {
116 53393bae KangIngu
                        if (ViewerDataModel.Instance.IsPressCtrl && (App.ViewInfo.CreateFinalPDFPermission || App.ViewInfo.NewCommentPermission))
117 787a4489 KangIngu
                        {
118 b37ef4b3 humkyung
                            PasteCommand.Instance.Execute();
119 37b65344 humkyung
                        }
120 787a4489 KangIngu
                    }
121
                    break;
122
                #endregion
123
124
                #region 저장하기(Ctrl + S)
125
                case Key.S:
126
                    {
127 37b65344 humkyung
                        if (ViewerDataModel.Instance.IsPressCtrl && (App.ViewInfo.CreateFinalPDFPermission || App.ViewInfo.NewCommentPermission))
128 787a4489 KangIngu
                        {
129
                            //컨트롤을 그리는 도중일 경우 컨트롤 삭제
130
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(this.dzMainMenu.currentControl);
131
                            this.dzMainMenu.currentControl = null;
132
133 316d0f5c KangIngu
                            //this.dzTopMenu.SaveEvent(null, null);
134 65eb8dd6 ljiyeon
                            if (App.ViewInfo.CreateFinalPDFPermission || App.ViewInfo.NewCommentPermission)
135
                            {
136 5ba8f2d5 taeseongkim
                                ViewerDataModel.Instance.IsMarkupUpdate = true;
137 cb5c7f06 humkyung
                                this.dzTopMenu.SaveEventCallback(new object(), null);
138 65eb8dd6 ljiyeon
                            }
139 6707a5c7 ljiyeon
140
                            //저장완료후 임시파일 삭제
141 a20d338f ljiyeon
                            TempFile.Remove();
142 37b65344 humkyung
                        }
143 787a4489 KangIngu
                    }
144
                    break;
145
                #endregion
146
147
                #region 프린트하기(Ctrl + P)
148
                case Key.P:
149
                    {
150
                        if (ViewerDataModel.Instance.IsPressCtrl)
151
                        {
152
                            this.dzTopMenu.Print_Start("Print");
153
                        }
154
                    }
155
                    break;
156
                #endregion
157
158
                #region Undo(Ctrl + Z)
159
                case Key.Z:
160
                    {
161 f816dd63 humkyung
                        if (ViewerDataModel.Instance.IsPressCtrl) UndoCommand.Instance.Execute();
162 787a4489 KangIngu
                    }
163
                    break;
164
                #endregion
165
166
                #region Redo(Ctrl + Y)
167
                case Key.Y:
168
                    {
169 f816dd63 humkyung
                        if (ViewerDataModel.Instance.IsPressCtrl) RedoCommand.Instance.Execute();
170 787a4489 KangIngu
                    }
171
                    break;
172
                #endregion
173
174
                #region 삭제하기(Delete)
175
                case Key.Delete:
176
                    {
177 8e6884a5 taeseongkim
                        List<CommentUserInfo> selectItems = SelectionSet.Instance.SelectedItems;
178
                        SelectionSet.Instance.UnSelect(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu);
179 f816dd63 humkyung
                        this.dzMainMenu.SelectLayer.Children.Clear();
180 8e6884a5 taeseongkim
181
                        DeleteCommand.Instance.Execute(selectItems);
182 787a4489 KangIngu
                    }
183
                    break;
184
                #endregion
185
186
                #region 선택된 컨트롤 모두 해제 하기(ESC)
187
                case Key.Escape:
188
                    {
189
                        //캡쳐모드 일 경우 초기화
190 37b65344 humkyung
                        if (this.dzMainMenu.mouseHandlingMode == IKCOM.MouseHandlingMode.Capture)
191 787a4489 KangIngu
                        {
192
                            //dzMainMenu.PN_Navi.IsEnabled = true;
193
                            this.dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.None;
194
                            ViewerDataModel.Instance.Capture_Opacity = 0;
195
                        }
196
197 b74a9c91 taeseongkim
                        if (Common.ViewerDataModel.Instance.SelectedControl == "Batch"
198
                                || Common.ViewerDataModel.Instance.SelectedControl == "MACRO")
199 787a4489 KangIngu
                        {
200
                            this.dzMainMenu.controlType = MarkupToPDF.Controls.Common.ControlType.None;
201
                            this.dzMainMenu.txtBatch.Visibility = Visibility.Collapsed;
202
                            this.dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.None;
203
                            var TogList = this.dzTopMenu.Parent.ChildrenOfType<RadToggleButton>();
204
                            foreach (var tog in TogList)
205
                            {
206
                                tog.IsChecked = false;
207
                            }
208
                        }
209
210 077896be humkyung
                        SelectionSet.Instance.UnSelect(this.dzMainMenu);
211 787a4489 KangIngu
212
                        //코멘트 그리는 도중일 경우 코멘트 삭제 및 초기화
213 49b217ad humkyung
                        if (this.dzMainMenu.currentControl != null)
214
                        {
215
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(this.dzMainMenu.currentControl);
216
                            this.dzMainMenu.currentControl = null;
217
                        }
218 787a4489 KangIngu
219 2eac4f76 KangIngu
                        //모든 컨트롤 초기화 하고 Selection모드로 변경
220
                        dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.Selecting;
221
                        dzMainMenu.controlType = MarkupToPDF.Controls.Common.ControlType.None;
222
223
                        var toggleList = this.ChildrenOfType<RadToggleButton>();
224
                        var toggleList2 = this.ChildrenOfType<RadRibbonToggleButton>();
225
226 17a22987 KangIngu
                        foreach (var item in toggleList)
227
                        {
228
                            if (item.Name == "btnSelection")
229 2eac4f76 KangIngu
                            {
230
                                item.IsChecked = true;
231
                            }
232 17a22987 KangIngu
                            else
233 2eac4f76 KangIngu
                            {
234
                                item.IsChecked = false;
235
                            }
236 17a22987 KangIngu
                        }
237 9f473fb7 KangIngu
                        dzMainMenu.isLeftMouseButtonDownOnWindow = false;
238 b643fcca taeseongkim
                            //foreach (var item in toggleList2)
239
                            //{
240
                            //    item.IsChecked = false;
241
                            //}
242
                            ViewerDataModel.Instance.SetAngleVisible(Visibility.Collapsed);
243 787a4489 KangIngu
                    }
244
                    break;
245 992a98b4 KangIngu
                #endregion
246
247
                #region FIND(Ctrl + F)
248
                case Key.F:
249
                    {
250 469b2bbf KangIngu
                        if (ViewerDataModel.Instance.IsPressCtrl)
251 992a98b4 KangIngu
                        {
252 469b2bbf KangIngu
                            if (!this.dzMainMenu.searchPane.IsPinned)
253 992a98b4 KangIngu
                            {
254 469b2bbf KangIngu
                                this.dzMainMenu.searchPane.IsPinned = true;
255
                                if (ViewerDataModel.Instance.searchPDF != null)
256
                                {
257 8bd25583 taeseongkim
                                    Application.Current.Dispatcher.BeginInvoke(new Action(() =>
258
                                    {
259
                                        this.dzMainMenu.searchPanel_Instance.tbSearch.Focusable = true;
260
                                        this.dzMainMenu.searchPanel_Instance.tbSearch.Focus();
261
                                        Keyboard.Focus(this.dzMainMenu.searchPanel_Instance.tbSearch);
262
                                    }), System.Windows.Threading.DispatcherPriority.Render);
263 469b2bbf KangIngu
                                }
264
                                else
265
                                {
266
                                    this.dzMainMenu.searchPanel_Instance.btnSearch.Focus();
267
                                }
268 992a98b4 KangIngu
                            }
269
                            else
270
                            {
271 469b2bbf KangIngu
                                this.dzMainMenu.searchPane.IsPinned = false;
272
                                this.dzMainMenu.searchPane.IsActive = false;
273
                                //this.dzMainMenu.searchPane.IsHidden = true;
274 992a98b4 KangIngu
                            }
275
                        }
276
                    }
277
                    break;
278
                #endregion
279 787a4489 KangIngu
280
                #endregion
281
282
                //강인구 추가
283
                #region Control Move
284 1edefbdf taeseongkim
                //case Key.NumPad4:
285
                //case Key.NumPad5:
286
                //case Key.NumPad6:
287
                //case Key.NumPad8:
288 d543f923 ljiyeon
                case Key.Right:
289
                case Key.Left:
290
                case Key.Up:
291
                case Key.Down:
292
                    {
293 d60f94ee taeseongkim
						if(System.Windows.Input.Keyboard.FocusedElement is System.Windows.Controls.TextBox)
294
						{
295
							return;
296
						}
297
						
298 91e84544 taeseongkim
                        if(sender is UIElement)
299
                        {
300
                            (sender as UIElement).SetValue(TabNavigationExtensions.IsTabStopProperty, false);
301
                        }
302
303 f87dfb18 taeseongkim
                        Point? MovePoint = null;
304
                        if ((e.Key == Key.NumPad5) || (e.Key == Key.Down))
305 d543f923 ljiyeon
                        {
306 f87dfb18 taeseongkim
                            MovePoint = new Point(0, 5);
307
                        }
308
                        else if ((e.Key == Key.NumPad8) || (e.Key == Key.Up))
309
                        {
310
                            MovePoint = new Point(0, -5);
311
                        }
312
                        else if ((e.Key == Key.NumPad4) || (e.Key == Key.Left))
313
                        {
314
                            MovePoint = new Point(-5, 0);
315
                        }
316
                        else if ((e.Key == Key.NumPad6) || (e.Key == Key.Right))
317
                        {
318
                            MovePoint = new Point(5, 0);
319
                        }
320
321
                        if (MovePoint != null && MovePoint.HasValue)
322
                        {
323
                            if (this.dzMainMenu.SelectLayer.Children.Count > 0 && ViewerDataModel.Instance.IsPressShift)
324 37b65344 humkyung
                            {
325 f87dfb18 taeseongkim
326
                                this.TranslateOrRotateItems(MovePoint.Value, this.dzMainMenu.rotate.Angle);
327 37b65344 humkyung
                            }
328 f87dfb18 taeseongkim
                            else
329 37b65344 humkyung
                            {
330 91e84544 taeseongkim
                                //if (ViewerDataModel.Instance.IsPressCtrl)
331
                                //{
332 f87dfb18 taeseongkim
                                    bool IsMovePossibility = false;
333
334
                                    var instance = ViewerDataModel.Instance;
335
336
                                    if ((e.Key == Key.NumPad5) || (e.Key == Key.Down))
337
                                    {
338 f06cce07 taeseongkim
                                        if (instance.ContentHeight > instance.ContentOffsetY + instance.ContentViewportHeight)
339 f87dfb18 taeseongkim
                                        {
340
                                            IsMovePossibility = true;
341
                                        }
342
                                    }
343
                                    else if ((e.Key == Key.NumPad8) || (e.Key == Key.Up))
344
                                    {
345
                                        if (0 < instance.ContentOffsetY)
346
                                        {
347
                                            IsMovePossibility = true;
348
                                        }
349
                                    }
350
                                    else if ((e.Key == Key.NumPad4) || (e.Key == Key.Left))
351
                                    {
352
                                        if (0 < instance.ContentOffsetX)
353
                                        {
354
                                            IsMovePossibility = true;
355
                                        }
356
                                    }
357
                                    else if ((e.Key == Key.NumPad6) || (e.Key == Key.Right))
358
                                    {
359 f06cce07 taeseongkim
                                        if (instance.ContentWidth > instance.ContentOffsetX + instance.ContentViewportWidth)
360 f87dfb18 taeseongkim
                                        {
361
                                            IsMovePossibility = true;
362
                                        }
363
                                    }
364
365
                                    if (IsMovePossibility)
366
                                    {
367
                                        Vector dragOffset = new Vector(MovePoint.Value.X * -10, MovePoint.Value.Y * -10);
368
369
                                        this.dzMainMenu.MoveZoomAndPanControl(dragOffset);
370
371
                                        this.dzMainMenu.MainDocumentPanel.Focus();
372
373
                                        System.Diagnostics.Debug.WriteLine(this.dzMainMenu.zoomAndPanControl.ContentOffsetX);
374
                                    }
375 91e84544 taeseongkim
                                //}
376 37b65344 humkyung
                            }
377 d543f923 ljiyeon
                        }
378
                    }
379
                    break;
380 da92cfb7 ljiyeon
                #endregion
381
                case Key.PageUp:
382 2d584f1a djkim
                    
383 da92cfb7 ljiyeon
                    this.dzMainMenu.pageNavigator.GotoPage(Convert.ToInt32(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.CurrentPage.PageNumber) - 1);
384
                    break;
385
                case Key.PageDown:
386
                    this.dzMainMenu.pageNavigator.GotoPage(Convert.ToInt32(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.CurrentPage.PageNumber) + 1);
387
                    break;
388 787a4489 KangIngu
            }
389 91e84544 taeseongkim
            });
390 787a4489 KangIngu
        }
391
392 f87dfb18 taeseongkim
393 37b65344 humkyung
        /// <summary>
394
        /// translate or rotate items by given pt and angle
395
        /// </summary>
396
        /// <author>humkyung</author>
397
        /// <date>2019.07.03</date>
398
        /// <param name="pt">control point</param>
399
        /// <param name="dAngle">angle in degree</param>
400
        private void TranslateOrRotateItems(Point pt, double dAngle)
401
        {
402
            Point control = MarkupToPDF.Controls.Common.MathSet.RotateAbout(new Point(0, 0), pt, dAngle);
403
            foreach (var item in this.dzMainMenu.SelectLayer.Children)
404
            {
405
                if (item.GetType().Name == "AdornerFinal")
406
                {
407
                    if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
408
                    {
409
                        (item as Controls.AdornerFinal).MoveRotate(new System.Windows.Controls.Primitives.DragDeltaEventArgs(control.X * 2, control.Y * 2));
410
                    }
411
                    else
412
                    {
413 6b6e937c taeseongkim
                        (item as Controls.AdornerFinal).TranslateItems(control.X, control.Y);
414 37b65344 humkyung
                    }
415
416
                }
417
            }
418
        }
419 787a4489 KangIngu
    }
420
}
클립보드 이미지 추가 (최대 크기: 500 MB)