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

Diff of /trunk/xmltv_parser/main.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 40 by william, Fri Mar 8 02:40:55 2013 UTC revision 49 by william, Fri Mar 8 05:20:12 2013 UTC
# Line 17  namespace xmltv_parser Line 17  namespace xmltv_parser
17  {  {
18      public partial class main : Form      public partial class main : Form
19      {      {
20            bool form_closing = false;
21            private IXMLTVRuntimeInstance xmltv;
22            private bool IsUnix
23            {
24                get { return System.Environment.OSVersion.Platform == PlatformID.Unix; }
25            }
26    
27          public main()          public main()
28          {          {
29              InitializeComponent();              InitializeComponent();
30              string log_path = Application.StartupPath;              string log_path = Application.StartupPath;
31              string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name);              string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name);
32              gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All, new EventHandler<LoggerOnFlushEventArgs>(Logger_OnFlush));              gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All, new EventHandler<LoggerOnFlushEventArgs>(Log_OnFlush));
33          }          }
34    
35          StringBuilder log_flusher = new StringBuilder();          StringBuilder log_flusher = new StringBuilder();
36          void Logger_OnFlush(object sender, LoggerOnFlushEventArgs e)          bool HAVE_CR = false;
37            void Log_OnFlush(object sender, LoggerOnFlushEventArgs e)
38          {          {
39              //Console.Write(e.Buffer);                      
40              log_flusher.Append(e.Buffer);              log_flusher.Append(e.Buffer);
41              if(e.Buffer == System.Environment.NewLine[0])              if (IsUnix)
42              {              {
43                  OnLogFlush(log_flusher.ToString().TrimEnd(new char[] { System.Environment.NewLine[0] }).TrimStart(new char[]{'\n'}));                  if (e.Buffer == System.Environment.NewLine[0])
44                  log_flusher = new StringBuilder();                  {
45                        OnLogFlush(log_flusher.ToString());
46                        log_flusher = new StringBuilder();
47                    }
48              }              }
49                else
50                {                
51                    if (e.Buffer == System.Environment.NewLine[0])
52                    {
53                        HAVE_CR = true;
54                    }
55                    if (e.Buffer == System.Environment.NewLine[1] && HAVE_CR)
56                    {
57                        OnLogFlush(log_flusher.ToString().TrimStart(new char[] { System.Environment.NewLine[1] }));
58                        log_flusher = new StringBuilder();
59                        HAVE_CR = false;
60                    }
61                }
62                
63          }          }
64            //bool txtLog_EnterMouse = false;
65    
66            private void txtLog_MouseLeave(object sender, EventArgs e)
67            {
68                //txtLog_EnterMouse = false;
69            }
70            private void txtLog_MouseEnter(object sender, EventArgs e)
71            {
72                //txtLog_EnterMouse = true;
73            }
74          void OnLogFlush(string logmessage)          void OnLogFlush(string logmessage)
75          {          {
76              txtStatus.Text = logmessage;              if (this.IsDisposed) { return; }
77              Thread.Sleep(100);              Console.Write(logmessage);        
78                txtStatus.Text = logmessage.Replace(System.Environment.NewLine, "");
79                txtLog.AppendText(logmessage);
80    
81                //if (!txtLog_EnterMouse)
82                //{
83                txtLog.SelectionStart = txtLog.Text.Length; //Set the current caret position to the end
84                txtLog.ScrollToCaret(); //Now scroll it automatically
85                //}
86                //Thread.Sleep(100);
87                Application.DoEvents();
88          }          }
89    
90          //List<IXMLTVChannel> Channels;          //List<IXMLTVChannel> Channels;
# Line 59  namespace xmltv_parser Line 103  namespace xmltv_parser
103    
104          void LoadXMLTVShcedule(string schedule_xml)          void LoadXMLTVShcedule(string schedule_xml)
105          {          {
106              //var xmltv_loader = XMLTV.CreateLoader(schedule_xml);              XMLTV.CreateInstance(schedule_xml, new EventHandler<CancelEventArgs>(xmltv_cancelevent));
107              //var xmltv_parser = XMLTV.CreateParser(xmltv_loader);              xmltv = XMLTV.GetInstance();
             //var p = XMLTV.GetParser(xmltv_parser);  
   
             ////var channel_count = p.Channels.Values.Count;  
             ////Channels = p.Channels.Values.ToList().GetRange(0, channel_count).ToList();  
             //var program_count = p.Programs.Values.Count;  
             //var program_list = p.Programs.Values.ToList().OrderBy(s => s.Start);  
             ////Programs = program_list(0, program_count).ToList();  
             //Programs = new List<IXMLTVProgram>(program_list.ToArray());  
   
             IXMLTVRuntimeInstance xmltv = XMLTV.CreateInstance(schedule_xml);  
108              var program_count = xmltv.Programs.Values.Count;              var program_count = xmltv.Programs.Values.Count;
109              var program_list = xmltv.Programs.Values.ToList().OrderBy(s => s.Start);              var program_list = xmltv.Programs.Values.ToList().OrderBy(s => s.Start);
110              //Programs = program_list(0, program_count).ToList();              //Programs = program_list(0, program_count).ToList();
111              Programs = new List<IXMLTVProgram>(program_list.ToArray());              Programs = new List<IXMLTVProgram>(program_list.ToArray());
112          }          }
113    
114            void xmltv_cancelevent(object sender, CancelEventArgs e)
115            {
116                if (form_closing)
117                {
118                    e.Cancel = true;
119                }
120            }
121    
122          void CreateControls()          void CreateControls()
123          {          {
124              foreach (var program in Programs)              foreach (var program in Programs)
# Line 93  namespace xmltv_parser Line 135  namespace xmltv_parser
135    
136          private void mnuItemOpenXMLTVFile_Click(object sender, EventArgs e)          private void mnuItemOpenXMLTVFile_Click(object sender, EventArgs e)
137          {          {
138                ClearLocalLog();
139              //LoadXMLTVShcedule("20130307_continuum_schedule.xml");              //LoadXMLTVShcedule("20130307_continuum_schedule.xml");
140              var result = xmltv_file_chooser.ShowDialog();              var result = xmltv_file_chooser.ShowDialog();
141              if (result != DialogResult.OK) return;              if (result != DialogResult.OK) return;
# Line 104  namespace xmltv_parser Line 147  namespace xmltv_parser
147          {          {
148              var result = xmltv_program_data_loader.ShowDialog();              var result = xmltv_program_data_loader.ShowDialog();
149              if (result != DialogResult.OK) return;              if (result != DialogResult.OK) return;
150              try              string filename = xmltv_program_data_loader.FileName;
151                if (!XMLTV.GetSerializer().DeSerialize(filename, out xmltv))
152              {              {
153                  using (Stream stream = File.Open(xmltv_program_data_loader.FileName, FileMode.Open))                  MessageBox.Show("Failed to load data - check log", "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error);
154                  {                  return;
                     try  
                     {  
                         BinaryFormatter bin = new BinaryFormatter();  
                         Programs = (List<IXMLTVProgram>)bin.Deserialize(stream);  
                     }  
                     catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }  
                 }  
155              }              }
             catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }  
156              MessageBox.Show("Successfully loaded data", "Successfully loaded data", MessageBoxButtons.OK, MessageBoxIcon.Information);              MessageBox.Show("Successfully loaded data", "Successfully loaded data", MessageBoxButtons.OK, MessageBoxIcon.Information);
157              CreateControls();              CreateControls();
158          }          }
# Line 125  namespace xmltv_parser Line 161  namespace xmltv_parser
161          {          {
162              var result = xmltv_program_data_saver.ShowDialog();              var result = xmltv_program_data_saver.ShowDialog();
163              if (result != DialogResult.OK) return;              if (result != DialogResult.OK) return;
164              try              string filename = xmltv_program_data_saver.FileName;
165                if (!XMLTV.GetSerializer().Serialize(filename))
166              {              {
167                  using (Stream stream = File.Open(xmltv_program_data_saver.FileName, FileMode.Create))                  MessageBox.Show("Failed to save data - check log", "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error);
168                  {                  return;
                     try  
                     {  
                         BinaryFormatter bin = new BinaryFormatter();  
                         bin.Serialize(stream, Programs);  
                     }  
                     catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }  
                 }  
169              }              }
             catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }  
170              MessageBox.Show("Successfully saved data", "Successfully saved data", MessageBoxButtons.OK, MessageBoxIcon.Information);              MessageBox.Show("Successfully saved data", "Successfully saved data", MessageBoxButtons.OK, MessageBoxIcon.Information);
171          }          }
172    
173            private void main_FormClosing(object sender, FormClosingEventArgs e)
174            {
175                form_closing = true;
176            }
177    
178            private void mnuItemClearLocalLog_Click(object sender, EventArgs e)
179            {
180                ClearLocalLog();
181            }
182            private void ClearLocalLog()
183            {
184                var log_top_entry = txtLog.Lines.FirstOrDefault();
185                txtLog.Clear();
186                if (!string.IsNullOrEmpty(log_top_entry))
187                {
188                    txtLog.AppendText(log_top_entry);
189                }
190            }
191    
192      }      }
193  }  }
194    

Legend:
Removed from v.40  
changed lines
  Added in v.49

  ViewVC Help
Powered by ViewVC 1.1.22