Comunidad Gambas-es
Petición de ayuda sobre TextEdit. - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Petición de ayuda sobre TextEdit. (/thread-441.html)

Páginas: 1 2 3


RE: Petición de ayuda sobre TextEdit. - Shordi - 07-06-2021

Cita:¿No seria factible hacer un control heredando textedit con la característica del click derecho?
Pues no sé... pero creo que lo he resuelto, casi por completo.

Al fin se comporta como yo quiero. El código queda mucho más simple, claro, con muletas es fácil. El asunto es que dentro del textedit lo que se comporta como yo quiero es el Doble Click, que cambia el cursor y luego selecciona la palabra. Vale, pues hagamos que el xdotool simule un doble click, no un click derecho.
y Voilà: funciona.
Código:
Public Sub TxtEdit_MouseDown()

    If Mouse.Right Then
            Exec ["xdotool", "click", "--repeat", "2", "--delay", "1", "1"] Wait
            Stop Event
    Endif
 
End

Sólo falta que amigo Vuott, Consul ad honorem causa per externum biblitecorum, se anime a explorar la librería y nos podamos librar del Exec demoniorum.
(Es broma mi Consul, las tareas propias de tu cargo no dan tiempo para estas tonterías)

Creo que es la primera vez en mi vida de programador que me baso en una utilidad externa... pero claro, con mi memoria de pez, lo mismo eso es mentira. Ahora si queréis que esto os funcione, tendréis que instalar la utilidad esta. Se la colocaré en las dependencias y si generáis un paquete .deb la utilidad se instalará sola como dependencia... pero creo que pocos de vosotros trabajáis convirtiendo vuestros proyectos a ejecutables instalados. Yo lo hago por una razón sola: Si manejas un ejecutable instalado puedes controlar vía comando pgrep, cuántas instancias del programa hay abiertas y operar en consecuencia.

En fin. Gracias por vuestro interés y vuestros esfuezos. Habéis sacado al zombie jubileta del sarcófago y ahora me paseo por aquí incansable, como en los viejos tiempos... Big Grin Big Grin Big Grin Big Grin


RE: Petición de ayuda sobre TextEdit. - tincho - 07-06-2021

(07-06-2021, 19:09)Shordi escribió: En fin. Gracias por vuestro interés y vuestros esfuezos. Habéis sacado al zombie jubileta del sarcófago y ahora me paseo por aquí incansable, como en los viejos tiempos... Big Grin Big Grin Big Grin
Bueno, me alegro que ya estés en velocidad crucero.
Ya que estamos, te cuento, estoy poniendo a prueba tradukisto con soprano, y he hecho 3 revisiones del código ya Smile
Por un lado sucede que soprano tiene muchas oraciones a traducir y al ser en español aumentan los caracteres a es %e1 (creo) porque al enviar el texto al google translator o deepl esta limitado a 5000 caracteres así que, primera revisión , limitar los caracteres, segunda revisión aparecen caracteres ASCII menores de 32, carácter nulo etc. eso también me colgaba el programa, ahí la revisión 3 tiene relación a otros asuntos.
Saludos.


RE: Petición de ayuda sobre TextEdit. - vuott - 07-06-2021

(07-06-2021, 17:27)Shordi escribió: que me ayudase a manejar la librería libxdo3 directamente...

Confused  No conozco esta libreria, tengo que estudiarla. Shy


RE: Petición de ayuda sobre TextEdit. - Shordi - 08-06-2021

(07-06-2021, 20:14)tincho escribió:
(07-06-2021, 19:09)Shordi escribió: En fin. Gracias por vuestro interés y vuestros esfuezos. Habéis sacado al zombie jubileta del sarcófago y ahora me paseo por aquí incansable, como en los viejos tiempos... Big Grin Big Grin Big Grin
Bueno, me alegro que ya estés en velocidad crucero.
Ya que estamos, te cuento, estoy poniendo a prueba tradukisto con soprano, y he hecho 3 revisiones del código ya
Por un lado sucede que soprano tiene muchas oraciones a traducir y al ser en español aumentan los caracteres a es %e1 (creo) porque al enviar el texto al google translator o deepl esta limitado a 5000 caracteres así que, primera revisión , limitar los caracteres, segunda revisión aparecen caracteres ASCII menores de 32, carácter nulo etc. eso también me colgaba el programa, ahí la revisión 3 tiene relación a otros asuntos.
Saludos.

¡Buff! Me abrumas... Yo quiero añadir el código del botón derecho de ayer... ¿Lo subo y ya? ¿o primero hay que añadir tus cambios?
No tengo muy claros aún los conceptos de git, me temo. Si tú modificas cosas que no me gustan pero otras sí ¿cómo lo haría? ¿Si hago un merge es cronológico, primeros cambios primeros, o puedo seleccionar?  Mmmmm... perro viejo, trucos nuevos.... Tongue Tongue

Sería todo un avance, supongo. El Exec lleva casi 4 décimas de segundo, lo que supone un montón comparado con las otras operaciones. Supongo que el manejo de la librería directamente sería mucho más rápido. No sé, nunca he hecho una comparativa con estas cosas.

Ave Consul codificanturi salutant

Saludo


RE: Petición de ayuda sobre TextEdit. - tincho - 08-06-2021

(08-06-2021, 09:07)Shordi escribió: ¡Buff! Me abrumas... Yo quiero añadir el código del botón derecho de ayer... ¿Lo subo y ya? ¿o primero hay que añadir tus cambios?
Tu sube siempre tus cambios, el repo es tuyo y eres el único que puede escribir allí ademas.
La "merge request" que te envié cancelala o no hagas nada en absoluto con ella y listo no pasa nada puedo crear otra luego, no te preocupes. Smile
Al principio usar estas cosas es algo exasperante pero poco a poco se aprenden a manejar.
Saludos.

(08-06-2021, 09:07)Shordi escribió: No tengo muy claros aún los conceptos de git, me temo. Si tú modificas cosas que no me gustan pero otras sí ¿cómo lo haría?
En ese caso hay que hacer los cambios a mano, te descargas el código "forkeado", de mi repo por ejemplo, y manualmente copias de un lado a otro.

(08-06-2021, 09:07)Shordi escribió: ¿Si hago un merge es cronológico, primeros cambios primeros, o puedo seleccionar? 
Esta pregunta no la comprendo bien.
Por ejemplo, yo de momento te propuse solo un merge y si te propusiera un segundo, lo que deseas saber es si puedes aplicar el mas reciente y descartar el anterior, si es eso, si que se puede hacer.
Luego, hablando en  la linea temporal, si tu por ejemplo haces cambios y hoy y existe un merge mio de ayer quieres saber que se aplica primero? bien la respuesta es lo que tu apliques primero.
Siempre existirá un desfajase "manejable" de la informacion, y como todo lo que uno hace en equipo, es un dialogo constante. Por ejemplo En GauchoCAD al principio era muy caótico y había mucha superposición de código, y con el tiempo fuimos aprendiendo, no solo a usar github, sino a trabajar en equipo.
Por lo general todos en el foro somos programadores solitarios, hacemos nuestros programas y los publicamos (algunos usuarios no publican nada), así que trabajar con github en equipo supone un reto técnico y humano, pero puedo decir que merece el esfuerzo pues es muy enriquecedor técnicamente y humanamente.
Saludos.


RE: Petición de ayuda sobre TextEdit. - Shordi - 08-06-2021

Oído cocina... Investigating mode on...


RE: Petición de ayuda sobre TextEdit. - vuott - 08-06-2021

Un pequeño paso más: dos o más líneas de texto, siempre que no aparezcan las "ScrollBar" de la TextEdit. Por eso el ancho del Textedit debe ser apropiado.

Código:
Private m As Menu

Public Sub Form_Open()

  m = New Menu(Me)
  m.Name = "vacio"
  TextEdit1.PopupMenu = m.Name
  TextEdit1.Text = "Tityre, tu patulae recubans sub tegmine fagi\n"
  "silvestrem tenui musam meditaris avena;\n"
  "nos patriae finis et dulcia linquimus arva;\n"
  "nos patriam fugimus; tu, Tityre, lentus in umbra,\n"
  "formosam resonare doces Amaryllida silvas."
 
End

Public Sub TextEdit1_MouseDown()
 
  Dim c, lin As Short
  Dim nn As New Byte[]
  Dim ss As String[]
  
  For c = 1 To Len(TextEdit1.Text)
    If Mid(TextEdit1.Text, c, 1) = "\n" Then nn.Push(c)
  Next
  ss = Split(TextEdit1.Text, "\n", Null)
 
' Para situar el cursor en la línea de texto con el botón derecho del ratón:
  If Mouse.Right Then
    lin = Round(Mouse.Y / TextEdit1.Font.TextHeight("A"))
    If (lin) == 1 Then 
      For c = 1 To Len(TextEdit1.Text)
        If TextEdit1.Font.TextWidth(String.Left(TextEdit1.Text, c)) > Mouse.X Then
          TextEdit1.Pos = (c - 1) 
          Exit
        Else
          TextEdit1.Pos = Len(TextEdit1.Text)
        Endif
      Next
    Else
      For c = 1 To Len(ss[lin - 1])
        If TextEdit1.Font.TextWidth(String.Left(ss[lin - 1], c)) > Mouse.X Then
          TextEdit1.Pos = (c - 1) + nn[lin - 2]
          Exit
        Endif
      Next
    Endif
  Endif

End



RE: Petición de ayuda sobre TextEdit. - Shordi - 08-06-2021

Cita:Un pequeño paso más: dos o más líneas de texto, siempre que no aparezcan las "ScrollBar" de la TextEdit. Por eso el ancho del Textedit debe ser apropiado.
Muchas Gracias, Cónsul, pero creo que me voy a rendir. Llevo más de una semana con ésto y no he avanzado nada.
La utilidad de xdotool funciona muy bien... pero interactúa mal con qt5, me temo... o no.
El problema es que si lanzas un doble click, se ejecuta dos veces seguidas el evento mousedown y eso, a la hora de pasar la revisión ortográfica y demás, es un problema en sí mismo.
Lo dejaré como lo tenía, primero click izquierdo y luego click derecho y que los dioses decidan.

Saludos.