|
Página 1 de 2
|
Otra Entrada De Drag & Drop
Autor |
Mensaje |
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Otra Entrada De Drag & Drop
Hola, estoy haciendo algunas pruebas con drag&drop y me ha surgido un problema. He hecho un botón, a ese botón le puse la propiedad DROP a TRUE y en el código, en el evento DROP, le puse que ejecutara gedit (por probar).
Hasta aquí la cosa va bien, pero el problema me surge cuando quiero arrastrar al botón un archivo de texto y que no solo se abra gedit, sino que gedit tome como parámetro el archivo arrastrado y que lo abra para editarlo.
O sea, ¿cómo hago para tomar el nombre/ruta del archivo arrastrado para pasárselo a EXEC ["gedit"] como parámetro?
¿Y si arrastro varios archivos para procesarlos, por ejemplo, por ejemplo para girar un montón de fotos a la izquierda con el comando convert?
Estaría bien saber no solo el nombre de los archivos sino también cuántos son para poder hacer una barrita de progreso o crear un porcentaje de finalización de procesos.
Un saludo a todos y gracias de antemano.
|
#1 Viernes, 25 Noviembre 2011, 10:52 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Otra Entrada De Drag & Drop
Vamos avanzando algo, más datos por si a alguien se le ocurre algo:
De esta forma me abre un archivo que arrastre.
PUBLIC SUB boton_Drop()
DIM a AS String
a = Drag.Paste()
a = RTrim(a)
EXEC ["gedit", a]
END
Pero Drag.Paste me devuelve una ruta en formato html, o sea, con %20 para los espacios y con otros códigos para las tildes y demás, a parte de comenzar con la forma "file://" que no todos los programas entienden como parámetro.
Además, termina la línea con algún carácter raro porque tengo que usar RTrim para truncar el último carácter para que lo entienda gedit.
¿Hay alguna forma de arreglar este entuerto? Lo que se necesita es algo similar a como se hace en bash, todos los parámetros están en $@ listos para ser tratados, pero aquí en gambas ¿cómo se haría esto?
|
#2 Viernes, 25 Noviembre 2011, 14:15 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Otra Entrada De Drag & Drop
Citar: Pero Drag.Paste me devuelve una ruta en formato html, o sea, con %20 para los espacios y con otros códigos para las tildes y demás, a parte de comenzar con la forma "file://" que no todos los programas entienden como parámetro.
Puedes usar la orden Replace, para ese problema, por ejemplo, para el %20:
nombre_fichero=Replace$(nombre_fichero, "%20", " ")
De igual modo lo puedes aplicar para los acentos.
Es lo primero que se me ocurre....
Citar: Lo que se necesita es algo similar a como se hace en bash, todos los parámetros están en $@ listos para ser tratados, pero aquí en gambas ¿cómo se haría esto?
No se que quieres decir...
última edición por jsbsan el Viernes, 25 Noviembre 2011, 21:56; editado 2 veces
|
#3 Viernes, 25 Noviembre 2011, 21:55 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Otra Entrada De Drag & Drop
Lo que quiero decir es que en bash, los parámetros que envías a un comando se guardan en $@ de tal forma que puedes hacer cosas como esta.
Siguiendo con el ejemplo de antes, imagina que quiero girar un montón de fotos a la izquierda. Si hiciera un programa en bash lo llamaría "gizquierda" y si arrastrara a él todos los archivos de una carpeta o si lo llamara con "gizquierda *" desde un terminal, recogería los archivos 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg... en la variable $@.
Y puedo hacer cosas como
for i in $@; do
convert -rotate -90 "$i" "$i"
;done
¿Cómo se recogen los nombres de todos los archivos que he arrastrado en gambas para poder tratarlos uno a uno?
Y para hacer el Replace también necesitaría toda esta lista ¿no?
No sé cómo meterle mano, la verdad.
Solo por acotarlo, la cosa sería hacer un botón que al arrastrarle unas cuantas imágenes, las rote a la izquierda. Si supiéramos la forma de hacer esto, podríamos extenderlo para convertir imágenes, ficheros de audio o incluso archivos de vídeo de forma fácil.
|
#4 Sabado, 26 Noviembre 2011, 00:17 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Otra Entrada De Drag & Drop
¿Hay en gambas alguna función para convertir de HTML a UNICODE?
|
#5 Martes, 29 Noviembre 2011, 10:16 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Otra Entrada De Drag & Drop
Gracias a la sugerencia de jsbsan, poniendo esto tendría la cosa medio solucionada:
a = Replace$(a, "%20", " ")
a = Replace$(a, "%C3%A1", "á")
a = Replace$(a, "%C3%A9", "é")
a = Replace$(a, "%C3%AD", "í")
a = Replace$(a, "%C3%B3", "ó")
a = Replace$(a, "%C3%BA", "ú")
a = Replace$(a, "%C3%81", "Á")
a = Replace$(a, "%C3%89", "É")
a = Replace$(a, "%C3%8D", "Í")
a = Replace$(a, "%C3%93", "Ó")
a = Replace$(a, "%C3%9A", "Ú")
a = Replace$(a, "%C3%B1", "ñ")
a = Replace$(a, "%C3%91", "Ñ")
a = Replace$(a, "file://", "")
Ahora al arrastrar un montón de archivos me los guarda en "a" uno bajo el otro, por ejemplo:
/home/pepitogrillo/imagenes/1.jpg
/home/pepitogrillo/imagenes/2.jpg
/home/pepitogrillo/imagenes/3.jpg
¿Cómo puedo tratarlas ahora de línea en lína para pasárselas a un comando externo?
PD. Por cierto el RTrim en la versión 3 no hace falta, sería un bug.
última edición por geaplanet el Martes, 29 Noviembre 2011, 12:45; editado 1 vez
|
#6 Martes, 29 Noviembre 2011, 12:43 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Otra Entrada De Drag & Drop
Cuando dices:
Citar: Ahora al arrastrar un montón de archivos me los guarda en "a" uno bajo el otro, por ejemplo:
¿que quieres decir que te lo guarda en un array??
|
#7 Martes, 29 Noviembre 2011, 16:11 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Otra Entrada De Drag & Drop
No, un array no, no sé cómo lo guarda exactamente, solo sé que si le doy a guardar a un archivo de texto me sale lo que comentaba arriba, una línea por archivo. Y ahora no sé cómo meterlo en un bucle para que me lo trate línea por línea :-/
|
#8 Martes, 29 Noviembre 2011, 18:16 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Otra Entrada De Drag & Drop
¿O lo guardo en un archivo temporal y luego lo releo haciendo algo así? http://gambasdoc.org/help/lang/lineinput?view
|
#9 Martes, 29 Noviembre 2011, 18:30 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Otra Entrada De Drag & Drop
Veo que ni siquiera te han contestado en la lista de correo oficial de gambas-user. Bueno, la verdad es que no estoy muy familiarizado con este tema, pero en algún lugar me parece haber leído que a la hora de copiar o pegar, se puede establecer el tipo MIME, "Content-Type: text/plain" en lugar de "text/html" que sigue por defecto.
Voy a investigar, porque de esa manera no tendrías que hacer esas conversiones y facilitaría mucho las cosas.
Prueba con a = Drag.Paste("Text/plain")
EDITO: mira el ejemplo "Drag&Drop" que viene con gambas, hay cosas que podrían aclararte el problema.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#10 Martes, 29 Noviembre 2011, 19:34 |
|
|
|
Temas parecidos
Temas parecidos
Tema |
Autor |
Foro |
Respuestas |
último mensaje |
|
Drag & Drop
|
JaM0N |
General |
16 |
Jueves, 12 Noviembre 2009, 20:21 fabianfv |
|
Drag And Drop
|
jose2190 |
General |
3 |
Domingo, 19 Septiembre 2010, 10:22 jsbsan |
|
Drag/Drop
|
pittusa |
General |
4 |
Domingo, 30 Enero 2011, 18:31 pittusa |
|
Drag Drop, Drag Source, Tag
|
Shell |
General |
0 |
Domingo, 08 Octobre 2017, 11:28 Shell |
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|