Table of Contents
| Note | |
|---|---|
最近使ったファイル機能はgtkmmバージョン2.10以降でサポートされています。 |
gtkmmは最近使ったドキュメントを管理する簡単な方法を提供しています。この機能を実装するのに使われるクラスは
RecentManager,
RecentChooserDialog,
RecentChooserMenu,
RecentChooserWidget,
RecentFilter です。
最近使ったファイルにあるリスト内では、アイテムはそれぞれURIで同定され、メタデータが関連付けられています。メタデータは、そのファイルがどのように表示されるか、ファイルの説明、MIMEタイプ、どのアプリケーションに登録されているか、登録されているアプリケーション対してプライベートかどうか、などなど他にもいくつかのことに使われます
RecentManagerは最近使ったファイルの中央データベースとして振る舞います。このクラスを使って新しいファイルを登録したり、リストから除去したり、最近使ったファイルの検索をすることができます。
RecentManagerオブジェクトは新しく生成することもできますが、ほとんどの場合デフォルトのものを使いたいでしょう。デフォルトRecentManagerへの参照はget_default()で取得できます。
新しいファイルを最近使ったドキュメントのリストに加える場合、もっとも単純なケースでは、URIを与えることだけが必要です。例えば:
Glib::RefPtr<Gtk::RecentManager> recent_manager = Gtk::RecentManager::get_default(); recent_manager->add_item(uri);
ファイルにメタデータをつけて登録する場合、RecentManager::Dataパラメータをadd_item()に渡してください。特定のファイルアイテムに定められているメタデータは次のようなものです:
app_exec: リソースを起動するのに使われるコマンドライン。文字列にはリソースのファイルパスやURIにそれぞれ展開される"f"や"u"エスケープ文字が使える。
app_name: リソースが登録されているアプリケーションの名前
description: リソースの短い説明文(UTF-8エンコーディング文字列)
display_name: リソースが表示されるときに使われる名前(UTF-8エンコーディング文字列)
groups: このアイテムと関連するグループのリスト。グループは本質的に任意の文字列で、特定のリソースと関連付けられている。これは「カテゴリー」のようなもの("email"とか"graphics"など)と考えることができる。
is_private: このリソースが、登録されているアプリケーションにのみ可視かどうか
mime_type: リソースのMIMEタイプ
リストにアイテムを加えるほかに、検索したり変更したり除去したりすることができます。
最近使ったファイルを検索するために、RecentManagerは関数をいくつか提供しています。特定のアイテムをそのURIから検索する場合、lookup_item()関数が使えます。これはRecentInfoクラスを返します。もしも指定したURIが最近使ったファイルのリストになければ、RecentInfoオブジェクトは無効になります。RecentInfoはoperator bool()を提供していますから、これを使って有効かどうかをチェックできます。このように:
Gtk::RecentInfo info = recent_manager->lookup_item(uri);
if (info)
{
// item was found
}
RecentInfoオブジェクトは本質的に単一の最近使ったファイルメタデータを全て持っています。このオブジェクトを使えば上述の属性リストから検索することができます。FIXME - add cross-reference.
特定のURIで検索するのではなく、最近使ったアイテム全てのリストを全て取得したいのであれば、RecentManagerにget_items()があります。関数の返り値はどんなC++標準コンテナ(std::vector, std::list, etc)にも割り当てることができます。このリストは最近使ったファイルをユーザーが定義したリミット値の限界まで保持しています(FIXME: what's the default limit?)。次のコードで、どのように最近使ったファイルのリストを取得するか示します:
std::vector<Gtk::RecentInfo> info_list = recent_manager->get_items();
リターンされるアイテムの数のリミット値はset_limit()で設定でき、get_limit()で取得することができます。
最近使ったファイルのリストを変更しなければならない場合があるかもしれません。例えば、あるファイルを移動またはリネームしたので、最近使ったファイルのリスト内にあるそのファイルの場所を正しいものに更新する場合などです。アイテムの場所を更新するには、move_item()が使えます。
ファイルのURIを変更するほかに、アイテムをリストから削除することもできます。ひとつだけ除去するか、あるいは一度に全部をクリアできます。前者はremove_item()を、後者はpurge_items()を使ってください。
| Note | |
|---|---|
関数 |