import os
import time
import wx.html2
import wx
from utils.log.log_helper import LogHelper
class MessageArea(wx.FlexGridSizer):
def __init__(self, main_panel):
super(MessageArea, self).__init__(rows=2, cols=1, vgap=9, hgap=25)
self.LogHelper = LogHelper()
self.main_panel = main_panel
self.report_sb = wx.StaticBox(self.main_panel, label='报文区', size=(450, 900))
self.report_message = ""
report_box = wx.StaticBoxSizer(self.report_sb, wx.VERTICAL)
self.web_view = wx.html2.WebView.New(self.main_panel)
self.web_view.LoadURL(os.path.abspath('public/log/log.html'))
save_btn = wx.Button(main_panel, label='保存')
save_btn.Bind(wx.EVT_BUTTON, self.save_data)
clear_btn = wx.Button(main_panel, label='清空')
clear_btn.Bind(wx.EVT_BUTTON, self.clear_data)
h_box = wx.BoxSizer(wx.HORIZONTAL)
h_box.AddMany([(save_btn, 1, wx.ALL | wx.EXPAND, 10), (clear_btn, 1, wx.ALL | wx.EXPAND, 10), ])
report_box.AddMany([(self.web_view, 1, wx.ALL | wx.EXPAND, 10), (h_box, 0, wx.ALL | wx.EXPAND)])
self.AddGrowableRow(0)
self.AddGrowableCol(0)
self.Add(report_box, 1, wx.EXPAND | wx.TOP, border=10)
def clear_data(self, e):
"""
功能:清空按钮,清空内容
"""
self.web_view.RunScript(self.LogHelper.get_clear_report_script())
def save_data(self, e):
"""
功能:保存按钮,将内容保存到文件中
"""
if not os.path.exists("./log_files"):
os.mkdir("./log_files")
times = time.strftime("%Y%m%d%H%M%S", time.localtime())
files_filter = "LOG files (*.log)|*.log| All files (*.*)|*.*"
dlg = wx.FileDialog(None, message="保存文件", defaultDir="./log_files", defaultFile=times, wildcard=files_filter,
style=wx.FD_SAVE)
if dlg.ShowModal() == wx.ID_OK:
file_path = dlg.GetPath()
with open(file_path, 'w', encoding='utf-8') as file:
word_count = file.write(self.LogHelper.get_report_message())
if word_count != 0:
self.tip_dialog("写入成功")
file.flush()
dlg.Destroy()
def add_log(self, message, log_type, is_title=False):
"""
添加日志
:param message 待打印的信息
:param log_type enum LogType 消息类型
:param is_title boolean 是否为标题
"""
script_list = []
try:
script_list = self.LogHelper.get_script_list(message=message, log_type=log_type, is_title=is_title)
except Exception as e:
print(e)
for item in script_list:
self.web_view.RunScript(item)
def change_result(self, result_type):
"""
根据结果改变标题颜色
:param result_type 结果类型
"""
result_script = self.LogHelper.change_result_color(result_type)
self.web_view.RunScript(result_script)
@staticmethod
def tip_dialog(message):
dlg = wx.MessageDialog(None, message, '提示', wx.OK | wx.ICON_WARNING)
dlg.ShowModal()
dlg.Destroy()