seleccionar archivos con script en ventana ROX

Post Reply
Message
Author
arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

seleccionar archivos con script en ventana ROX

#1 Post by arivas_2005 »

Saludos

Tengo la necesidad de utilizar el aporte de MochiMopel para marcar una lista de archivos predeterminada

El script esta en (al final):
http://www.murga-linux.com/puppy/viewtopic.php?t=86079

Ya hice prueba en puppy thar 6 original (ingles) y funciona bien el script pero al españolizarlo ya no funciona y sale el error que se muestra en la imagen.

--Por donde hay que modificar dicho script?

mis agradecimientos
Attachments
error-rox-fileselect.png
(70.98 KiB) Downloaded 582 times

wow
Posts: 1052
Joined: Fri 30 Jun 2006, 00:18
Location: Peru

#2 Post by wow »

Tampoco encontré solución. Pero si funciona en inglés, asi que... a revertir el cambio de idioma para ese programa xD

Code: Select all

#! /bin/bash
FILES="/tmp/01TEST
/tmp/abTEST
/tmp/cdeTEST"

touch $FILES                                # Create some test files
LIST="/tmp/00_filelist.txt"                 # Assign variable LIST
echo  "$FILES" > "$LIST"                    # Write file paths to file LIST

FIRSTFILE=$(head -n1 "$LIST")               # Retrieve first file path  in LIST
# Desactivar la localización/soporte de idiomas
LANG=C
# rox -n para abrir una nueva ventana sin reutilizar variables como el idioma
rox -ns "$FIRSTFILE" &                        # Open ROX-Filer with FIRSTFILE activated (but not yet selected)
sleep 0.2
xdotool key question                        # Shortcut '?' opens the 'Select If' entry field
xdotool type "system(grep \"%\" \"$LIST\")" # Define  grep command
xdotool key Return                          # Run command. ROX selects all files matched in grep command
Luego de esos cambios (LANG=C, rox -n &, sleep) el script vuelve a funcionar. El cambio es temporal hasta cerrar el Rox en inglés.
[url=http://www.puppylinux.com][img]http://i.imgur.com/M4OyHe1.gif[/img][/url]

arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

#3 Post by arivas_2005 »

Gracias wow

Pues ni modo, como dice.. volver al original. :(
Aunque es un poco intrigante saber que al cambiar el lenguaje del puppy tambien se cambian algunas propiedades, como la del ejemplo anterior.

Saludos.

arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

#4 Post by arivas_2005 »

Saludos

Estoy intentando forzaruna solución parecida a la que ofreció MochiMopel (''una locura!!')' para marcar una lista de archivos predeterminada, usando xdotool. He googleado mucho y por mi escasa experiencia en programación, llevo muchas horas en esta actividad. :cry:

El código inicial es el siguiente:

Code: Select all

#! /bin/bash
FILES="/tmp/01TEST
/tmp/abTEST
/tmp/cdeTEST"

touch $FILES                                # Create some test files
LIST="/tmp/00_filelist.txt"                 # Assign variable LIST
echo  "$FILES" > "$LIST"                    # Write file paths to file LIST
FIRSTFILE=$(head -n1 "$LIST")               # Retrieve first file path  in LIST
rox -s "$FIRSTFILE"                         # Open ROX-Filer with FIRSTFILE activated (but not yet selected)
#for m in {1..40}; do ## numero de archivos de la lista en la ventana rox
xdotool key space
xdotool key --delay 1 --clearmodifiers ctrl+c  # clear modifier quita la seleccion por omision  ##  eys("<ctrl>+v")   keys("<ctrl>+x")
xdotool key --delay 3 --clearmodifiers p    #--delay 1  pone el foco en el ppunto de insercion anterior
xdotool key --delay 4 --clearmodifiers Home #End  enviar el cursor de texto al inicio de cadena en cuadro dialogo
xdotool key --delay 2 --clearmodifiers Home
#xdotool key --delay 0 --clearmodifiers Shift+Home
xdotool key --delay 3 Shift+End  ##+End -- seleccionar el texto del cuadro dialogo
xdotool key ctrl+c # copiar texto cuadro dialogo
xdotool key Alt+F4  # cerrar ventana
sleep 0.1
xdotool key --clearmodifiers Tab # trasladarse al archivo elegido en  rox -s "$FIRSTFILE"   
sleep 0.1
xdotool key --delay 0 space # marcar el archivo mostrado en el cuadro dialogo
sleep 0.1
apega=$(xclip -selection clipboard -o) # capturar en variable la ruta del archivo
Xdialog --msgbox $apega 0 0
sleep 1
xdotool key --clearmodifiers Up # regresar la barra de seleccion al archivo anterior en la lista
sleep 0.1
#xdotool key --clearmodifiers Down
#done
exit 0
pero sucede que no siempre da el mismo resultado.
A veces solo da el nombre del archivo y a veces si captura toda la ruta.

en la figura de abajo, muestro las dos ventanitas con el resultado
En realidad, quiero capturar la ruta completa y no solo el nombre del archivo.
El proceso es así
- Abrir rox como lo sugiere MochiMopel
- marcar el archivo
- simular un proceso de copiar
- en la ventana copiar intentar capturar la ruta completa
- - - - enviar el cursor al inicio de la cadena en el cuadro dialogo sin seleccionar
- - - - seleccionar la cadena
- copiar la cadena selecionada
- cancelar el cuadro copiar
- trasladarse al archivo elegido previamente en rox
- trasladar la cadena capturada en el cuadro copiar a una variable
. (esto con el proposito de confirmar si ese archivo hay que selecionarlo o no)
- si es seleccionable, regresar la barra de seleccion al archivo anterior del que tiene el foco y marcarlo)
-- ... !?

Mi kid es lograr que siempre me marque toda la ruta
Gracias!
Attachments
b_selecFilesRox21.png
(92.21 KiB) Downloaded 389 times

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

no entiendo muy bien.

#5 Post by mister_electronico »

no entiendo muy bien lo que realmente quieres hacer.

Por que me baje el comando xdtool y la verdad que me parece un coñazo para manejarlo.

Pero en realidad lo que creo que quieres es que te haga es que se abra con rox el directorio donde esta ese archivo mostrandote este archivo, que lo podemos hacer mediante:

rox -s /tmp/abTEMP

El siguiente paso creo entender es hacer que se abra una ventana con el nombre de este archivo abTEMP para que se copie en archivo 01TEMP cosa que seria muy sencillo hacer mediante GTKdialog abriendo atraves del mismo script con la ruta completa como tu dices.

Quiza si fueramos paso a paso lo veriamos mejor.

Saludos.

arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

#6 Post by arivas_2005 »

saludos mister_electronico

Intento replicar lo que logra MochiMopel para marcar una lista de archivos predeterminada.
La verdad que si puppy está en ingles el aporte de MochiMopel funciona genial. Pero sucede que los puppy a los que tengo acceso ya estan españolizados y el script da error.

Entonces, lo que intento es ir capturando nombre de archivo por nombre con el xdotool usando la ventana de copiar pues ahi se muestra toda la ruta

Code: Select all

xdotool key --delay 3 Shift+End  ##+End -- seleccionar el texto del cuadro dialogo 
xdotool key ctrl+c # copiar texto cuadro dialogo 
y luego comparar si el nombre está en la lista prederminada. En tal caso marcarlo

Code: Select all

xdotool key --delay 0 space # marcar el archivo mostrado en el cuadro dialogo

y dejarlo marcado. Luego pasar al siguiente archivo y repetir el proceso.. asi sucesivamente hasta revisar la lista que aparece en la ventana del rox con los archivos predeterminados ya seleccionados y aplicar una acción precisa sobre el conjunto.

El problema está en la parte donde se debe seleccionar la ruta completa en el interior del cuadro de diálogo copiar, pues como se observa en las figuras, a veces se selecciona toda la linea y a veces solo el nombre del archivo o a veces solo la ruta.
Supongo que el problema está en el uso de las lineas

Code: Select all

xdotool key --delay 3 --clearmodifiers p    #--delay 1  pone el foco en el ppunto de insercion anterior
xdotool key --delay 4 --clearmodifiers Home #End  enviar el cursor de texto al inicio de cadena en cuadro dialogo
xdotool key --delay 2 --clearmodifiers Home
#xdotool key --delay 0 --clearmodifiers Shift+Home
xdotool key --delay 3 Shift+End  ##+End -- seleccionar el texto del cuadro dialogo 
Bueno, mis agradecimientos por mostrar interés en el problemilla.

También gracias a wow.

wow
Posts: 1052
Joined: Fri 30 Jun 2006, 00:18
Location: Peru

#7 Post by wow »

Viendo que ya tienes la lista de archivos y estás usando un script ¿No es más fácil realizar la acción deseada(mover, copiar, borrar, etc.) directamente desde línea de comandos?

También puedes preguntar en el IRC
[url=http://www.puppylinux.com][img]http://i.imgur.com/M4OyHe1.gif[/img][/url]

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Eso mismo digo yo.

#8 Post by mister_electronico »

Eso mismo digo yo.....jejeje. mezclando script con ventanas Gtkdialog si se quiere hacer de una forma digamos vistosa.

Que lio este comando xdotool.

Yo a lo maximo que he conseguido seleccionar archivos es mediante el siguiente script.

Suponiendo que hay un directorio imagenes dentro de home y dentro de este directorio hay varias imagenes jpg, y otros con otras extensiones de otro tipo,
Bueno pues en este script pongo que pique la imagen camera.jpg, bueno pues da igual que esta imagen exista o no al final acabara seleccionando todos los archivos que tengan extension jpg.

Con lo cual hasta ahi he llegado.. no veo la forma todavia de que marque archivos individuales.

Code: Select all

#!/bin/bash
rox /mnt/home/imagenes
WID=`xdotool search --name "/mnt/home/imagenes" | head -1`
xdotool windowactivate $WID
xdotool key ctrl+l
xdotool type "camera.jpg"
xdotool key Return 
sleep 2
Saludos.

arivas_2005
Posts: 212
Joined: Sun 25 Feb 2007, 14:39

Re: seleccionar archivos con script en ventana ROX

#9 Post by arivas_2005 »

arivas_2005 wrote:Saludos

Tengo la necesidad de utilizar el aporte de MochiMopel para marcar una lista de archivos predeterminada

El script esta en (al final):
http://www.murga-linux.com/puppy/viewtopic.php?t=86079

Ya hice prueba en puppy thar 6 original (ingles) y funciona bien el script pero al españolizarlo ya no funciona y sale el error que se muestra en la imagen.

--Por donde hay que modificar dicho script?

mis agradecimientos
Sólo hay que cambiar system por sistema en la sintaxis

Code: Select all

xdotool type "system(grep "%" "$LIST")" # Define  grep command 
y queda asi para el español

Code: Select all

xdotool type "sistema(grep "%" "$LIST")" # Define  grep command 

Post Reply