ArrcttacsrjksX commited on
Commit
76ece9b
·
verified ·
1 Parent(s): 49511f7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +5 -17
app.py CHANGED
@@ -169,7 +169,6 @@ class ImageToDxfConverter:
169
  logger.error(f"Conversion failed: {str(e)}")
170
  return None, None, []
171
 
172
- # ... (các phần import và class ImageToDxfConverter giữ nguyên) ...
173
 
174
  def create_gradio_interface():
175
  """Create and configure the Gradio interface."""
@@ -188,8 +187,6 @@ def create_gradio_interface():
188
  with gr.Row():
189
  with gr.Column(scale=2):
190
  image_input = gr.Image(
191
- source="upload", # Thêm source parameter
192
- tool="select", # Chỉ cho phép select
193
  type="filepath",
194
  label="Input Image",
195
  elem_id="image_input",
@@ -224,48 +221,38 @@ def create_gradio_interface():
224
  # Cập nhật JavaScript để xử lý paste
225
  demo.load(js="""
226
  function initPasteHandler() {
227
- // Lắng nghe sự kiện paste trên toàn document
228
  document.addEventListener('paste', function(e) {
229
- // Ngăn hành vi paste mặc định
230
  e.preventDefault();
231
 
232
- // Lấy dữ liệu từ clipboard
233
  const items = e.clipboardData.items;
234
 
235
  for (let i = 0; i < items.length; i++) {
236
  const item = items[i];
237
 
238
- // Kiểm tra nếu là ảnh
239
  if (item.type.indexOf('image') !== -1) {
240
  const file = item.getAsFile();
241
  const reader = new FileReader();
242
 
243
  reader.onload = function(event) {
244
- // Tạo một đối tượng File từ dữ liệu base64
245
  fetch(event.target.result)
246
  .then(res => res.blob())
247
  .then(blob => {
248
  const file = new File([blob], "pasted_image.png", { type: "image/png" });
249
 
250
- // Tạo một sự kiện drag and drop giả
251
  const dt = new DataTransfer();
252
  dt.items.add(file);
253
 
254
- // Tìm input file trong Gradio interface
255
  const fileInput = document.querySelector('#image_input input[type="file"]');
256
  if (fileInput) {
257
- // Cập nhật files của input
258
  fileInput.files = dt.files;
259
 
260
- // Trigger sự kiện change
261
- const event = new Event('change', { bubbles: true });
262
  fileInput.dispatchEvent(event);
263
 
264
- // Auto click nút convert sau khi paste
265
  setTimeout(() => {
266
  const convertBtn = document.querySelector('#convert_btn');
267
  if (convertBtn) convertBtn.click();
268
- }, 100);
269
  }
270
  });
271
  };
@@ -277,12 +264,14 @@ def create_gradio_interface():
277
  });
278
  }
279
 
280
- // Đảm bảo DOM đã load xong
281
  if (document.readyState === 'complete') {
282
  initPasteHandler();
283
  } else {
284
  window.addEventListener('load', initPasteHandler);
285
  }
 
 
 
286
  """)
287
 
288
  # Event handlers
@@ -290,7 +279,6 @@ def create_gradio_interface():
290
  fn=converter.convert_image,
291
  inputs=[image_input, use_lines_checkbox],
292
  outputs=[dxf_output, debug_output],
293
- api_name=False # Disable API endpoint for this event
294
  )
295
 
296
  return demo
 
169
  logger.error(f"Conversion failed: {str(e)}")
170
  return None, None, []
171
 
 
172
 
173
  def create_gradio_interface():
174
  """Create and configure the Gradio interface."""
 
187
  with gr.Row():
188
  with gr.Column(scale=2):
189
  image_input = gr.Image(
 
 
190
  type="filepath",
191
  label="Input Image",
192
  elem_id="image_input",
 
221
  # Cập nhật JavaScript để xử lý paste
222
  demo.load(js="""
223
  function initPasteHandler() {
 
224
  document.addEventListener('paste', function(e) {
 
225
  e.preventDefault();
226
 
 
227
  const items = e.clipboardData.items;
228
 
229
  for (let i = 0; i < items.length; i++) {
230
  const item = items[i];
231
 
 
232
  if (item.type.indexOf('image') !== -1) {
233
  const file = item.getAsFile();
234
  const reader = new FileReader();
235
 
236
  reader.onload = function(event) {
 
237
  fetch(event.target.result)
238
  .then(res => res.blob())
239
  .then(blob => {
240
  const file = new File([blob], "pasted_image.png", { type: "image/png" });
241
 
 
242
  const dt = new DataTransfer();
243
  dt.items.add(file);
244
 
 
245
  const fileInput = document.querySelector('#image_input input[type="file"]');
246
  if (fileInput) {
 
247
  fileInput.files = dt.files;
248
 
249
+ const event = new Event('change', { 'bubbles': true });
 
250
  fileInput.dispatchEvent(event);
251
 
 
252
  setTimeout(() => {
253
  const convertBtn = document.querySelector('#convert_btn');
254
  if (convertBtn) convertBtn.click();
255
+ }, 500); // Tăng timeout lên 500ms
256
  }
257
  });
258
  };
 
264
  });
265
  }
266
 
 
267
  if (document.readyState === 'complete') {
268
  initPasteHandler();
269
  } else {
270
  window.addEventListener('load', initPasteHandler);
271
  }
272
+
273
+ // Thêm handler để debug
274
+ console.log('Paste handler initialized');
275
  """)
276
 
277
  # Event handlers
 
279
  fn=converter.convert_image,
280
  inputs=[image_input, use_lines_checkbox],
281
  outputs=[dxf_output, debug_output],
 
282
  )
283
 
284
  return demo