修改引用逻辑、新增Pattern更改界面、新增Calman灰阶界面
This commit is contained in:
@@ -19,14 +19,16 @@ from app.export import (
|
||||
export_excel_report as _export_excel_report_impl,
|
||||
EXCEL_EXPORT_CONFIG as _EXCEL_EXPORT_CONFIG,
|
||||
)
|
||||
from app.views.panels import custom_template_panel as _ctp
|
||||
from app.views.panels import side_panels as _sp
|
||||
from app.views.panels import cct_panel as _ccp
|
||||
from app.views.panels import main_layout as _main
|
||||
from app.views.panels import ai_image_panel as _aip
|
||||
from app.views.panels import single_step_panel as _ssp
|
||||
from app.views.panels import pantone_baseline_panel as _pbp
|
||||
from app.views import panel_manager as PM
|
||||
from app.views.panels.custom_template_panel import CustomTemplatePanelMixin
|
||||
from app.views.panels.side_panels import SidePanelsMixin
|
||||
from app.views.panels.cct_panel import CctPanelMixin
|
||||
from app.views.panels.main_layout import MainLayoutMixin
|
||||
from app.views.panels.ai_image_panel import AIImagePanelMixin
|
||||
from app.views.panels.single_step_panel import SingleStepPanelMixin
|
||||
from app.views.panels.pantone_baseline_panel import PantoneBaselinePanelMixin
|
||||
from app.views.panels.gamma_pattern_panel import GammaPatternPanelMixin
|
||||
from app.views.panels.calman_panel import CalmanPanelMixin
|
||||
from app.views.panel_manager import PanelManagerMixin
|
||||
from app.logging_setup import setup_logging, attach_gui_handler
|
||||
|
||||
# Step 0/1 重构:资源工具和纯算法已迁移到 app/ 包,这里重新导入以保持
|
||||
@@ -44,77 +46,46 @@ from app.tests.color_accuracy import (
|
||||
from app.tests.eotf import calculate_pq_curve as _calc_pq_curve
|
||||
from app.tests.gamma import calculate_gamma as _calc_gamma
|
||||
from app.tests.gamut import calculate_gamut_coverage as _calc_gamut_coverage
|
||||
from app.plots.plot_accuracy import plot_accuracy as _plot_accuracy
|
||||
from app.plots.plot_cct import plot_cct as _plot_cct
|
||||
from app.plots.plot_contrast import plot_contrast as _plot_contrast
|
||||
from app.plots.plot_eotf import plot_eotf as _plot_eotf
|
||||
from app.plots.plot_gamma import plot_gamma as _plot_gamma
|
||||
from app.plots.plot_gamut import plot_gamut as _plot_gamut
|
||||
from app.views.chart_frame import (
|
||||
clear_chart as _cf_clear_chart,
|
||||
create_result_chart_frame as _cf_create_result_chart_frame,
|
||||
init_accuracy_chart as _cf_init_accuracy_chart,
|
||||
init_cct_chart as _cf_init_cct_chart,
|
||||
init_contrast_chart as _cf_init_contrast_chart,
|
||||
init_eotf_chart as _cf_init_eotf_chart,
|
||||
init_gamma_chart as _cf_init_gamma_chart,
|
||||
init_gamut_chart as _cf_init_gamut_chart,
|
||||
on_chart_tab_changed as _cf_on_chart_tab_changed,
|
||||
sync_gamut_toolbar as _cf_sync_gamut_toolbar,
|
||||
_on_gamut_toolbar_changed as _cf_on_gamut_toolbar_changed,
|
||||
update_chart_tabs_state as _cf_update_chart_tabs_state,
|
||||
)
|
||||
from app.config_io import (
|
||||
clear_config_file as _cfg_clear_config_file,
|
||||
get_config_path as _cfg_get_config_path,
|
||||
load_pq_config as _cfg_load_pq_config,
|
||||
save_pq_config as _cfg_save_pq_config,
|
||||
)
|
||||
from app.tests.local_dimming import (
|
||||
clear_ld_records as _ld_clear_ld_records,
|
||||
measure_ld_luminance as _ld_measure_ld_luminance,
|
||||
save_local_dimming_results as _ld_save_local_dimming_results,
|
||||
send_ld_window as _ld_send_ld_window,
|
||||
start_local_dimming_test as _ld_start_local_dimming_test,
|
||||
stop_local_dimming_test as _ld_stop_local_dimming_test,
|
||||
update_ld_results as _ld_update_ld_results,
|
||||
)
|
||||
from app.plots.plot_accuracy import PlotAccuracyMixin
|
||||
from app.plots.plot_cct import PlotCctMixin
|
||||
from app.plots.plot_contrast import PlotContrastMixin
|
||||
from app.plots.plot_eotf import PlotEotfMixin
|
||||
from app.plots.plot_gamma import PlotGammaMixin
|
||||
from app.plots.plot_gamut import PlotGamutMixin
|
||||
from app.views.chart_frame import ChartFrameMixin
|
||||
from app.config_io import ConfigIOMixin
|
||||
from app.tests.local_dimming import LocalDimmingMixin
|
||||
from app.services import PatternService
|
||||
from app.device.connection import (
|
||||
check_com_connections as _dev_check_com_connections,
|
||||
check_port_connection as _dev_check_port_connection,
|
||||
disconnect_com_connections as _dev_disconnect_com_connections,
|
||||
enable_com_widgets as _dev_enable_com_widgets,
|
||||
get_available_com_ports as _dev_get_available_com_ports,
|
||||
get_available_ucd_ports as _dev_get_available_ucd_ports,
|
||||
refresh_com_ports as _dev_refresh_com_ports,
|
||||
update_connection_indicator as _dev_update_connection_indicator,
|
||||
)
|
||||
from app.runner.test_runner import (
|
||||
get_current_test_result as _run_get_current_test_result,
|
||||
new_pq_results as _run_new_pq_results,
|
||||
on_custom_template_test_completed as _run_on_custom_template_test_completed,
|
||||
on_test_completed as _run_on_test_completed,
|
||||
on_test_error as _run_on_test_error,
|
||||
run_custom_sdr_test as _run_run_custom_sdr_test,
|
||||
run_hdr_movie_test as _run_run_hdr_movie_test,
|
||||
run_screen_module_test as _run_run_screen_module_test,
|
||||
run_sdr_movie_test as _run_run_sdr_movie_test,
|
||||
run_test as _run_run_test,
|
||||
send_fix_pattern as _run_send_fix_pattern,
|
||||
test_cct as _run_test_cct,
|
||||
test_color_accuracy as _run_test_color_accuracy,
|
||||
test_contrast as _run_test_contrast,
|
||||
test_custom_sdr as _run_test_custom_sdr,
|
||||
test_eotf as _run_test_eotf,
|
||||
test_gamma as _run_test_gamma,
|
||||
test_gamut as _run_test_gamut,
|
||||
)
|
||||
from app.device.connection import DeviceConnectionMixin
|
||||
from app.runner.test_runner import TestRunnerMixin
|
||||
|
||||
plt.rcParams["font.family"] = ["sans-serif"]
|
||||
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"]
|
||||
|
||||
class PQAutomationApp:
|
||||
|
||||
class PQAutomationApp(
|
||||
ConfigIOMixin,
|
||||
ChartFrameMixin,
|
||||
MainLayoutMixin,
|
||||
CctPanelMixin,
|
||||
DeviceConnectionMixin,
|
||||
CustomTemplatePanelMixin,
|
||||
SidePanelsMixin,
|
||||
AIImagePanelMixin,
|
||||
SingleStepPanelMixin,
|
||||
PantoneBaselinePanelMixin,
|
||||
GammaPatternPanelMixin,
|
||||
CalmanPanelMixin,
|
||||
LocalDimmingMixin,
|
||||
PanelManagerMixin,
|
||||
TestRunnerMixin,
|
||||
PlotGamutMixin,
|
||||
PlotGammaMixin,
|
||||
PlotEotfMixin,
|
||||
PlotCctMixin,
|
||||
PlotContrastMixin,
|
||||
PlotAccuracyMixin,
|
||||
):
|
||||
def __init__(self, root):
|
||||
self.root = root
|
||||
self.root.title(get_app_title())
|
||||
@@ -228,6 +199,10 @@ class PQAutomationApp:
|
||||
# self.create_single_step_panel()
|
||||
# 创建 Pantone 认证摸底测试面板
|
||||
self.create_pantone_baseline_panel()
|
||||
# 创建 Gamma 测试图案配置面板
|
||||
self.create_gamma_pattern_panel()
|
||||
# 创建 CALMAN 风格灰阶测试面板
|
||||
self.create_calman_panel()
|
||||
# 创建测试类型选择区域
|
||||
self.create_test_type_frame()
|
||||
# 创建操作按钮区域
|
||||
@@ -277,111 +252,6 @@ class PQAutomationApp:
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log(f"初始化默认测试类型失败: {str(e)}", level="error")
|
||||
|
||||
get_config_path = _cfg_get_config_path
|
||||
load_pq_config = _cfg_load_pq_config
|
||||
save_pq_config = _cfg_save_pq_config
|
||||
|
||||
register_panel = PM.register_panel
|
||||
show_panel = PM.show_panel
|
||||
hide_all_panels = PM.hide_all_panels
|
||||
|
||||
init_gamut_chart = _cf_init_gamut_chart
|
||||
init_gamma_chart = _cf_init_gamma_chart
|
||||
init_eotf_chart = _cf_init_eotf_chart
|
||||
init_cct_chart = _cf_init_cct_chart
|
||||
init_contrast_chart = _cf_init_contrast_chart
|
||||
init_accuracy_chart = _cf_init_accuracy_chart
|
||||
clear_chart = _cf_clear_chart
|
||||
create_result_chart_frame = _cf_create_result_chart_frame
|
||||
on_chart_tab_changed = _cf_on_chart_tab_changed
|
||||
sync_gamut_toolbar = _cf_sync_gamut_toolbar
|
||||
_on_gamut_toolbar_changed = _cf_on_gamut_toolbar_changed
|
||||
|
||||
create_floating_config_panel = _main.create_floating_config_panel
|
||||
create_test_items_content = _main.create_test_items_content
|
||||
create_signal_format_content = _main.create_signal_format_content
|
||||
create_connection_content = _main.create_connection_content
|
||||
create_operation_frame = _main.create_operation_frame
|
||||
create_test_type_frame = _main.create_test_type_frame
|
||||
update_config_info_display = _main.update_config_info_display
|
||||
on_screen_module_timing_changed = _main.on_screen_module_timing_changed
|
||||
on_sdr_timing_changed = _main.on_sdr_timing_changed
|
||||
update_test_items = _main.update_test_items
|
||||
on_test_type_change = _main.on_test_type_change
|
||||
on_sdr_output_format_changed = _main.on_sdr_output_format_changed
|
||||
on_hdr_output_format_changed = _main.on_hdr_output_format_changed
|
||||
|
||||
create_cct_params_frame = _ccp.create_cct_params_frame
|
||||
on_sdr_cct_param_focus_out = _ccp.on_sdr_cct_param_focus_out
|
||||
save_sdr_cct_params = _ccp.save_sdr_cct_params
|
||||
on_hdr_cct_param_focus_out = _ccp.on_hdr_cct_param_focus_out
|
||||
save_hdr_cct_params = _ccp.save_hdr_cct_params
|
||||
recalculate_cct = _ccp.recalculate_cct
|
||||
recalculate_gamut = _ccp.recalculate_gamut
|
||||
on_cct_param_focus_out = _ccp.on_cct_param_focus_out
|
||||
save_cct_params = _ccp.save_cct_params
|
||||
reload_cct_params = _ccp.reload_cct_params
|
||||
toggle_cct_params_frame = _ccp.toggle_cct_params_frame
|
||||
on_screen_gamut_ref_changed = _ccp.on_screen_gamut_ref_changed
|
||||
on_sdr_gamut_ref_changed = _ccp.on_sdr_gamut_ref_changed
|
||||
on_hdr_gamut_ref_changed = _ccp.on_hdr_gamut_ref_changed
|
||||
|
||||
get_available_ucd_ports = _dev_get_available_ucd_ports
|
||||
get_available_com_ports = _dev_get_available_com_ports
|
||||
refresh_com_ports = _dev_refresh_com_ports
|
||||
check_com_connections = _dev_check_com_connections
|
||||
update_connection_indicator = _dev_update_connection_indicator
|
||||
check_port_connection = _dev_check_port_connection
|
||||
enable_com_widgets = _dev_enable_com_widgets
|
||||
disconnect_com_connections = _dev_disconnect_com_connections
|
||||
|
||||
create_custom_template_result_panel = _ctp.create_custom_template_result_panel
|
||||
show_custom_result_context_menu = _ctp.show_custom_result_context_menu
|
||||
set_custom_result_table_locked = _ctp.set_custom_result_table_locked
|
||||
start_custom_row_single_step = _ctp.start_custom_row_single_step
|
||||
copy_custom_result_table = _ctp.copy_custom_result_table
|
||||
clear_custom_template_results = _ctp.clear_custom_template_results
|
||||
auto_expand_custom_result_view = _ctp.auto_expand_custom_result_view
|
||||
append_custom_template_result = _ctp.append_custom_template_result
|
||||
start_custom_template_test = _ctp.start_custom_template_test
|
||||
update_custom_button_visibility = _ctp.update_custom_button_visibility
|
||||
export_custom_template_excel = _ctp.export_custom_template_excel
|
||||
export_custom_template_charts = _ctp.export_custom_template_charts
|
||||
|
||||
create_log_panel = _sp.create_log_panel
|
||||
create_local_dimming_panel = _sp.create_local_dimming_panel
|
||||
toggle_local_dimming_panel = _sp.toggle_local_dimming_panel
|
||||
toggle_log_panel = _sp.toggle_log_panel
|
||||
update_sidebar_selection = _sp.update_sidebar_selection
|
||||
|
||||
# ---- AI 图片对话面板 ----
|
||||
create_ai_image_panel = _aip.create_ai_image_panel
|
||||
toggle_ai_image_panel = _aip.toggle_ai_image_panel
|
||||
reload_ai_image_list = _aip.reload_ai_image_list
|
||||
|
||||
# ---- 单步调试面板 ----
|
||||
create_single_step_panel = _ssp.create_single_step_panel
|
||||
toggle_single_step_panel = _ssp.toggle_single_step_panel
|
||||
|
||||
# ---- Pantone 认证摸底测试面板 ----
|
||||
create_pantone_baseline_panel = _pbp.create_pantone_baseline_panel
|
||||
toggle_pantone_baseline_panel = _pbp.toggle_pantone_baseline_panel
|
||||
|
||||
# ---- 单步调试面板(统一实现,委托到 side_panels 模块) ----
|
||||
_toggle_debug_panel = _sp._toggle_debug_panel
|
||||
toggle_screen_debug_panel = _sp.toggle_screen_debug_panel
|
||||
toggle_sdr_debug_panel = _sp.toggle_sdr_debug_panel
|
||||
toggle_hdr_debug_panel = _sp.toggle_hdr_debug_panel
|
||||
|
||||
clear_config_file = _cfg_clear_config_file
|
||||
start_local_dimming_test = _ld_start_local_dimming_test
|
||||
update_ld_results = _ld_update_ld_results
|
||||
stop_local_dimming_test = _ld_stop_local_dimming_test
|
||||
send_ld_window = _ld_send_ld_window
|
||||
measure_ld_luminance = _ld_measure_ld_luminance
|
||||
clear_ld_records = _ld_clear_ld_records
|
||||
save_local_dimming_results = _ld_save_local_dimming_results
|
||||
|
||||
def _save_current_cct_params(self, swallow_errors=True):
|
||||
"""按当前测试类型分发保存对应的 CCT 参数。"""
|
||||
try:
|
||||
@@ -550,6 +420,7 @@ class PQAutomationApp:
|
||||
"ai_image",
|
||||
"single_step",
|
||||
"pantone_baseline",
|
||||
"gamma_pattern",
|
||||
):
|
||||
self.hide_all_panels()
|
||||
self._save_cct_params_before_test_type_switch()
|
||||
@@ -843,21 +714,8 @@ class PQAutomationApp:
|
||||
self.log_gui.log(traceback.format_exc(), level="error")
|
||||
messagebox.showerror("错误", f"保存测试结果失败: {str(e)}")
|
||||
|
||||
new_pq_results = _run_new_pq_results
|
||||
run_test = _run_run_test
|
||||
run_screen_module_test = _run_run_screen_module_test
|
||||
run_custom_sdr_test = _run_run_custom_sdr_test
|
||||
run_sdr_movie_test = _run_run_sdr_movie_test
|
||||
run_hdr_movie_test = _run_run_hdr_movie_test
|
||||
send_fix_pattern = _run_send_fix_pattern
|
||||
test_custom_sdr = _run_test_custom_sdr
|
||||
test_gamut = _run_test_gamut
|
||||
test_gamma = _run_test_gamma
|
||||
test_eotf = _run_test_eotf
|
||||
test_cct = _run_test_cct
|
||||
test_contrast = _run_test_contrast
|
||||
test_color_accuracy = _run_test_color_accuracy
|
||||
|
||||
# 纯算法函数:作为 staticmethod 保留在主类(不依赖 self,且 calculate_xxx
|
||||
# 的命名空间由历史代码以 self.calculate_xxx 调用)。
|
||||
calculate_delta_e_2000 = staticmethod(_calc_delta_e_2000)
|
||||
get_accuracy_color_standards = staticmethod(_get_accuracy_color_standards)
|
||||
calculate_gamut_coverage = staticmethod(_calc_gamut_coverage)
|
||||
@@ -865,20 +723,6 @@ class PQAutomationApp:
|
||||
calculate_color_accuracy = staticmethod(_calc_color_accuracy)
|
||||
calculate_pq_curve = staticmethod(_calc_pq_curve)
|
||||
|
||||
plot_gamut = _plot_gamut
|
||||
plot_gamma = _plot_gamma
|
||||
plot_eotf = _plot_eotf
|
||||
plot_cct = _plot_cct
|
||||
plot_contrast = _plot_contrast
|
||||
plot_accuracy = _plot_accuracy
|
||||
|
||||
on_test_completed = _run_on_test_completed
|
||||
on_custom_template_test_completed = _run_on_custom_template_test_completed
|
||||
get_current_test_result = _run_get_current_test_result
|
||||
on_test_error = _run_on_test_error
|
||||
|
||||
update_chart_tabs_state = _cf_update_chart_tabs_state
|
||||
|
||||
def get_test_type_name(self, test_type):
|
||||
"""获取测试类型的显示名称"""
|
||||
if test_type == "screen_module":
|
||||
|
||||
Reference in New Issue
Block a user