/[xmltv_parser]/trunk/xmltv_parser/main.cs
ViewVC logotype

Annotation of /trunk/xmltv_parser/main.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 120 - (hide annotations) (download)
Sun Mar 10 18:19:12 2013 UTC (7 years, 4 months ago) by william
File size: 13730 byte(s)

1 william 71 //#define DISABLE_RELEASE_MODE_KLOGLEVEL_DEBUG // when defined will turn off kLogLevel_Debug messages, in release mode
2 william 69 //#define DISABLE_DEBUG_MODE_KLOGLEVEL_VERBOSE_DEBUG // when defined will turn off kLogLevel_VerboseDebug message, in debug mode
3     using System;
4 william 2 using System.Collections.Generic;
5     using System.ComponentModel;
6     using System.Data;
7 william 29 using System.Linq;
8 william 2 using System.Drawing;
9     using System.Text;
10     using System.Windows.Forms;
11 william 11 using libxmltv.Core;
12 william 13 using Enterprise.Logging;
13 william 29 using libxmltv.Interfaces;
14 william 31 using System.IO;
15     using System.Runtime.Serialization.Formatters.Binary;
16 william 40 using System.Threading;
17 william 79 using System.Diagnostics;
18 william 110 using System.Xml.Linq;
19 william 2
20     namespace xmltv_parser
21     {
22 william 50
23 william 13 public partial class main : Form
24 william 2 {
25 william 13 public main()
26 william 2 {
27     InitializeComponent();
28 william 62 ListViewSorter Sorter = new ListViewSorter();
29 william 120 //lstPrograms.ListViewItemSorter = Sorter;
30 william 13 string log_path = Application.StartupPath;
31     string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name);
32 william 59 gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All_NoProgress, new EventHandler<LoggerOnFlushEventArgs>(Log_OnFlush));
33 william 67 #if DEBUG
34     LogLevel gLevel = gLog.LogLevel;
35 william 69 #if DISABLE_DEBUG_MODE_KLOGLEVEL_VERBOSE_DEBUG
36     gLevel &= ~LogLevel.kLogLevel_VerboseDebug;
37     #else
38     gLevel |= LogLevel.kLogLevel_VerboseDebug;
39     #endif
40     gLevel |= LogLevel.kLogLevel_Debug;
41 william 67 gLog.SetLogLevel(gLevel);
42     #else
43 william 68 LogLevel gLevel = LogLevel.kLogLevel_Default; // set the default log level: Info, Warn, Error, Debug
44     // it is OK for kLogLevel_Debug to be set in Release mode ... must of the chatty messages are from kLogLevel_VerboseDebug
45 william 69 #if DISABLE_RELEASE_MODE_KLOGLEVEL_DEBUG
46     gLevel &= ~LogLevel.kLogLevel_Debug;
47     #else
48     gLevel |= LogLevel.kLogLevel_Debug;
49     #endif
50 william 70 gLevel &= ~LogLevel.kLogLevel_VerboseDebug; // ensure this is not set, ever in release mode
51 william 67 gLog.SetLogLevel(gLevel);
52     #endif
53    
54    
55 william 59 gLog.ReportProgressEvent += new EventHandler<ReportProgressEventArgs>(gLog_ReportProgress);
56 william 2 }
57 william 11
58 william 59 private void ReportProgress(int progress)
59     {
60 william 84 if (this.InvokeRequired)
61 william 59 {
62 william 84 try
63 william 59 {
64 william 84 this.Invoke((Action)(delegate { ReportProgress(progress); }));
65 william 59 }
66 william 84 catch { }
67     return;
68 william 108 }
69 william 114 if (progress_status != null && !this.IsDisposed)
70 william 108 progress_status.Value = progress;
71 william 59 }
72     private void gLog_ReportProgress(object sender, ReportProgressEventArgs e) { ReportProgress(e.Progress); }
73    
74 william 40 StringBuilder log_flusher = new StringBuilder();
75 william 61
76 william 41 void Log_OnFlush(object sender, LoggerOnFlushEventArgs e)
77 william 40 {
78 william 54 OnLogFlush(e.Buffer);
79 william 40 }
80 william 47 //bool txtLog_EnterMouse = false;
81 william 40
82 william 47 private void txtLog_MouseLeave(object sender, EventArgs e)
83     {
84     //txtLog_EnterMouse = false;
85     }
86     private void txtLog_MouseEnter(object sender, EventArgs e)
87     {
88     //txtLog_EnterMouse = true;
89     }
90 william 40 void OnLogFlush(string logmessage)
91     {
92 william 47 if (this.IsDisposed) { return; }
93 william 54 UpdateStatus(logmessage);
94     UpdateLogOutput(logmessage);
95     Application.DoEvents();
96     }
97    
98     void UpdateStatus(string logmessage)
99 william 61 {
100 william 72 if (this.InvokeRequired)
101     {
102     try
103     {
104     this.Invoke((Action)(delegate { UpdateStatus(logmessage); }));
105     }
106     catch { }
107     return;
108     }
109 william 42 txtStatus.Text = logmessage.Replace(System.Environment.NewLine, "");
110 william 54 }
111     void UpdateLogOutput(string logmessage)
112     {
113 william 72 if (this.InvokeRequired)
114 william 54 {
115 william 56 try
116     {
117 william 72 this.Invoke((Action)(delegate { UpdateLogOutput(logmessage); }));
118 william 56 }
119     catch { }
120 william 54 return;
121     }
122 william 47 txtLog.AppendText(logmessage);
123     txtLog.SelectionStart = txtLog.Text.Length; //Set the current caret position to the end
124     txtLog.ScrollToCaret(); //Now scroll it automatically
125 william 40 }
126    
127 william 29 //List<IXMLTVChannel> Channels;
128 william 117 //List<IXMLTVProgram> Programs;
129 william 29
130 william 16 private void main_Load(object sender, EventArgs e)
131 william 11 {
132    
133     }
134 william 16 private void main_Shown(object sender, EventArgs e)
135 william 30 {
136 william 52
137 william 29 }
138    
139    
140     void LoadXMLTVShcedule(string schedule_xml)
141 william 11 {
142 william 117 XMLTV.Create(schedule_xml, new EventHandler<EventArgs>(XMLTV_OnInstanceCreated));
143 william 11 }
144 william 29
145 william 54 void XMLTV_OnInstanceCreated(object sender, EventArgs e)
146 william 46 {
147 william 117 //ReportProgress(0);
148     //var instance = XMLTV.GetInstance();
149     //if (instance != null)
150     //{
151     // var program_count = instance.Programs.Count;
152     // var program_list = instance.Programs.ToList().OrderBy(s => s.MetaData[XMLTVConstants.Programs.ProgramStart].ToString());
153     // //Programs = program_list(0, program_count).ToList();
154     // Programs = new List<IXMLTVProgram>(program_list.ToArray());
155     //}
156     //CreateControls();
157 william 118
158     CreateControls();
159 william 46 }
160    
161 william 54
162     //void xmltv_cancelevent(object sender, CancelEventArgs e)
163     //{
164     // if (form_closing)
165     // {
166     // e.Cancel = true;
167     // }
168     //}
169    
170 william 29 void CreateControls()
171     {
172 william 54 if (this.InvokeRequired)
173     {
174     this.Invoke((Action)(delegate { CreateControls(); }));
175     return;
176     }
177 william 117 //List<ListViewItem> items = new List<ListViewItem>();
178     //foreach (var program in Programs)
179     //{
180     // IXMLTVChannel Channel = null;
181     // var instance = XMLTV.GetInstance();
182     // var id = program.MetaData[XMLTVConstants.Programs.ProgramChannelId].ToString();
183     // Channel = instance.Channels.Find(m => m.Id == id);
184     // //ListViewItem li = new ListViewItem(string.Format("{0} {1}", Channel.Number, Channel.CallSign));
185     // if (Channel == null)
186     // {
187     // throw new NullReferenceException(string.Format("Could not find any channel with an id of '{0}'", id));
188     // }
189     // if (Channel.MetaData.Count() == 0) { throw new ArgumentOutOfRangeException(string.Format("No metadata available for channel id '{0}'", Channel.Id)); }
190     // var channel_names = Channel.MetaData[XMLTVConstants.Channels.ChannelDisplayName];
191     // string channel_name = string.Empty;
192     // if (channel_names.Count() == 0) { throw new ArgumentOutOfRangeException(string.Format("No properties named '{0}' found for channel id '{1}'", XMLTVConstants.Channels.ChannelDisplayName, Channel.Id)); }
193     // else
194     // {
195     // var channame = channel_names.FirstOrDefault();
196     // if (channame == null) { throw new ArgumentNullException("channame", string.Format("Unable to get channel display name for channel id '{0}'", Channel.Id)); }
197     // else
198     // {
199     // if (channame.Value == null) { throw new ArgumentNullException("channame.Value", string.Format("Unable to get channel display name for channel id '{0}'", Channel.Id)); }
200     // else { channel_name = channame.Value.ToString(); }
201     // }
202     // }
203     // ListViewItem li = new ListViewItem(string.Format("{0}", channel_name));
204     // li.Tag = program;
205     // li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.MetaData[XMLTVConstants.Programs.ProgramTitle].ToString()));
206     // li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.MetaData[XMLTVConstants.Programs.ProgramSubTitle].ToString()));
207     // li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.MetaData[XMLTVConstants.Programs.ProgramDescription].ToString()));
208     // li.SubItems.Add(new ListViewItem.ListViewSubItem(li, ((DateTime)program.MetaData[XMLTVConstants.Programs.ProgramStart]).ToString("yyyy/MM/dd hh:mm tt")));
209     // li.SubItems.Add(new ListViewItem.ListViewSubItem(li, ((DateTime)program.MetaData[XMLTVConstants.Programs.ProgramStop]).ToString("yyyy/MM/dd hh:mm tt")));
210     // //lstPrograms.Items.Add(li);
211     // items.Add(li);
212     //}
213 william 60
214 william 117 //lstPrograms.Items.AddRange(items.ToArray());
215 william 118
216 william 120 //var source = new BindingSource();
217     //source.DataSource = XMLTV.GetPrograms();
218     //dataGrid.DataSource = source;
219 william 118
220 william 120 dataGrid.DataSource = XMLTV.CreateBindingSourceForData(XMLTV.GetPrograms());
221    
222 william 29 }
223 william 30
224     private void mnuItemOpenXMLTVFile_Click(object sender, EventArgs e)
225 william 52 {
226     try
227     {
228 william 120 //lstPrograms.Items.Clear();
229 william 52 //LoadXMLTVShcedule("20130307_continuum_schedule.xml");
230     var result = xmltv_file_chooser.ShowDialog();
231     if (result != DialogResult.OK) return;
232     ClearLocalLog();
233     LoadXMLTVShcedule(xmltv_file_chooser.FileName);
234 william 54 //CreateControls();
235 william 52 }
236     catch (Exception ex)
237     {
238 william 55 gLog.Error.WriteLine(ex.ToString());
239 william 52 }
240 william 30 }
241    
242 william 115 private void DeserializeDataFromFile(object filename)
243     {
244 william 118 if (filename == null) { throw new ArgumentNullException("filename", "cannot be null"); }
245     XMLTV.Load(filename.ToString(), new EventHandler<EventArgs>(XMLTV_OnInstanceCreated));
246 william 115 }
247    
248 william 30 private void mnuItemOpenSavedData_Click(object sender, EventArgs e)
249     {
250 william 52 try
251 william 31 {
252 william 52 var result = xmltv_program_data_loader.ShowDialog();
253     if (result != DialogResult.OK) return;
254     string filename = xmltv_program_data_loader.FileName;
255 william 115 Thread worker = new Thread(new ParameterizedThreadStart(DeserializeDataFromFile)); worker.Start(filename);
256 william 31 }
257 william 52 catch (Exception ex)
258     {
259 william 55 gLog.Error.WriteLine(ex.ToString());
260 william 52 }
261 william 30 }
262 william 116 private void DeserializeDataToFile(object filename)
263     {
264     if (filename == null) { throw new ArgumentNullException("filename", "cannot be null"); }
265 william 118 XMLTV.Save(filename.ToString());
266 william 116 }
267 william 30 private void mnuItemSaveData_Click(object sender, EventArgs e)
268     {
269 william 52 try
270 william 31 {
271 william 52 var result = xmltv_program_data_saver.ShowDialog();
272     if (result != DialogResult.OK) return;
273     string filename = xmltv_program_data_saver.FileName;
274 william 116 Thread worker = new Thread(new ParameterizedThreadStart(DeserializeDataToFile)); worker.Start(filename);
275 william 31 }
276 william 52 catch (Exception ex)
277     {
278 william 55 gLog.Error.WriteLine(ex.ToString());
279 william 52 }
280 william 30 }
281 william 44
282     private void main_FormClosing(object sender, FormClosingEventArgs e)
283     {
284 william 54 try
285     {
286 william 117 XMLTV.Destroy();
287 william 54 }
288     catch { }
289 william 44 }
290 william 47
291     private void mnuItemClearLocalLog_Click(object sender, EventArgs e)
292     {
293     ClearLocalLog();
294     }
295     private void ClearLocalLog()
296     {
297     var log_top_entry = txtLog.Lines.FirstOrDefault();
298     txtLog.Clear();
299     if (!string.IsNullOrEmpty(log_top_entry))
300     {
301     txtLog.AppendText(log_top_entry);
302     }
303     }
304    
305 william 56 private void mnuItemExit_Click(object sender, EventArgs e)
306     {
307     this.Close();
308     }
309    
310 william 60 private void lstPrograms_SelectedIndexChanged(object sender, EventArgs e)
311     {
312 william 117 //IXMLTVProgram program = null;
313     //var item = lstPrograms.SelectedItems[0];
314     //int selected_index = lstPrograms.Items.IndexOf(item);
315     //program = (item.Tag as IXMLTVProgram);
316     //gLog.Debug.WriteLine("Selected ListViewItem at index: {0}", selected_index);
317     //if (program == null) { return; }
318     //txtStatus.Text = program.ToString();
319     ////gLog.Debug.WriteLine(program.ToString());
320 william 61
321 william 60 }
322    
323 william 61 private void lstPrograms_ColumnClick(object sender, ColumnClickEventArgs e)
324     {
325 william 117 //if (!(lstPrograms.ListViewItemSorter is ListViewSorter)) return;
326     //ListViewSorter Sorter = (ListViewSorter)lstPrograms.ListViewItemSorter;
327     //Sorter.LastColumn = Sorter.CurrentColumn;
328     //Sorter.CurrentColumn = e.Column;
329     //if (Sorter.LastColumn == e.Column)
330     //{
331     // if (lstPrograms.Sorting == SortOrder.Ascending) { lstPrograms.Sorting = SortOrder.Descending; }
332     // else { lstPrograms.Sorting = SortOrder.Ascending; }
333     //}
334     //else { lstPrograms.Sorting = SortOrder.Descending; }
335     //lstPrograms.Sort();
336 william 61 }
337 william 2 }
338     }
339 william 29

  ViewVC Help
Powered by ViewVC 1.1.22