Forum darktable FR

Version complète : Ouvrir le dossier d'origine de l'image à partir de DT ?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4 5
Si tu es un peu codeur, ce n'est pas très difficile. Il y a un chapitre entier à la fin du manuel darktable, qui est un très bon pas à pas pour débuter. Ensuite si tu veux aller plus loin, le doc darktable-lua-api.pdf est le manuel de référence exhaustif de toutes les fonctions, structures de données et types qu'il est possible d'utiliser pour réaliser son script. Il est absolument indispensable ; sans lui, tu ne peux rien faire. Enfin, concernant la syntaxe générale du langage, il faut consulter le site Lua
Bonjour, j'arrive bien jusqu'aux options lua dans les préférences, et j'ai mis
Code :
/usr/bin/nautilus
comme navigateur de fichier, et pas d'option.

J'ai choisi F9 pour le raccourci clavier et quand je presse la touche, j'ai des boîtes qui me disent :

Impossible de trouver le fichier demandé. Vérifiez l'orthographe et essayez à nouveau.

Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /home/manu/16/160721-Jam » : Aucun fichier ou dossier de ce type

Puis :

Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /home/manu/- » : Aucun fichier ou dossier de ce type

Puis :

Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /home/manu/juillet » : Aucun fichier ou dossier de ce type

etc...

Puis :

Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /media/shared/Photos/2016/07 » : Aucun fichier ou dossier de ce type

Oui, il y a des espaces dans les noms de répertoire et au final c'est "/media/shared/Photos/2016/07 - juillet 16/160721-Jam au Joug" qui devrait être ouvert.
La solution à l'erreur que j'exposais concernant des chemins incluant des espaces : à la ligne 42 du script remplacer :

Code :
local command = navigator_path.." "..navigator_options.." "..image_path

par :

Code :
local command = navigator_path.." "..navigator_options.." '"..image_path.."'"

Ainsi le chemin de l'image, ou image_path sera encadré de quotes et passera comme paramètre unique, et non N paramètres séparés par des espaces.

Par ailleurs, les lignes :

<pre>
Code :
if coroutine.yield("RUN_COMMAND", command) then
dt.print_error(command.." failed")
end
</pre>


pour lancer la commande peuvent être remplacées par :

Code :
dt.control.execute( command)

En tout cas, merci pour le boulot ! :-)
Oops, je ne vois tes messages qu'aujourd'hui. Le flux RSS a buggé il me semble.

Effectivement, il faut gérer les espaces dans les noms de fichiers. C'est un grand classique et je suis tombé dans le panneau, comme d'hab :-(

Concernant le remplacement de "coroutine" par "execute", il semble que cela bloque l'exécution de DT tant que le navigateur est ouvert. D'un certain coté c'est prudent, car ça évite de laisser traîner des fenêtres du navigateur en arrière plan, mais d'un autre coté, ça bloque aussi les traitements en file d'attente. Pour l'instant, perso je laisse "coroutine"
2513 a écrit :Concernant le remplacement de “coroutine” par “execute”, il semble que cela bloque l’exécution de DT tant que le navigateur est ouvert.

Je reproduis pas, DT fonctionne normalement après ouverture du dossier par le sccript lua, et j'en ouvre autant que je veux apparemment...
j'ai pas testé. J'ai juste lu ceci dans le manuel : "Nous utilisons coroutine.yield pour appeler un programme externe. Le code normal os.execute bloquerait l'exécution d'autres codes Lua."

Effectivement ce n'est pas le code DT qui est bloqué, mais l'interpréteur Lua. Dans le doute, j'ai conservé la proposition de l'exemple du manuel
OK, c'est raisonnable même si je n'observe pas de problème de script lua après utilisation du os.execute (Ubuntu 16.04/DT 2.0.5).
Suite au passage à la version 2.2, l'api Lua à changé un peu et j'ai du en conséquence modifier le script. Voici la version à jour :
Code :
--[[
FNAV
launch file navigator in photo directory with a shortcut

AUTHOR
Jean-Pirre Verrue (contact@jpverrue.fr)

INSTALLATION
* copy this file in $CONFIGDIR/lua/ where CONFIGDIR
is your darktable configuration directory
* add the following line in the file $CONFIGDIR/luarc
 require "fnav"

USAGE
* configure this script :
* set a shortcut in preferences->shortcut->lua
* set file navigator path in preferences->lua options
* set file navigator options in preferences->lua options
* select a photo
* type your shortcut
* after use dont forget to close file navigator window !

LICENSE
GPLv2
]]

local dt = require "darktable"

dt.preferences.register("file_navigator","navigator_options",
"string","options",
"options du navigateur de fichier","")
                                                                                                                                                                                                                                                                                         
dt.preferences.register("file_navigator","navigator_path",                                                                                                                                                                                                                                
"string","navigateur de fichiers",                                                                                                                                                                                                                                                        
"chemin complet du navigateur de fichier","")                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                         
local function fnav_shortcut(event, shortcut)                                                                                                                                                                                                                                            
 local images = dt.gui.action_images                                                                                                                                                                                                                                                    
 local image_path = tostring(images[1].path)                                                                                                                                                                                                                                            
 local navigator_path = dt.preferences.read("file_navigator", "navigator_path", "string")                                                                                                                                                                                                
 local navigator_options = dt.preferences.read("file_navigator", "navigator_options", "string")
 local command = navigator_path.." "..navigator_options.." '"..image_path.."'"
 dt.print_error("command="..command)
 dt.control.execute(command)

end

dt.register_event("shortcut",fnav_shortcut,
"Lancer le navigateur de fichiers")
Merci, ça fonctionne nickel ! :-)
Tel quel, Le script ne fonctionne pas quand il doit ouvrir un dossier dont le nom contient une apostrophe ou un guillemet.
Voici une nouvelle version corrigeant ce bug.

Au passage, merci à Manu pour m'avoir suggéré ce besoin. Maintenant j'utilise ce script tout le temps !

Code :
--[[
FNAV
launch file navigator in photo directory with a shortcut

AUTHOR
Jean-Pirre Verrue (contact@jpverrue.fr)

INSTALLATION
* copy this file in $CONFIGDIR/lua/ where CONFIGDIR
is your darktable configuration directory
* add the following line in the file $CONFIGDIR/luarc
 require "fnav"

USAGE
* configure this script :
* set a shortcut in preferences->shortcut->lua
* set file navigator path in preferences->lua options
* set file navigator options in preferences->lua options
* select a photo
* type your shortcut
* after use dont forget to close file navigator window !

LICENSE
GPLv2
]]

local dt = require "darktable"

dt.preferences.register("file_navigator","navigator_options",
"string","options",
"options du navigateur de fichier","")

dt.preferences.register("file_navigator","navigator_path",
"string","navigateur de fichiers",
"chemin complet du navigateur de fichier","")

local function fnav_shortcut(event, shortcut)
 local images = dt.gui.action_images
 local image_path = string.gsub(tostring(images[1].path), '"', '\\"')
 local navigator_path = dt.preferences.read("file_navigator", "navigator_path", "string")
 local navigator_options = dt.preferences.read("file_navigator", "navigator_options", "string")
 local command = navigator_path.." "..navigator_options..' "'..image_path..'"'
 dt.print_error("command="..command)
 dt.control.execute(command)

end

dt.register_event("shortcut",fnav_shortcut,
"Lancer le navigateur de fichiers")
Pages : 1 2 3 4 5