wpbcpaz commited on
Commit
440d296
·
verified ·
1 Parent(s): d3c0d2d

Update app.py

Browse files

Retirei o botão copiar texto e usei o botão nativo

Files changed (1) hide show
  1. app.py +9 -56
app.py CHANGED
@@ -162,8 +162,8 @@ CACHE_DIR = Path("post_cache")
162
  CACHE_DIR.mkdir(exist_ok=True)
163
 
164
  # Nomes de arquivo padrão para download
165
- CSV_FILENAME = "posthistpeacechatbot.csv"
166
- ZIP_FILENAME = "postpeacechatbot.zip"
167
 
168
 
169
  # ============================================
@@ -465,7 +465,6 @@ def _formatar_historico_para_html(history_list):
465
  caracteres = stats.get('caracteres', 0)
466
  hashtags = stats.get('hashtags', 0)
467
 
468
- # CORREÇÃO: Aplicado 'cor_texto_clara' a todos os spans de texto
469
  html += f"""
470
  <div style='border: 1px solid {cor_fundo}; padding: 16px; margin: 12px 0;
471
  border-radius: 8px; background-color: {cor_fundo}; color: {cor_texto_clara};
@@ -517,6 +516,8 @@ def criar_alerta(tipo, mensagem):
517
 
518
  def copiar_feedback(texto):
519
  # Esta função agora só retorna o alerta, o JS faz a cópia.
 
 
520
  if texto:
521
  return criar_alerta('success', '✅ Texto copiado!')
522
  return criar_alerta('warning', '⚠️ Nada para copiar')
@@ -1258,8 +1259,10 @@ with gr.Blocks(theme=custom_theme, title="Gerador de Posts e Chatbot (Completo)"
1258
  editor_locked = gr.State(True)
1259
  refinar_btn = gr.Button("✏️ Refinar Post")
1260
 
 
 
 
1261
  with gr.Row():
1262
- copiar_btn = gr.Button("📋 Copiar Texto", variant="secondary")
1263
  limpar_btn = gr.Button("🧹 Limpar Tudo", variant="stop")
1264
 
1265
  gr.Markdown("") # Espaçamento
@@ -1519,57 +1522,7 @@ with gr.Blocks(theme=custom_theme, title="Gerador de Posts e Chatbot (Completo)"
1519
  show_progress="full"
1520
  )
1521
 
1522
- # Botão copiar (com _js e fallback)
1523
- copiar_btn.click(
1524
- fn=copiar_feedback,
1525
- inputs=[texto_output],
1526
- outputs=[status_output],
1527
- _js="""
1528
- (texto_do_output) => {
1529
- // Tenta a API moderna (navigator.clipboard)
1530
- if (navigator.clipboard && window.isSecureContext) {
1531
- navigator.clipboard.writeText(texto_do_output)
1532
- .then(() => {
1533
- console.log("Texto copiado com sucesso (navigator.clipboard)");
1534
- })
1535
- .catch(err => {
1536
- console.warn("Falha ao copiar (navigator.clipboard), tentando fallback...", err);
1537
- // Fallback: Tentar execCommand
1538
- const elem = document.createElement('textarea');
1539
- elem.value = texto_do_output;
1540
- elem.style.position = 'absolute';
1541
- elem.style.left = '-9999px';
1542
- document.body.appendChild(elem);
1543
- elem.select();
1544
- try {
1545
- document.execCommand('copy');
1546
- console.log("Texto copiado com sucesso (execCommand fallback)");
1547
- } catch (e) {
1548
- console.error("Falha ao copiar (execCommand fallback)", e);
1549
- }
1550
- document.body.removeChild(elem);
1551
- });
1552
- } else {
1553
- // Fallback final para HTTP ou navegadores muito antigos
1554
- const elem = document.createElement('textarea');
1555
- elem.value = texto_do_output;
1556
- elem.style.position = 'absolute';
1557
- elem.style.left = '-9999px';
1558
- document.body.appendChild(elem);
1559
- elem.select();
1560
- try {
1561
- document.execCommand('copy');
1562
- console.log("Texto copiado com sucesso (execCommand fallback 2)");
1563
- } catch (e) {
1564
- console.error("Falha ao copiar (execCommand fallback 2)", e);
1565
- }
1566
- document.body.removeChild(elem);
1567
- }
1568
- // Retorna o valor para a função Python (copiar_feedback)
1569
- return texto_do_output;
1570
- }
1571
- """
1572
- )
1573
 
1574
  # Lista de outputs para o botão Limpar
1575
  limpar_outputs = [
@@ -1707,4 +1660,4 @@ with gr.Blocks(theme=custom_theme, title="Gerador de Posts e Chatbot (Completo)"
1707
  # Lançar aplicação
1708
  if __name__ == "__main__":
1709
  demo.launch()
1710
-
 
162
  CACHE_DIR.mkdir(exist_ok=True)
163
 
164
  # Nomes de arquivo padrão para download
165
+ CSV_FILENAME = "posthistpeacechatbot001.csv"
166
+ ZIP_FILENAME = "postpeacechatbot001.zip"
167
 
168
 
169
  # ============================================
 
465
  caracteres = stats.get('caracteres', 0)
466
  hashtags = stats.get('hashtags', 0)
467
 
 
468
  html += f"""
469
  <div style='border: 1px solid {cor_fundo}; padding: 16px; margin: 12px 0;
470
  border-radius: 8px; background-color: {cor_fundo}; color: {cor_texto_clara};
 
516
 
517
  def copiar_feedback(texto):
518
  # Esta função agora só retorna o alerta, o JS faz a cópia.
519
+ # Esta função é chamada pelo _js, mas seu retorno (o alerta) não será usado.
520
+ # No entanto, é bom mantê-la para o caso de o _js ser removido novamente.
521
  if texto:
522
  return criar_alerta('success', '✅ Texto copiado!')
523
  return criar_alerta('warning', '⚠️ Nada para copiar')
 
1259
  editor_locked = gr.State(True)
1260
  refinar_btn = gr.Button("✏️ Refinar Post")
1261
 
1262
+ # CORREÇÃO: Removido o botão de cópia e adicionada instrução
1263
+ gr.Markdown("ℹ️ *Use o ícone de prancheta (📋) no canto superior direito da caixa de texto para copiar o conteúdo.*")
1264
+
1265
  with gr.Row():
 
1266
  limpar_btn = gr.Button("🧹 Limpar Tudo", variant="stop")
1267
 
1268
  gr.Markdown("") # Espaçamento
 
1522
  show_progress="full"
1523
  )
1524
 
1525
+ # CORREÇÃO: Removido o evento de cópia JS
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1526
 
1527
  # Lista de outputs para o botão Limpar
1528
  limpar_outputs = [
 
1660
  # Lançar aplicação
1661
  if __name__ == "__main__":
1662
  demo.launch()
1663
+