]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Allow plugins to do things when the language is changed. Will be used e.g. by lart...
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 15 Oct 2006 19:34:58 +0000 (19:34 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 15 Oct 2006 19:34:58 +0000 (19:34 +0000)
lib/rbot/ircbot.rb
lib/rbot/language.rb
lib/rbot/plugins.rb

index 432b61c40d4180653331bb5f5152d7ad098203e3..ac7aa8291ca372a9fe4b8db26f46312688134126 100644 (file)
@@ -346,7 +346,8 @@ class IrcBot
 
     @httputil = Utils::HttpUtil.new(self)
 
-    @lang = Language::Language.new(@config['core.language'])
+    @plugins = nil
+    @lang = Language::Language.new(self, @config['core.language'])
 
     begin
       @auth = Auth::authmanager
index 1a4a889aadc206acff56e83aa92c2f58023e42db..edb3cafaaf0ade3214385d8ec93ca430a351285a 100644 (file)
@@ -12,9 +12,11 @@ module Language
       :on_change => Proc.new {|bot, v| bot.lang.set_language v},
       :desc => "Which language file the bot should use")
     
-    def initialize(language)
+    def initialize(bot, language)
+      @bot = bot
       set_language language
     end
+    attr_reader :language
 
     def set_language(language)
       file = Config::datadir + "/languages/#{language}.lang"
@@ -24,6 +26,17 @@ module Language
       @language = language
       @file = file
       scan
+      return if @bot.plugins.nil?
+      @bot.plugins.core_modules.each { |p|
+        if p.respond_to?('set_language')
+          p.set_language(@language)
+        end
+      }
+      @bot.plugins.plugins.each { |p|
+        if p.respond_to?('set_language')
+          p.set_language(@language)
+        end
+      }
     end
 
     def scan
index 8aa75d203f656790673b2abf4a9a826328e56c4e..66a7d84294778572ef7f3f2a53462cef379a279a 100644 (file)
@@ -88,6 +88,10 @@ module Plugins
   connect()::            Called when a server is joined successfully, but
                          before autojoin channels are joined (no params)
 
+  set_language(String)::
+                         Called when the user sets a new language
+                         whose name is the given String
+
   save::                 Called when you are required to save your plugin's
                          state, if you maintain data between sessions
 
@@ -111,6 +115,9 @@ module Plugins
       @registry = BotRegistryAccessor.new(@bot, self.class.to_s.gsub(/^.*::/, ""))
 
       @manager.add_botmodule(self)
+      if self.respond_to?('set_language')
+        self.set_language(@bot.lang.language)
+      end
     end
 
     def botmodule_class