GitHub Action commited on
Commit
7519849
·
1 Parent(s): c383152

Sync ling-space changes from GitHub commit 9c95fd3

Browse files
Files changed (2) hide show
  1. app.py +1 -1
  2. tab_smart_writer.py +31 -30
app.py CHANGED
@@ -203,7 +203,7 @@ if __name__ == "__main__":
203
  with gr.TabItem(
204
  get_text("writer_tab_title", current_lang_state.value)
205
  ) as writer_tab:
206
- writer_components = create_smart_writer_tab(current_lang_state.value)
207
 
208
  writer_outputs = [
209
  writer_tab,
 
203
  with gr.TabItem(
204
  get_text("writer_tab_title", current_lang_state.value)
205
  ) as writer_tab:
206
+ writer_components = create_smart_writer_tab(current_lang_state)
207
 
208
  writer_outputs = [
209
  writer_tab,
tab_smart_writer.py CHANGED
@@ -47,45 +47,46 @@ def get_stats(text, lang):
47
 
48
  # --- UI Construction ---
49
 
50
- def create_smart_writer_tab(initial_lang: str):
51
- debounce_manager = DebounceManager(debounce_time=2.0, tick_time=0.3, loading_text=get_text("writer_debounce_loading_text", initial_lang))
 
52
 
53
  with gr.Row(equal_height=False, elem_id="indicator-writing-tab"):
54
  # --- Left Column: Entity Console ---
55
  with gr.Column(scale=1) as left_panel:
56
 
57
  style_input = gr.Textbox(
58
- label=get_text("writer_style_input_label", initial_lang),
59
  lines=8,
60
  value=MOCK_STYLE,
61
  interactive=True
62
  )
63
 
64
  with gr.Accordion(
65
- get_text("writer_kb_accordion_label", initial_lang), open=True
66
  ) as kb_accordion:
67
  kb_input = gr.Dataframe(
68
- headers=[get_text("writer_kb_dataframe_headers", initial_lang), '?'],
69
  datatype=["str", "str"],
70
  value=MOCK_KNOWLEDGE_BASE,
71
  interactive=True,
72
  wrap=True
73
  )
74
  with gr.Row():
75
- btn_suggest_kb = gr.Button(get_text("writer_suggest_kb_button", initial_lang), size="sm")
76
 
77
  suggested_kb_dataframe = gr.Dataframe(
78
  headers=["Term", "Description"],
79
  datatype=["str", "str"],
80
  visible=False,
81
  interactive=False,
82
- label=get_text("writer_suggested_kb_label", initial_lang),
83
  )
84
 
85
- with gr.Accordion(get_text("writer_short_outline_accordion_label", initial_lang), open=True) as short_outline_accordion:
86
 
87
  short_outline_input = gr.Dataframe(
88
- headers=[get_text("writer_short_outline_dataframe_headers", initial_lang), '?'],
89
  datatype=["bool", "str"],
90
  value=MOCK_SHORT_TERM_OUTLINE,
91
  interactive=True,
@@ -93,11 +94,11 @@ def create_smart_writer_tab(initial_lang: str):
93
  col_count=(2, "fixed"),
94
  )
95
  with gr.Row():
96
- btn_sync_outline = gr.Button(get_text("writer_sync_outline_button", initial_lang), size="sm")
97
 
98
- with gr.Accordion(get_text("writer_long_outline_accordion_label", initial_lang), open=False) as long_outline_accordion:
99
  long_outline_input = gr.Dataframe(
100
- headers=[get_text("writer_short_outline_dataframe_headers", initial_lang), '?'],
101
  datatype=["bool", "str"],
102
  value=MOCK_LONG_TERM_OUTLINE,
103
  interactive=True,
@@ -116,15 +117,15 @@ def create_smart_writer_tab(initial_lang: str):
116
 
117
  flow_suggestion_display = gr.Textbox(
118
  show_label=True,
119
- label=get_text("writer_flow_suggestion_label", initial_lang),
120
- placeholder=get_text("writer_flow_suggestion_placeholder", initial_lang),
121
  lines=3,
122
  interactive=False,
123
  elem_classes=["flow-suggestion-box"],
124
  )
125
 
126
- btn_accept_flow = gr.Button(get_text("writer_accept_flow_button", initial_lang),size="sm",variant="primary",elem_id="btn-action-accept-flow")
127
- btn_change_flow = gr.Button(get_text("writer_change_flow_button", initial_lang),size="sm",elem_id="btn-action-change-flow")
128
 
129
  # Debounce Progress Indicator (Using Manager)
130
  debounce_state, debounce_timer, debounce_progress = debounce_manager.create_ui()
@@ -133,46 +134,46 @@ def create_smart_writer_tab(initial_lang: str):
133
  # Area 2: Paragraph Continuation (Inspiration)
134
  with gr.Column(scale=1, min_width=200):
135
  inspiration_prompt_input = gr.Textbox(
136
- label=get_text("writer_inspiration_prompt_label", initial_lang),
137
- placeholder=get_text("writer_inspiration_prompt_placeholder", initial_lang),
138
  lines=2
139
  )
140
  prompt_suggestions_dataset = gr.Dataset(
141
- label=get_text("writer_prompt_suggestions_label", initial_lang),
142
  components=[gr.Textbox(visible=False)],
143
  samples=[["生成建议..."], ["生成建议..."], ["生成建议..."]],
144
  type="values"
145
  )
146
  refresh_suggestions_btn = gr.Button(
147
- get_text("writer_refresh_suggestions_button", initial_lang),
148
  size="sm",
149
  variant="secondary",
150
  )
151
  with gr.Row():
152
- btn_generate_para = gr.Button(get_text("writer_generate_para_button", initial_lang),size="sm",variant="primary",elem_id="btn-action-create-paragraph")
153
- btn_change_para = gr.Button(get_text("writer_change_para_button", initial_lang),size="sm")
154
- btn_accept_para = gr.Button(get_text("writer_accept_para_button", initial_lang),size="sm")
155
 
156
  para_suggestion_display = gr.Textbox(
157
  show_label=False,
158
- placeholder=get_text("writer_para_suggestion_placeholder", initial_lang),
159
  lines=3,
160
  interactive=False
161
  )
162
 
163
  # Area 3: Adjust/Polish (Placeholder)
164
  with gr.Column(scale=1, min_width=200):
165
- polish_title = gr.Markdown(get_text("writer_polish_title", initial_lang))
166
- polish_soon = gr.Markdown(get_text("writer_coming_soon", initial_lang))
167
 
168
  # --- TOOLBAR ---
169
  with gr.Row(elem_classes=["toolbar"]):
170
  # --- EDITOR ---
171
- stats_display = gr.Markdown(get_text("writer_stats_default", initial_lang))
172
 
173
  editor = gr.Textbox(
174
- label=get_text("writer_editor_label", initial_lang),
175
- placeholder=get_text("writer_editor_placeholder", initial_lang),
176
  lines=25, # Reduced lines slightly to accommodate ribbon
177
  elem_classes=["writing-editor"],
178
  elem_id="writing-editor",
@@ -183,7 +184,7 @@ def create_smart_writer_tab(initial_lang: str):
183
  # --- Interactions ---
184
 
185
  # 1. Stats
186
- editor.change(fn=get_stats, inputs=editor, outputs=stats_display)
187
 
188
  # 2. Flow Suggestion Logic (Using DebounceManager)
189
 
 
47
 
48
  # --- UI Construction ---
49
 
50
+ def create_smart_writer_tab(lang_state: gr.State):
51
+ lang = lang_state.value
52
+ debounce_manager = DebounceManager(debounce_time=2.0, tick_time=0.3, loading_text=get_text("writer_debounce_loading_text", lang))
53
 
54
  with gr.Row(equal_height=False, elem_id="indicator-writing-tab"):
55
  # --- Left Column: Entity Console ---
56
  with gr.Column(scale=1) as left_panel:
57
 
58
  style_input = gr.Textbox(
59
+ label=get_text("writer_style_input_label", lang),
60
  lines=8,
61
  value=MOCK_STYLE,
62
  interactive=True
63
  )
64
 
65
  with gr.Accordion(
66
+ get_text("writer_kb_accordion_label", lang), open=True
67
  ) as kb_accordion:
68
  kb_input = gr.Dataframe(
69
+ headers=[get_text("writer_kb_dataframe_headers", lang), '?'],
70
  datatype=["str", "str"],
71
  value=MOCK_KNOWLEDGE_BASE,
72
  interactive=True,
73
  wrap=True
74
  )
75
  with gr.Row():
76
+ btn_suggest_kb = gr.Button(get_text("writer_suggest_kb_button", lang), size="sm")
77
 
78
  suggested_kb_dataframe = gr.Dataframe(
79
  headers=["Term", "Description"],
80
  datatype=["str", "str"],
81
  visible=False,
82
  interactive=False,
83
+ label=get_text("writer_suggested_kb_label", lang),
84
  )
85
 
86
+ with gr.Accordion(get_text("writer_short_outline_accordion_label", lang), open=True) as short_outline_accordion:
87
 
88
  short_outline_input = gr.Dataframe(
89
+ headers=[get_text("writer_short_outline_dataframe_headers", lang), '?'],
90
  datatype=["bool", "str"],
91
  value=MOCK_SHORT_TERM_OUTLINE,
92
  interactive=True,
 
94
  col_count=(2, "fixed"),
95
  )
96
  with gr.Row():
97
+ btn_sync_outline = gr.Button(get_text("writer_sync_outline_button", lang), size="sm")
98
 
99
+ with gr.Accordion(get_text("writer_long_outline_accordion_label", lang), open=False) as long_outline_accordion:
100
  long_outline_input = gr.Dataframe(
101
+ headers=[get_text("writer_short_outline_dataframe_headers", lang), '?'],
102
  datatype=["bool", "str"],
103
  value=MOCK_LONG_TERM_OUTLINE,
104
  interactive=True,
 
117
 
118
  flow_suggestion_display = gr.Textbox(
119
  show_label=True,
120
+ label=get_text("writer_flow_suggestion_label", lang),
121
+ placeholder=get_text("writer_flow_suggestion_placeholder", lang),
122
  lines=3,
123
  interactive=False,
124
  elem_classes=["flow-suggestion-box"],
125
  )
126
 
127
+ btn_accept_flow = gr.Button(get_text("writer_accept_flow_button", lang),size="sm",variant="primary",elem_id="btn-action-accept-flow")
128
+ btn_change_flow = gr.Button(get_text("writer_change_flow_button", lang),size="sm",elem_id="btn-action-change-flow")
129
 
130
  # Debounce Progress Indicator (Using Manager)
131
  debounce_state, debounce_timer, debounce_progress = debounce_manager.create_ui()
 
134
  # Area 2: Paragraph Continuation (Inspiration)
135
  with gr.Column(scale=1, min_width=200):
136
  inspiration_prompt_input = gr.Textbox(
137
+ label=get_text("writer_inspiration_prompt_label", lang),
138
+ placeholder=get_text("writer_inspiration_prompt_placeholder", lang),
139
  lines=2
140
  )
141
  prompt_suggestions_dataset = gr.Dataset(
142
+ label=get_text("writer_prompt_suggestions_label", lang),
143
  components=[gr.Textbox(visible=False)],
144
  samples=[["生成建议..."], ["生成建议..."], ["生成建议..."]],
145
  type="values"
146
  )
147
  refresh_suggestions_btn = gr.Button(
148
+ get_text("writer_refresh_suggestions_button", lang),
149
  size="sm",
150
  variant="secondary",
151
  )
152
  with gr.Row():
153
+ btn_generate_para = gr.Button(get_text("writer_generate_para_button", lang),size="sm",variant="primary",elem_id="btn-action-create-paragraph")
154
+ btn_change_para = gr.Button(get_text("writer_change_para_button", lang),size="sm")
155
+ btn_accept_para = gr.Button(get_text("writer_accept_para_button", lang),size="sm")
156
 
157
  para_suggestion_display = gr.Textbox(
158
  show_label=False,
159
+ placeholder=get_text("writer_para_suggestion_placeholder", lang),
160
  lines=3,
161
  interactive=False
162
  )
163
 
164
  # Area 3: Adjust/Polish (Placeholder)
165
  with gr.Column(scale=1, min_width=200):
166
+ polish_title = gr.Markdown(get_text("writer_polish_title", lang))
167
+ polish_soon = gr.Markdown(get_text("writer_coming_soon", lang))
168
 
169
  # --- TOOLBAR ---
170
  with gr.Row(elem_classes=["toolbar"]):
171
  # --- EDITOR ---
172
+ stats_display = gr.Markdown(get_text("writer_stats_default", lang))
173
 
174
  editor = gr.Textbox(
175
+ label=get_text("writer_editor_label", lang),
176
+ placeholder=get_text("writer_editor_placeholder", lang),
177
  lines=25, # Reduced lines slightly to accommodate ribbon
178
  elem_classes=["writing-editor"],
179
  elem_id="writing-editor",
 
184
  # --- Interactions ---
185
 
186
  # 1. Stats
187
+ editor.change(fn=get_stats, inputs=[editor, lang_state], outputs=stats_display)
188
 
189
  # 2. Flow Suggestion Logic (Using DebounceManager)
190