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

Contents of /trunk/xmltv_parser/main.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 42 - (show annotations) (download)
Fri Mar 8 03:01:48 2013 UTC (6 years, 7 months ago) by william
File size: 7118 byte(s)
+ write logmessages to console
+ write logmesages to status strip control
* remove newlines as needed

1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Linq;
6 using System.Drawing;
7 using System.Text;
8 using System.Windows.Forms;
9 using libxmltv.Core;
10 using Enterprise.Logging;
11 using libxmltv.Interfaces;
12 using System.IO;
13 using System.Runtime.Serialization.Formatters.Binary;
14 using System.Threading;
15
16 namespace xmltv_parser
17 {
18 public partial class main : Form
19 {
20 private bool IsUnix
21 {
22 get { return System.Environment.OSVersion.Platform == PlatformID.Unix; }
23 }
24
25 public main()
26 {
27 InitializeComponent();
28 string log_path = Application.StartupPath;
29 string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name);
30 gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All, new EventHandler<LoggerOnFlushEventArgs>(Log_OnFlush));
31 }
32
33 StringBuilder log_flusher = new StringBuilder();
34 bool HAVE_CR = false;
35 void Log_OnFlush(object sender, LoggerOnFlushEventArgs e)
36 {
37
38 log_flusher.Append(e.Buffer);
39 if (IsUnix)
40 {
41 if (e.Buffer == System.Environment.NewLine[0])
42 {
43 OnLogFlush(log_flusher.ToString());
44 log_flusher = new StringBuilder();
45 }
46 }
47 else
48 {
49 if (e.Buffer == System.Environment.NewLine[0])
50 {
51 HAVE_CR = true;
52 }
53 if (e.Buffer == System.Environment.NewLine[1] && HAVE_CR)
54 {
55 OnLogFlush(log_flusher.ToString().TrimStart(new char[] { System.Environment.NewLine[1] }));
56 log_flusher = new StringBuilder();
57 HAVE_CR = false;
58 }
59 }
60
61 }
62
63 void OnLogFlush(string logmessage)
64 {
65 Console.Write(logmessage);
66 txtStatus.Text = logmessage.Replace(System.Environment.NewLine, "");
67 Thread.Sleep(100);
68 }
69
70 //List<IXMLTVChannel> Channels;
71 List<IXMLTVProgram> Programs;
72
73 private void main_Load(object sender, EventArgs e)
74 {
75
76 }
77 private void main_Shown(object sender, EventArgs e)
78 {
79 //libxmltv.Core.XMLTV
80
81 }
82
83
84 void LoadXMLTVShcedule(string schedule_xml)
85 {
86 //var xmltv_loader = XMLTV.CreateLoader(schedule_xml);
87 //var xmltv_parser = XMLTV.CreateParser(xmltv_loader);
88 //var p = XMLTV.GetParser(xmltv_parser);
89
90 ////var channel_count = p.Channels.Values.Count;
91 ////Channels = p.Channels.Values.ToList().GetRange(0, channel_count).ToList();
92 //var program_count = p.Programs.Values.Count;
93 //var program_list = p.Programs.Values.ToList().OrderBy(s => s.Start);
94 ////Programs = program_list(0, program_count).ToList();
95 //Programs = new List<IXMLTVProgram>(program_list.ToArray());
96
97 IXMLTVRuntimeInstance xmltv = XMLTV.CreateInstance(schedule_xml);
98 var program_count = xmltv.Programs.Values.Count;
99 var program_list = xmltv.Programs.Values.ToList().OrderBy(s => s.Start);
100 //Programs = program_list(0, program_count).ToList();
101 Programs = new List<IXMLTVProgram>(program_list.ToArray());
102 }
103
104 void CreateControls()
105 {
106 foreach (var program in Programs)
107 {
108 ListViewItem li = new ListViewItem(string.Format("{0} {1}", program.Channel.Number, program.Channel.CallSign));
109 li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Title));
110 li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.SubTitle));
111 li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Description));
112 li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Start.ToString("yyyy/MM/dd hh:mm tt")));
113 li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Stop.ToString("yyyy/MM/dd hh:mm tt")));
114 lstPrograms.Items.Add(li);
115 }
116 }
117
118 private void mnuItemOpenXMLTVFile_Click(object sender, EventArgs e)
119 {
120 //LoadXMLTVShcedule("20130307_continuum_schedule.xml");
121 var result = xmltv_file_chooser.ShowDialog();
122 if (result != DialogResult.OK) return;
123 LoadXMLTVShcedule(xmltv_file_chooser.FileName);
124 CreateControls();
125 }
126
127 private void mnuItemOpenSavedData_Click(object sender, EventArgs e)
128 {
129 var result = xmltv_program_data_loader.ShowDialog();
130 if (result != DialogResult.OK) return;
131 try
132 {
133 using (Stream stream = File.Open(xmltv_program_data_loader.FileName, FileMode.Open))
134 {
135 try
136 {
137 BinaryFormatter bin = new BinaryFormatter();
138 Programs = (List<IXMLTVProgram>)bin.Deserialize(stream);
139 }
140 catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
141 }
142 }
143 catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
144 MessageBox.Show("Successfully loaded data", "Successfully loaded data", MessageBoxButtons.OK, MessageBoxIcon.Information);
145 CreateControls();
146 }
147
148 private void mnuItemSaveData_Click(object sender, EventArgs e)
149 {
150 var result = xmltv_program_data_saver.ShowDialog();
151 if (result != DialogResult.OK) return;
152 try
153 {
154 using (Stream stream = File.Open(xmltv_program_data_saver.FileName, FileMode.Create))
155 {
156 try
157 {
158 BinaryFormatter bin = new BinaryFormatter();
159 bin.Serialize(stream, Programs);
160 }
161 catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
162 }
163 }
164 catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
165 MessageBox.Show("Successfully saved data", "Successfully saved data", MessageBoxButtons.OK, MessageBoxIcon.Information);
166 }
167 }
168 }
169

  ViewVC Help
Powered by ViewVC 1.1.22