镜像自地址
https://github.com/binary-husky/gpt_academic.git
已同步 2025-12-06 06:26:47 +00:00
40 行
2.8 KiB
Python
40 行
2.8 KiB
Python
import gradio as gr
|
|
import json
|
|
from toolbox import format_io, find_free_port, on_file_uploaded, on_report_generated, get_conf, ArgsGeneralWrapper, DummyWith
|
|
|
|
def define_gui_advanced_plugin_class(plugins):
|
|
# 定义新一代插件的高级参数区
|
|
with gr.Floating(init_x="40%", init_y="20%", visible=False, width="30%", drag="top", elem_id="plugin_arg_menu"):
|
|
with gr.Accordion("请选择并确认插件参数!", open=True, elem_id="plugin_arg_panel"):
|
|
for u in range(8):
|
|
with gr.Row():
|
|
gr.Textbox(show_label=True, label="T1", placeholder="请输入", lines=1, visible=False, elem_id=f"plugin_arg_txt_{u}").style(container=False)
|
|
# for u in range(8):
|
|
# with gr.Row():
|
|
# gr.Dropdown(label="T1", value="请选择", visible=False, elem_id=f"plugin_arg_drop_{u}").style(container=False)
|
|
with gr.Row():
|
|
# 这个隐藏textbox负责装入当前弹出插件的属性
|
|
gr.Textbox(show_label=False, placeholder="请输入", lines=1, visible=False,
|
|
elem_id=f"invisible_current_pop_up_plugin_arg").style(container=False)
|
|
usr_confirmed_arg = gr.Textbox(show_label=False, placeholder="请输入", lines=1, visible=False,
|
|
elem_id=f"invisible_current_pop_up_plugin_arg_final").style(container=False)
|
|
arg_confirm_btn = gr.Button("确认参数并执行", variant="primary");
|
|
arg_confirm_btn.style(size="sm")
|
|
arg_confirm_btn.click(None, None, None, _js="""()=>execute_current_pop_up_plugin()""")
|
|
invisible_callback_btn_for_plugin_exe = gr.Button(r"未选定任何插件", variant="secondary", visible=False, elem_id="invisible_callback_btn_for_plugin_exe").style(size="sm")
|
|
# 随变按钮的回调函数注册
|
|
def route_switchy_bt_with_arg(request: gr.Request, input_order, *arg):
|
|
arguments = {k:v for k,v in zip(input_order, arg)}
|
|
which_plugin = arguments.pop('new_plugin_callback')
|
|
if which_plugin in [r"未选定任何插件"]: return
|
|
usr_confirmed_arg = arguments.pop('usr_confirmed_arg')
|
|
arg_confirm: dict = {}
|
|
usr_confirmed_arg_dict = json.loads(usr_confirmed_arg)
|
|
for arg_name in usr_confirmed_arg_dict:
|
|
arg_confirm.update({arg_name: str(usr_confirmed_arg_dict[arg_name]['user_confirmed_value'])})
|
|
plugin_obj = plugins[which_plugin]["Class"]
|
|
arguments['plugin_advanced_arg'] = arg_confirm
|
|
yield from ArgsGeneralWrapper(plugin_obj.execute)(request, *arguments.values())
|
|
return invisible_callback_btn_for_plugin_exe, route_switchy_bt_with_arg, usr_confirmed_arg
|
|
|