Basic utilisation de SetAttr sous Linux

Bonjour,

Pour faciliter l’usage - par des utilisateurs novices - de documents Calc qui peuvent se retrouver avec l’attribut lecture seule, ce qui ne permet pas leur fonctionnement avec les macros incluses, je mets dans ce cas en début de ma macro les lignes suivantes :

If GetAttr (thisComponent.Location) <> 0 Then
	SetAttr thisComponent.Location, 0
 	MsgBox("Le message d’info adhoc")
	on Error Resume Next 
	thisComponent.close(True)
	on error goto 0
End If

Sous Windows, depuis Vista jusqu’à W10, ça marche, le document change d’attribut, se ferme et tout va bien à la réouverture.

Par contre sous Linux (en l’occurrence Ubuntu 18.04.4 LTS), l’attribut n’est pas modifié sans que j’aie une erreur en retour (version actuelle LibO 6.4.3.2)

Et mes essais montrent bien que sous Linux l’instruction SetAttr fonctionne si je l’applique à un autre document que celui qui contient la macro.

Tout ça n’est pas dramatique puisque ces utilisateurs sont pour l’instant sous Windows, mais ça m’intrigue, est-ce que je rate quelque chose sous Linux ? Le comportement de Linux est-il plus logique que celui de Windows, où l’inverse ?

Merci de vos lumières !

Bonjour @MichelRudelle

Pas de linux sous la main pour tester… Je pose la question pour la forme : le fichier de ton essai fonctionnel (sur un document autre que celui qui contient la macro) a les mêmes permissions ?

Cordialement

Bonjour Pierre-Yves,
oui ce sont bien les mêmes

@MichelRudelle ok… au pire tu pourrais peut-être bricoler un truc du genre avoir un document de travail contenant une macro recevant en paramètre un url et mettant l’attribut à ATTR_NORMAL. Dans ta procédure tu récupères l’url du doc avant de rentrer dans ton IF et avant de fermer tu lances la macro du doc de travail en lui passant l’url. Je ne sais pas si je suis clair… ni si cela fonctionnerait :slight_smile:

Cordialement

Bonne idée, mais ça ne marche pas. Après quelques investigations, j’observe que sous Linux, il n’est pas possible par une macro LibO de modifier cet attribut dans ce sens (je n’ai pas testé l’inverse) sur tout document ouvert par LibO, mais ça marche très bien sur un document fermé.

Mais je peux modifier l’attribut “à la main” sur un fichier ouvert, ce qui semble dire que le “problème” vient plutôt de LibO, et ce comportement est peut-être plus logique que celui de Windows (pas de problème en fermant le doc juste après comme je le fais, mais sinon … ?)

Pas grave pour moi, la solution, si ouvert sous Linux en lecture seule, je ferme et le message demande de modifier l’attribut (et comme il n’y a que moi à travailler sous Linux, je sais faire)
Merci Pierre-Yves