source: trunk/PKCS1/OnlineHelp/WindowOnlineHelp.xaml.cs @ 1650

Last change on this file since 1650 was 1650, checked in by schomburg, 11 years ago

initial commit of PKCS1 Plugin

File size: 4.6 KB
RevLine 
[1650]1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14using System.Reflection;
15using System.IO;
16
17namespace PKCS1.OnlineHelp
18{
19    public delegate void Close();
20
21    /// <summary>
22    /// Interaktionslogik für WindowOnlineHelp.xaml
23    /// </summary>
24    public partial class WindowOnlineHelp : Window
25    {
26        private static readonly string HELPPROTOCOL = "help://";
27        //private static readonly string IMGREGEX = "<img src=\"(.+)\".+>";
28        //private static readonly string IMGSRCREGEX = "src=\".+\" ";
29
30        private int m_actualPage;
31        IList<string> m_History;
32        private System.Windows.Forms.WebBrowser m_Browser = null;
33        public event Close OnClose;
34
35
36        public WindowOnlineHelp()
37        {
38            InitializeComponent();
39            m_Browser = new System.Windows.Forms.WebBrowser();
40            //m_Browser.Dock = DockStyle.Fill;
41            m_Browser.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(m_Browser_Navigating);
42            webbrowserhost.Child = m_Browser;
43            m_actualPage = -1;
44            m_History = new List<string>();
45        }
46
47        void m_Browser_Navigating(object sender, System.Windows.Forms.WebBrowserNavigatingEventArgs e)
48        {
49            string url = e.Url.OriginalString;
50            if (!string.IsNullOrEmpty(url))
51            {
52                if (url.StartsWith(HELPPROTOCOL))
53                {
54                    url = url.Substring(HELPPROTOCOL.Length, url.Length - HELPPROTOCOL.Length);
55                    if (url.EndsWith("/"))
56                        url = url.Substring(0, url.Length - 1);
57                    NavigateTo(url);
58                    e.Cancel = true;
59                }
60
61            }
62        }
63
64        public void NavigateTo(string action)
65        {
66            string text = OnlineHelpAccess.HelpResourceManager.GetString(action);
67            if (!string.IsNullOrEmpty(text))
68            {
69                try
70                {
71                    ShowHelp(text);
72                    m_actualPage++;
73                    m_History.Insert(m_actualPage, action);
74                    for (int i = 2; i < m_History.Count; i++)
75                        m_History.RemoveAt(i);
76                }
77                catch { }
78            }
79            SetEnableNavigationButtons();
80        }
81
82        private void ShowHelp(string text)
83        {
84            string htmltemplate = PKCS1.Properties.Resources.template;
85            text = htmltemplate.Replace("#content#", text);
86            //text = SetImages(text);
87            m_Browser.DocumentText = text;
88            this.Show();
89            this.Activate();
90        }
91
92        private void btnHistoryBack_Click(object sender, RoutedEventArgs e)
93        {
94            if (m_actualPage > -1)
95            {
96                string text = OnlineHelpAccess.HelpResourceManager.GetString(m_History[m_actualPage - 1]);
97                if (!string.IsNullOrEmpty(text))
98                {
99                    ShowHelp(text);
100                    m_actualPage--;
101                }
102            }
103            SetEnableNavigationButtons();
104        }
105
106        private void btnHistoryForward_Click(object sender, RoutedEventArgs e)
107        {
108            if (m_actualPage < m_History.Count - 1)
109            {
110                string text = OnlineHelpAccess.HelpResourceManager.GetString(m_History[m_actualPage + 1]);
111                if (!string.IsNullOrEmpty(text))
112                {
113                    ShowHelp(text);
114                    m_actualPage++;
115                }
116            }
117            SetEnableNavigationButtons();
118        }
119
120        private void SetEnableNavigationButtons()
121        {
122            btnHistoryBack.IsEnabled = m_History.Count > 0 && m_actualPage > 0;
123            btnHistoryForward.IsEnabled = m_History.Count == 2 && m_actualPage == 0;
124        }
125
126        private void btnClose_Click(object sender, RoutedEventArgs e)
127        {
128            Close();
129        }
130
131        protected override void OnClosed(EventArgs e)
132        {
133            base.OnClosed(e);
134            if (OnClose != null) OnClose();
135        }
136
137        protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
138        {
139            base.OnKeyDown(e);
140            if (e.Key == Key.Escape) this.Close();
141        }
142    }
143}
Note: See TracBrowser for help on using the repository browser.