Class: Ramaze::Logger::Xosd

Inherits:
Xosd
  • Object
show all
Includes:
Ramaze::Logging
Defined in:
lib/ramaze/log/xosd.rb

Overview

Informer for the XOSD notification system for X11.

You can install the ruby-bindings with:

  gem install xosd.

Since:

Constant Summary

DEFAULT =

Since:

  • 11-08-2009

{
  :font_size       => 20,
  :font            => "-*-*-*-*-*-*-%d-*-*-*-*-*-*-*",
  :align           => 'center',
  :color           => '#FFFFFF',
  :lines           => 3,
  :valign          => 'top',
  :timeout         => 3,
  :outline_color   => "#000000",
  :outline_width   => 1,
  :vertical_offset => 20,
  :colors => {
  :error => "#FF0000",
  :info => "#00FF00",
  :warn => "#EAA61E",
  :debug => "#FFFF00"
  },
}
IGNORE =

keys to ignore when setting the options to the instance.

Since:

  • 11-08-2009

[:colors, :font_size, :lines]
QUEUE =

Here new messages are pushed to eventually displaying them.

Since:

  • 11-08-2009

Queue.new

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods included from Ramaze::Logging

#debug, #debug?, #dev, #error, #info, #shutdown, #tag_log, #warn

Constructor Details

- (Xosd) initialize(options = {})

Create a new instance, valid options are in DEFAULT. In the background a new thread will be running that checks the QUEUE and processes all messages that are being sent to it. This is done to make output nicer and readable.

Since:

  • 11-08-2009



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/ramaze/log/xosd.rb', line 52

def initialize(options = {})
  @options = DEFAULT.merge(options)

  super(@options[:lines])

  @options.each do |key, value|
    next if IGNORE.include?(key)
    value %= @options[:font_size] if key == :font
    send("#{key}=", value)
  end

  Thread.new(self) do |xosd|
    loop do
      items = []
      lines = xosd.options[:lines]
      items << QUEUE.shift until QUEUE.empty? or items.size >= lines

      unless items.empty?
        # pad up with empty lines to avoid dragging around old messages.
        items << [:info, ' '] until items.size >= lines

        items.each_with_index do |(tag, message), i|
        xosd.color = xosd.options[:colors][tag.to_sym]
        xosd.display(message, i)
        end
      end
      sleep xosd.options[:timeout]
    end
  end
end

Instance Attribute Details

- (Object) options

Returns the value of attribute options

Since:

  • 11-08-2009



17
18
19
# File 'lib/ramaze/log/xosd.rb', line 17

def options
  @options
end

Instance Method Details

- (Object) log(tag, *messages)

Pushes all messages it gets on the QUEUE for further processing.

Since:

  • 11-08-2009



86
87
88
89
90
# File 'lib/ramaze/log/xosd.rb', line 86

def log(tag, *messages)
  messages.each do |message|
    QUEUE << [tag, message]
  end
end