using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace FPER { public partial class Form_Debug : Form { // 디버그 창 표시 delegate void DebugEditBox_SetTextCallback(string Data); // 락킹 public static Object lockInfo = new Object(); public Form_Debug() { InitializeComponent(); // 로그를 출력하는 이벤트 _Event.Log_SendMessage_Event += new _Event.Log_SendMessage_Handler(_Event_DebugView_SendMessage_Event); } // 폼로드 private void Form_Debug_Load(object sender, EventArgs e) { ComboBox_FontSize.Text = "10"; ComboBox_Color.Text = "White"; } // 폼클로우즈 private void Form_Debug_FormClosed(object sender, FormClosedEventArgs e) { _Data.Enable_Form_Debug = false; _Data.Enable_Log = false; // 로그를 출력하는 이벤트 _Event.Log_SendMessage_Event -= new _Event.Log_SendMessage_Handler(_Event_DebugView_SendMessage_Event); } // 디버그 메세지 이벤트 public void _Event_DebugView_SendMessage_Event(string Data) { try { if (this.CheckBox_LogEnable.Checked == true) { if (this.editBox_Log.InvokeRequired) { DebugEditBox_SetTextCallback d = new DebugEditBox_SetTextCallback(_Event_DebugView_SendMessage_Event); this.Invoke(d, new object[] { Data }); } else { lock (lockInfo) { if (this.editBox_Log.Text.Length > 100000) this.editBox_Log.Clear(); this.editBox_Log.AppendText("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "]" + " " + Data + "\r\n"); } } } } catch { ; } } // 클리어 버튼 private void Button_Clear_Click(object sender, EventArgs e) { this.editBox_Log.Text = null; } // 저장 버튼 private void Button_Save_Click(object sender, EventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "(*.txt)|*.txt"; dialog.FileName = Environment.CurrentDirectory + "\\" + "Log_Error.txt"; if (dialog.ShowDialog() == DialogResult.OK) { Write_Log(dialog.FileName, this.editBox_Log.Text); //_Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, "OK", 250, 150, "로그를 저장하였습니다", 0); } } public static void Write_Log(string path, string txt) { try { if (path != null) path = Environment.CurrentDirectory + "\\" + "Log_Error.txt"; if (!File.Exists(path)) { // Create a file to write to. string createText = txt + "\r\n";// Environment.NewLine; File.WriteAllText(path, createText); } else { // This text is always added, making the file longer over time // if it is not deleted. string appendText = txt + "\r\n"; File.AppendAllText(path, appendText); } } catch // (Exception e) { // LOG //_Event.DebugView_SendMessage_Write(e.ToString()); } } // 복사 버튼 private void Button_Copy_Click(object sender, EventArgs e) { Clipboard.Clear(); Clipboard.SetText(this.editBox_Log.Text); //_Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, "OK", 350, 150, "로그를 클립보드에 저장하였습니다", 0); } private void ComboBox_FontSize_SelectedIndexChanged(object sender, EventArgs e) { switch (this.ComboBox_FontSize.Text) { case "8": this.editBox_Log.Font = new System.Drawing.Font("굴림", 8F); break; case "10": this.editBox_Log.Font = new System.Drawing.Font("굴림", 10F); break; case "12": this.editBox_Log.Font = new System.Drawing.Font("굴림", 12F); break; case "14": this.editBox_Log.Font = new System.Drawing.Font("굴림", 14F); break; case "16": this.editBox_Log.Font = new System.Drawing.Font("굴림", 16F); break; } this.editBox_Log.ResumeLayout(); } private void ComboBox_Color_SelectedIndexChanged(object sender, EventArgs e) { switch (this.ComboBox_Color.Text) { case "White": this.editBox_Log.ForeColor = Color.White; break; case "Blue": this.editBox_Log.ForeColor = Color.Blue; break; case "Yellow": this.editBox_Log.ForeColor = Color.Yellow; break; case "Red": this.editBox_Log.ForeColor = Color.Red; break; } this.editBox_Log.ResumeLayout(); } private void CheckBox_LogEnable_CheckedChanged(object sender, EventArgs e) { if (CheckBox_LogEnable.Checked == true) _Data.Enable_Log = true; else _Data.Enable_Log = false; } } }