クロスプラットフォームのPyQt4アプリケーションに次の機能を追加したいと思います。ユーザーがファイルを選択して「削除」アクションを選択すると、そのファイルは完全に削除されるのではなく、ごみ箱フォルダーに移動されます。 Win32 APIなどを使用してWindows固有のソリューションを見つけることができると思いますが、Ubuntu/LinuxおよびMaxOSXでもPyQt4メソッドを介して同様の操作を実行できることを知りたいです。
Pythonを使用しているのは良いことです。少し前に、それを行うためのライブラリを作成しました。
http://www.hardcoded.net/articles/send-files-to-trash-on-all-platforms.htm
PyPIの場合: Send2Trash
インストール
Condaの使用:
conda install Send2Trash
Pipの使用:
pip install Send2Trash
使用法
ファイルまたはフォルダを削除する
from send2trash import send2trash
send2trash("directory")
Qtが提供するクロスプラットフォームのソリューションは実際にはないと思います。また、使用しているファイルマネージャーによって少し異なるため、Linuxでゴミ箱の概念を実装するのはまったく簡単な作業ではありません。
これは Nautilus のゴミ箱の概念と [〜#〜] kde [〜#〜] のゴミ箱の概念について議論しているサイトです。
Windowsでは、あなたが言ったようにWin32APIを使用できます。 Pythonソリューションはこちらから入手できます 。
Mac OS Xは、他の* NIX OSと同様に、ゴミ箱に移動したファイルを〜/ .Trashに配置しますが、そのドキュメントをすぐにGoogleで検索することはできませんでした。 OS Xのゴミ箱情報ファイルはある種のバイナリ形式であり、Linuxのようなプレーンテキストではないようです。
Symbianにはデスクトップの概念がないため、ゴミ箱の概念もありません。他のモバイルプラットフォームでも同様の場合があります。
編集: スーパーユーザー .DS_Storeが実際にゴミ箱に入れられたファイルに関する情報を保存していることを明らかにするいくつかの議論がありますが、形式に関する詳細はありません。
最高のOSXソリューション 私はApplescriptを使用していることを知っています。しかし、私はそれを発明しなかったので、ここで簡単にリンクします。
Win32/KDE/OSXソリューションを1つにパッケージ化し、オンデマンドで正しいものをインポートするモジュールがあればいいと思います。それが最終的に問題を解決した方法ですか?