class Plugin

Public Class Methods

activity(kind, title, args = {}) click to toggle source

ユーザに向けて通知を発生させる。 通知は、activityプラグインなど、通知の表示に対応するプラグインが 入っていればユーザがそれを確認することができるが、そのようなプラグインがない場合は 通知は単に無視される。 プラグインから通知を発生させたい場合は、 Plugin.Activity のかわりに #activity を使えば、通知を発生させたプラグインを特定できるようになる

引数は、 #activityを参照

# File core/plugin.rb, line 25
def activity(kind, title, args = {})
  Plugin.call(:modify_activity,
              { plugin: nil,
                kind: kind,
                title: title,
                date: Time.new,
                description: title }.merge(args)) end

Public Instance Methods

__spec_uitranslate__(spec)
Alias for: spec=
activity(kind, title, args={}) click to toggle source

ユーザに向けて通知を発生させる。 通知は、activityプラグインなど、通知の表示に対応するプラグインが 入っていればユーザがそれを確認することができるが、そのようなプラグインがない場合は 通知は単に無視される。

Args

kind

Symbol 通知の種類

title

String 通知のタイトル

args

Hash その他オプション。主に以下の値

icon :: String|GdkPixbuf::Pixbuf アイコン
date :: Time イベントの発生した時刻
service :: Service 関係するServiceオブジェクト
related :: 自分に関係するかどうかのフラグ
# File core/plugin.rb, line 46
def activity(kind, title, args={})
  Plugin.call(:modify_activity,
              { plugin: self,
                kind: kind,
                title: title,
                date: Time.new,
                description: title }.merge(args))
end
at(key, ifnone=nil) click to toggle source

プラグインストレージの key の値を取り出す

Args

key

取得するキー

ifnone

キーに対応する値が存在しない場合

Return

プラグインストレージ内のキーに対応する値

Calls superclass method ConfigLoader#at
# File core/plugin.rb, line 61
def at(key, ifnone=nil)
  super("#{@name}_#{key}".to_sym, ifnone) end
command(slug, options, &exec) click to toggle source

mikutterコマンドを定義

Args

slug

コマンドスラッグ

options

コマンドオプション

&exec

コマンドの実行内容

# File core/plugin.rb, line 76
def command(slug, options, &exec)
  command = options.merge(slug: slug, exec: exec, plugin: @name).freeze
  add_event_filter(:command){ |menu|
    menu[slug] = command
    [menu] } end
get_skin(filename) click to toggle source

画像ファイルのパスを得る

Args

  • String filename ファイル名

# File core/plugin.rb, line 93
def get_skin(filename)
  plugin_skin_dir = File.join(spec[:path], "skin")
  if File.exist?(plugin_skin_dir)
    ::Skin.get_path(filename, [plugin_skin_dir])
  else
    ::Skin.get_path(filename)
  end
end
settings(name, &place) click to toggle source

設定画面を作る

Args

  • String name タイトル

  • Proc &place 設定画面を作る無名関数

# File core/plugin.rb, line 86
def settings(name, &place)
  add_event_filter(:defined_settings) do |tabs|
    [tabs.melt << [name, place, @name]] end end
spec=(spec) click to toggle source
# File core/plugin/uitranslator/uitranslator.rb, line 19
def spec=(spec)
      __spec_uitranslate__(spec)

  po_root = File.join spec[:path], Plugin::UITranslate::PODirectoryPrefix
  if FileTest.exist?(po_root)
    Dir.glob(File.join(po_root, '*/*.po'.freeze)).map{|po_path|
      lang = po_path.match(Plugin::UITranslate::LanguageMatcher)[1]
      mo_path = File.join(Plugin::UITranslate::LocaleDirectory, lang, 'LC_MESSAGES'.freeze, "#{spec[:slug]}.mo")
      Plugin::UITranslate::LanguageFileInfo.new(po_path, mo_path)
    }.select{|info|
      if File.exist?(info.mo)
        File.mtime(info.po) > File.mtime(info.mo)
      else
        true end
    }.each{|info|
      miquire :lib, 'gettext/tools'.freeze
      FileUtils.mkdir_p(File.dirname(info.mo))
      GetText::Tools::MsgFmt.run(info.po, '-o'.freeze, info.mo)
      notice "generated mo file #{info.po} => #{info.mo}"
    }
    bindtextdomain(to_s, path: Plugin::UITranslate::LocaleDirectory)
  end
  spec
end
Also aliased as: __spec_uitranslate__
store(key, val) click to toggle source

プラグインストレージに key とその値 vel の対応を保存する

Args

key

取得するキー

val

Calls superclass method ConfigLoader#store
# File core/plugin.rb, line 68
def store(key, val)
  super("#{@name}_#{key}".to_sym, val) end