web-dev-qa-db-fra.com

Onglet Notes de fichier disparu dans Nautilus 3.2.1

Il semble que l'onglet "Notes" de la boîte de dialogue "Propriétés du fichier" ait disparu de Nautilus 3.2.1/Ubuntu 11.10. Comment pouvez-vous utiliser la fonctionnalité de notes maintenant? Que faites-vous des notes que vous avez déjà faites? Existe-t-il un correctif ou une extension pour cela, ou envisage-t-il d'être corrigé à l'avenir? (Pourquoi a-t-il été supprimé?) ( Question connexe sur la portabilité des notes. )

5
Kazark

Une question similaire à celle-ci a été posée à " Emblems and Backgrounds " et j'ai bien peur que ce soit une réponse similaire.

Les développeurs de Gnome pensaient que ces fonctionnalités étaient rarement utilisées et, dans le but de rationaliser le code, ils ont supprimé cette fonctionnalité principale.

Heureusement, les mêmes commandes basées sur le terminal peuvent être utilisés puisque les capacités de métadonnées ont été conservées:

par exemple, voici une capture d'écran de la version 11.10 de Nautilus avec des notes ajoutées via la ligne de commande.

enter image description here

Quant à "envisage-t-il d'être réparé" - là encore une réponse similaire - comme "des emblèmes" - ceci est considéré comme pris en charge par une tierce partie - c'est-à-dire non pas des capacités de base en nautile.

Je ne suis au courant de personne qui ait décidé de relever ce défi - voici donc mon pauvre remplaçant:

enter image description here

Choisir l’option de menu contextuel Notes affiche les notes d’un fichier que vous pouvez modifier.

enter image description here

Pour ce faire, j'ai utilisé mon réponse à cette question pour exécuter le fichier suivant:

#!/bin/bash

# basic - and I mean basic bash script to display & set notes
# 
# feel free to enhance!
#
# fossfreedom (askubuntu)  27/12/11

notestext=`gvfs-info $1 | grep annotation | sed s/' metadata::annotation: '/''/g`

newnotes=`zenity --entry --width=500 --title=$1 --text="current notes:" --entry-text="$notestext"`

# handle the case where the user has pressed cancel

if [ $? = 1 ]; then 
  exit
fi

# ok - got this far - lets change the notes for the file selected

gvfs-set-attribute -t string $1 metadata::annotation "$newnotes"

Zenity ne supporte pas plusieurs lignes - une implémentation plus robuste de type pythondialog sera nécessaire ... my python aren pas à la hauteur de ce travail!

4
fossfreedom

Voici le script que j'ai jeté ensemble pour l'utiliser avec la réponse de @ fossfreedom. Il utilise GIO pour l'interface avec GVFS et Tkinter pour l'interface graphique, et est écrit en Python 2.7. Il supporte les annotations multilignes. L'interface graphique ressemble à ceci:

GUI for script

prérequis Vous devez installer tkinter:

Sudo apt-get install python-tk

à utiliser

Enregistrez le code sous forme de fichier en utilisant votre éditeur favori dans un dossier connu, par exemple /home/[home-folder-name]/scripts/notesscript.

Ensuite, si vous utilisez naultilus-actions , utilisez une commande:

python /home/[home-folder-name]/scripts/notesscript

Le code:

import gio
class GVFSNotes:
    ATTRIBUTE_KEY = 'metadata::annotation'
    def __init__(self, f):
        self.__f = f
    def _get_attribute(self, key):
        return self.__f.query_info(key).get_attribute_string(key)
    def _make_setter(self, key, val):
        info = gio.FileInfo()
        info.set_attribute_string(key, val)
        return info
    def _set_attribute(self, key, val):
        self.__f.set_attributes_from_info(self._make_setter(key, val))
    def get(self):
        return self._get_attribute(self.ATTRIBUTE_KEY)
    def set(self, val):
        self._set_attribute(self.ATTRIBUTE_KEY, val)
import Tkinter as tk
class Dialog:
    def __init__(self, title, initial):
        self.root = tk.Tk()
        self.text = None
        self._mkGUI(title, initial)
    def settext(self):
        self.text = self.entry.get(1.0, tk.END).rstrip()
    def onCancel(self):
        self.root.destroy()
    def onOkay(self):
        self.settext()
        self.root.destroy()
    def _mkButtons(self):
        (tk.Button(self.root, text="Cancel", width=10, command=self.onCancel)
            .pack(side=tk.LEFT)
        )
        (tk.Button(self.root, text="Okay", width=10, command=self.onOkay)
            .pack(side=tk.RIGHT)
        )
    def _mkEntry(self, initial):
        self.entry = tk.Text(self.root, width=60)
        if initial != '' and initial != None:
            self.entry.insert(tk.END, initial)
        self.entry.pack(fill=tk.X, expand=True)
        self.entry.focus_set()
    def _setTitle(self, title):
        self.root.wm_title(title)
    def _mkGUI(self, title, initial):
        self._mkEntry(initial)
        self._mkButtons()
        self._setTitle(title)
    def show(self):
        self.root.mainloop()
        return self.text
def main(path):
    notes = GVFSNotes(gio.File(path))
    oldtext = notes.get()
    newtext = Dialog('Notes for ' + path, oldtext).show()
    if newtext != None and newtext != oldtext:
        notes.set(newtext)
if __== '__main__':
    import sys
    main(sys.argv[1])
5
Kazark

J'avais légèrement modifié votre solution. Il a été fusionné avec les "actions nautilus extra". Dans la prochaine version, le paquet sera nommé: nautilus-notes.

2
Roti

Voici mon script à utiliser avec les scripts nautilus (plutôt rudimentaire - limitée à 1 000 lignes, je ne suis pas programmeur).

Vous devez créer dans le fichier ~/.gnome2/nautilus-scripts (nommé, par exemple, nautilus-annotations) et le rendre exécutable (dans les propriétés) avec le contenu suivant:

#!/bin/bash
for arg do
if i=`gvfs-info "$arg" | grep -A 1000000 metadata::annotation: | sed s/\metadata::annotation:\// | grep -v metadata:: | zenity  --text-info --editable  --ok-label="ok" --cancel-label="cancel" --checkbox="change"`; then `gvfs-set-attribute -t string "$arg" metadata::annotation "$i"`; else exit
fi
done
1
knezmej