tweet 0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ttime +36 -0
- data/bin/tweet +30 -0
- data/bin/tweetd +126 -0
- data/doc/classes/SimplePop.html +125 -0
- data/doc/classes/SimplePop.src/M000009.html +59 -0
- data/doc/classes/SimplePop.src/M000010.html +43 -0
- data/doc/classes/SimplePopWindow.html +126 -0
- data/doc/classes/SimplePopWindow.src/M000005.html +77 -0
- data/doc/classes/SimplePopWindow.src/M000006.html +36 -0
- data/doc/classes/SyslogNotifier.html +113 -0
- data/doc/classes/SyslogNotifier.src/M000003.html +34 -0
- data/doc/classes/SyslogNotifier.src/M000004.html +39 -0
- data/doc/classes/Tweet/Monitor.html +236 -0
- data/doc/classes/Tweet/Monitor.src/M000028.html +53 -0
- data/doc/classes/Tweet/Monitor.src/M000029.html +38 -0
- data/doc/classes/Tweet/Monitor.src/M000030.html +40 -0
- data/doc/classes/Tweet/Monitor.src/M000031.html +31 -0
- data/doc/classes/Tweet/Monitor.src/M000032.html +32 -0
- data/doc/classes/Tweet/Monitor.src/M000033.html +65 -0
- data/doc/classes/Tweet/Monitor.src/M000034.html +38 -0
- data/doc/classes/Tweet/Note.html +272 -0
- data/doc/classes/Tweet/Note.src/M000020.html +32 -0
- data/doc/classes/Tweet/Note.src/M000021.html +30 -0
- data/doc/classes/Tweet/Note.src/M000022.html +30 -0
- data/doc/classes/Tweet/Note.src/M000023.html +30 -0
- data/doc/classes/Tweet/Note.src/M000024.html +30 -0
- data/doc/classes/Tweet/Note.src/M000025.html +30 -0
- data/doc/classes/Tweet/Note.src/M000026.html +30 -0
- data/doc/classes/Tweet/Note.src/M000027.html +30 -0
- data/doc/classes/Tweet/Notifier.html +147 -0
- data/doc/classes/Tweet/Notifier.src/M000018.html +34 -0
- data/doc/classes/Tweet/Notifier.src/M000019.html +30 -0
- data/doc/classes/Tweet.html +336 -0
- data/doc/classes/Tweet.src/M000011.html +42 -0
- data/doc/classes/Tweet.src/M000012.html +30 -0
- data/doc/classes/Tweet.src/M000013.html +30 -0
- data/doc/classes/Tweet.src/M000014.html +30 -0
- data/doc/classes/Tweet.src/M000015.html +30 -0
- data/doc/classes/Tweet.src/M000016.html +30 -0
- data/doc/classes/Tweet.src/M000017.html +30 -0
- data/doc/classes/XOSDNotifier.html +113 -0
- data/doc/classes/XOSDNotifier.src/M000007.html +36 -0
- data/doc/classes/XOSDNotifier.src/M000008.html +38 -0
- data/doc/created.rid +1 -0
- data/doc/files/README.html +228 -0
- data/doc/files/bin/ttime.html +112 -0
- data/doc/files/bin/tweet.html +111 -0
- data/doc/files/bin/tweetd.html +163 -0
- data/doc/files/bin/tweetd.src/M000001.html +51 -0
- data/doc/files/bin/tweetd.src/M000002.html +30 -0
- data/doc/files/lib/tweet_rb.html +178 -0
- data/doc/files/plugins/simplepop_rb.html +97 -0
- data/doc/files/plugins/syslog_rb.html +101 -0
- data/doc/files/plugins/xosd_rb.html +96 -0
- data/doc/fr_class_index.html +53 -0
- data/doc/fr_file_index.html +53 -0
- data/doc/fr_method_index.html +79 -0
- data/doc/index.html +26 -0
- data/doc/rdoc-style.css +175 -0
- data/images/comments.png +0 -0
- data/lib/tweet.rb +437 -0
- data/plugins/simplepop.rb +128 -0
- data/plugins/syslog.rb +24 -0
- data/plugins/xosd.rb +23 -0
- metadata +142 -0
data/bin/ttime
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# = ttime
|
4
|
+
#
|
5
|
+
# == Synopsis
|
6
|
+
#
|
7
|
+
# A timer for tea. Or, I suppose, other things.
|
8
|
+
#
|
9
|
+
# == Usage
|
10
|
+
#
|
11
|
+
# ttime [minutes]
|
12
|
+
# You can even use fractional minutes.
|
13
|
+
#
|
14
|
+
# == Author
|
15
|
+
#
|
16
|
+
# Payton Swick, 2006
|
17
|
+
|
18
|
+
require 'rubygems'
|
19
|
+
require 'tweet'
|
20
|
+
require 'daemons'
|
21
|
+
|
22
|
+
minutes = ARGV[0]
|
23
|
+
unless minutes and minutes !~ /[A-Za-z]/
|
24
|
+
puts "ttime: a timer for tea or other things - uses tweet for notification."
|
25
|
+
puts "usage: ttime [number of minutes]"
|
26
|
+
puts "You can even use fractional minutes, eg: 1.3"
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
|
30
|
+
Tweet.message("ttime starting...\\n(#{minutes} minute#{minutes.to_f==1 ? "":"s"})", 2)
|
31
|
+
print "ttime timing #{minutes} minute"+(minutes.to_f==1?"":"s")+"...\n"
|
32
|
+
|
33
|
+
Daemons.daemonize
|
34
|
+
sleep(minutes.to_f*60)
|
35
|
+
|
36
|
+
Tweet.message("ttime complete for #{minutes} minute"+(minutes.to_f==1?"":"s")+"!\\n#{Time.now.to_s}")
|
data/bin/tweet
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# = tweet
|
4
|
+
#
|
5
|
+
# == Synopsis
|
6
|
+
#
|
7
|
+
# Contacts a running tweetd server and prints text
|
8
|
+
# specified as an argument.
|
9
|
+
#
|
10
|
+
# == Usage
|
11
|
+
#
|
12
|
+
# tweet "<message text>" [duration]
|
13
|
+
#
|
14
|
+
# == Author
|
15
|
+
#
|
16
|
+
# Payton Swick, 2006
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'rubygems'
|
20
|
+
require 'tweet'
|
21
|
+
|
22
|
+
msg = ARGV[0] if (defined? ARGV[0]) && ARGV[0].class == String
|
23
|
+
if not msg
|
24
|
+
puts "tweet: a simple script to send a message to tweetd."
|
25
|
+
puts "usage: tweet [message] [duration]"
|
26
|
+
puts "Duration may be omitted in which case the duration (if used by a plugin) will be infinite."
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
|
30
|
+
Tweet.message(msg, ARGV[1])
|
data/bin/tweetd
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# = Tweet
|
4
|
+
#
|
5
|
+
# == Synopsis
|
6
|
+
#
|
7
|
+
# A generalized notification daemon. Can be petitioned by an arbitrary
|
8
|
+
# application to activate a notification. Notifications can be customized by
|
9
|
+
# the user via a plugin architecture. Examples include a GTK2 popup dialog, a
|
10
|
+
# syslog entry, or an email alert.
|
11
|
+
#
|
12
|
+
# Can also be required in a ruby script to access a running Tweet daemon (see
|
13
|
+
# Tweet.notify, Tweet.message, Tweet.running?, Tweet.stop).
|
14
|
+
#
|
15
|
+
# The website is here: http://tweet.rubyforge.org/
|
16
|
+
#
|
17
|
+
# == Usage
|
18
|
+
#
|
19
|
+
# tweetd [options]
|
20
|
+
#
|
21
|
+
# == Requirements
|
22
|
+
#
|
23
|
+
# - Ruby 1.8
|
24
|
+
#
|
25
|
+
# == Author
|
26
|
+
#
|
27
|
+
# Payton Swick, 2006
|
28
|
+
#
|
29
|
+
# == License Creative Commons GPL license.
|
30
|
+
# http://creativecommons.org/licenses/GPL/2.0/
|
31
|
+
#
|
32
|
+
|
33
|
+
require 'rubygems'
|
34
|
+
require 'tweet'
|
35
|
+
require 'pathname'
|
36
|
+
require 'daemons'
|
37
|
+
|
38
|
+
@config_dir = Pathname.new("#{ENV['HOME']}/.tweet")
|
39
|
+
@config_file = Pathname.new("#{@config_dir}/config")
|
40
|
+
@pri = Tweet::PRI['INFO']
|
41
|
+
@plugins_dir = Pathname.new("#{Tweet.where_am_i?}/plugins")
|
42
|
+
@requested_plugins = []
|
43
|
+
@config_requested_plugins = []
|
44
|
+
@plugins = []
|
45
|
+
@notifiers = []
|
46
|
+
@no_plugins = true
|
47
|
+
daemonize = false
|
48
|
+
|
49
|
+
# Read and parse the config file, if one exists. Create the default config
|
50
|
+
# file if no config file currently exists.
|
51
|
+
def parse_config
|
52
|
+
unless @config_dir.exist?
|
53
|
+
@config_dir.mkpath
|
54
|
+
end
|
55
|
+
|
56
|
+
unless @config_file.exist?
|
57
|
+
@config_file.open('w') do |file|
|
58
|
+
file << "---
|
59
|
+
plugin:
|
60
|
+
- SyslogNotifier
|
61
|
+
- SimplePop
|
62
|
+
"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
if (@config_file.exist?) && (@config_file.readable?)
|
67
|
+
config = YAML.load_file(@config_file.to_s)
|
68
|
+
@pri = config['priority'] if config['priority']
|
69
|
+
@plugins_dir = Pathname.new(config['plugins']) if config['plugins']
|
70
|
+
if config['plugin']
|
71
|
+
config['plugin'].each { |plugin| @config_requested_plugins << plugin }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def register_plugins
|
77
|
+
Dir["#{@plugins_dir}/*.rb"].each { |x| load x }
|
78
|
+
end
|
79
|
+
|
80
|
+
parse_config
|
81
|
+
|
82
|
+
require 'optparse'
|
83
|
+
opts = OptionParser.new
|
84
|
+
opts.version = Tweet::VERSION
|
85
|
+
opts.program_name = "tweetd"
|
86
|
+
opts.separator "A notification daemon."
|
87
|
+
opts.separator ""
|
88
|
+
opts.separator "Options:"
|
89
|
+
opts.on("-h", "--help", "Print this help message and exit.") { puts opts.ver; puts opts; exit }
|
90
|
+
opts.on("-v", "--version", "Print version number and exit.") { puts "#{File.basename($0)} version #{Tweet::VERSION}"; exit }
|
91
|
+
opts.on("-c", "--config", "=FILE", "Use FILE as the config file (default: #{@config_file}).") { |file| @config_file = file; parse_config }
|
92
|
+
opts.on("-p", "--priority", "=LEVEL", Integer, "Don't print notifications lower (larger number) than LEVEL priority; run -L for list.") { |val| @pri = val }
|
93
|
+
opts.on("-L", "--priorities", "--list-priorities", "List all available priority levels and associated numbers (higher priority has lower number).") { (Tweet::PRI.sort { |a, b| a[1] <=> b[1]}).each { |lvl, num| puts "#{lvl} = #{num}" }; exit }
|
94
|
+
opts.on("-g", "--plugins", "=DIRECTORY", "Use the plugins directory DIRECTORY.") { |dir| $: << dir; @plugins_dir = Pathname.new(dir) }
|
95
|
+
opts.on("-n", "--notifier", "--plugin", "=PLUGIN", "Use the plugin PLUGIN; run -l for a list.") { |plugin| @requested_plugins << plugin }
|
96
|
+
opts.on("-l", "--list", "--list-plugins", "List all available plugins.") { register_plugins; Tweet::Notifier.registered_notifiers.each { |n| puts n }; exit }
|
97
|
+
opts.on("-d", "--daemon", "Start in the background.") { daemonize = true }
|
98
|
+
opts.on("-D", "--nodaemon", "Start in the foreground (default).") { daemonize = false }
|
99
|
+
opts.on("-i", "--info", "Prints info about running tweetd, if one exists.") { puts "tweetd is #{(Tweet.running?)? '' : 'not '}running"; exit }
|
100
|
+
opts.on("-q", "--quit", "Stop any running daemons.") { Tweet.stop; exit }
|
101
|
+
opts.parse(ARGV)
|
102
|
+
|
103
|
+
# Create a block to be executed when we start.
|
104
|
+
starttweet = Proc.new do
|
105
|
+
puts "Tweet starting (listening on port #{Tweet::PORT}), displaying notifications of level #{@pri} or higher."
|
106
|
+
tweetd = Tweet::Monitor.new(@pri)
|
107
|
+
register_plugins
|
108
|
+
@requested_plugins = @config_requested_plugins if @requested_plugins.empty?
|
109
|
+
unless @requested_plugins.all? { |p| tweetd.activate_notifier(p) }
|
110
|
+
$stderr.puts "Some plugins you specified are not registered. Run with -l to see registered plugins you can use."
|
111
|
+
exit
|
112
|
+
end
|
113
|
+
puts "No plugins specified. Running tweetd would be useless." if @requested_plugins.empty?
|
114
|
+
puts "Loaded plugins: #{@requested_plugins.join(', ')}"
|
115
|
+
tweetd.start
|
116
|
+
tweetd.join
|
117
|
+
end
|
118
|
+
|
119
|
+
if Tweet.running?
|
120
|
+
puts "Tweet appears to already be running. Use tweetd -q to stop it."
|
121
|
+
exit
|
122
|
+
end
|
123
|
+
if daemonize == true
|
124
|
+
Daemons.daemonize
|
125
|
+
end
|
126
|
+
starttweet.call
|
@@ -0,0 +1,125 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html>
|
6
|
+
<head>
|
7
|
+
<title>Class: SimplePop</title>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
|
+
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
10
|
+
|
11
|
+
<script language="JavaScript" type="text/javascript">
|
12
|
+
// <![CDATA[
|
13
|
+
|
14
|
+
function toggleSource( id )
|
15
|
+
{
|
16
|
+
var elem
|
17
|
+
var link
|
18
|
+
|
19
|
+
if( document.getElementById )
|
20
|
+
{
|
21
|
+
elem = document.getElementById( id )
|
22
|
+
link = document.getElementById( "l_" + id )
|
23
|
+
}
|
24
|
+
else if ( document.all )
|
25
|
+
{
|
26
|
+
elem = eval( "document.all." + id )
|
27
|
+
link = eval( "document.all.l_" + id )
|
28
|
+
}
|
29
|
+
else
|
30
|
+
return false;
|
31
|
+
|
32
|
+
if( elem.style.display == "block" )
|
33
|
+
{
|
34
|
+
elem.style.display = "none"
|
35
|
+
link.innerHTML = "show source"
|
36
|
+
}
|
37
|
+
else
|
38
|
+
{
|
39
|
+
elem.style.display = "block"
|
40
|
+
link.innerHTML = "hide source"
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
function openCode( url )
|
45
|
+
{
|
46
|
+
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
47
|
+
}
|
48
|
+
// ]]>
|
49
|
+
</script>
|
50
|
+
</head>
|
51
|
+
|
52
|
+
<body>
|
53
|
+
<table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
|
54
|
+
<td class="file-title"><span class="file-title-prefix">Class</span><br />SimplePop</td>
|
55
|
+
<td align="right">
|
56
|
+
<table cellspacing=0 cellpadding=2>
|
57
|
+
<tr valign="top">
|
58
|
+
<td>In:</td>
|
59
|
+
<td>
|
60
|
+
<a href="../files/plugins/simplepop_rb.html">plugins/simplepop.rb</a>
|
61
|
+
</td>
|
62
|
+
</tr>
|
63
|
+
<tr>
|
64
|
+
<td>Parent:</td>
|
65
|
+
<td>
|
66
|
+
<a href="Tweet/Notifier.html">
|
67
|
+
Tweet::Notifier
|
68
|
+
</a>
|
69
|
+
</td>
|
70
|
+
</tr>
|
71
|
+
</table>
|
72
|
+
</td>
|
73
|
+
</tr>
|
74
|
+
</table>
|
75
|
+
<!-- banner header -->
|
76
|
+
|
77
|
+
<div id="bodyContent">
|
78
|
+
<div id="content">
|
79
|
+
|
80
|
+
<div class="description"><p>
|
81
|
+
GTK2 slider-window-based notifier plugin for tweet.
|
82
|
+
</p>
|
83
|
+
</div>
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
<div class="sectiontitle">Methods</div>
|
88
|
+
<ul>
|
89
|
+
<li><a href="#M000009">new</a></li>
|
90
|
+
<li><a href="#M000010">show</a></li>
|
91
|
+
</ul>
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
<div class="sectiontitle">Constants</div>
|
97
|
+
<table border='0' cellpadding='5'>
|
98
|
+
<tr valign='top'>
|
99
|
+
<td class="attr-name">XSCREENSAVER_WATCH</td>
|
100
|
+
<td>=</td>
|
101
|
+
<td class="attr-value">false</td>
|
102
|
+
</tr>
|
103
|
+
</table>
|
104
|
+
|
105
|
+
|
106
|
+
<div class="sectiontitle">Public Class methods</div>
|
107
|
+
<div class="method">
|
108
|
+
<div class="title">
|
109
|
+
<a name="M000009"></a><b>new</b>()
|
110
|
+
[ <a href="javascript:openCode('SimplePop.src/M000009.html')">source</a> ]
|
111
|
+
</div>
|
112
|
+
</div>
|
113
|
+
<div class="sectiontitle">Public Instance methods</div>
|
114
|
+
<div class="method">
|
115
|
+
<div class="title">
|
116
|
+
<a name="M000010"></a><b>show</b>(note)
|
117
|
+
[ <a href="javascript:openCode('SimplePop.src/M000010.html')">source</a> ]
|
118
|
+
</div>
|
119
|
+
</div>
|
120
|
+
</div>
|
121
|
+
|
122
|
+
</div>
|
123
|
+
|
124
|
+
</body>
|
125
|
+
</html>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html>
|
6
|
+
<head><title>new (SimplePop)</title>
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
8
|
+
<style>
|
9
|
+
.ruby-comment { color: green; font-style: italic }
|
10
|
+
.ruby-constant { color: #4433aa; font-weight: bold; }
|
11
|
+
.ruby-identifier { color: #222222; }
|
12
|
+
.ruby-ivar { color: #2233dd; }
|
13
|
+
.ruby-keyword { color: #3333FF; font-weight: bold }
|
14
|
+
.ruby-node { color: #777777; }
|
15
|
+
.ruby-operator { color: #111111; }
|
16
|
+
.ruby-regexp { color: #662222; }
|
17
|
+
.ruby-value { color: #662222; font-style: italic }
|
18
|
+
.kw { color: #3333FF; font-weight: bold }
|
19
|
+
.cmt { color: green; font-style: italic }
|
20
|
+
.str { color: #662222; font-style: italic }
|
21
|
+
.re { color: #662222; }
|
22
|
+
</style>
|
23
|
+
</head>
|
24
|
+
<body bgcolor="white">
|
25
|
+
<pre><span class="ruby-comment cmt"># File plugins/simplepop.rb, line 9</span>
|
26
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
|
27
|
+
<span class="ruby-ivar">@current_messages</span> = []
|
28
|
+
|
29
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-constant">Gtk</span>.<span class="ruby-identifier">main_level</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
30
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
|
31
|
+
<span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-identifier">init</span>
|
32
|
+
<span class="ruby-constant">Gtk</span>.<span class="ruby-identifier">main</span>
|
33
|
+
<span class="ruby-keyword kw">end</span>
|
34
|
+
<span class="ruby-keyword kw">end</span>
|
35
|
+
|
36
|
+
<span class="ruby-ivar">@suspend_popups</span> = <span class="ruby-keyword kw">false</span>
|
37
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-constant">XSCREENSAVER_WATCH</span>
|
38
|
+
<span class="ruby-keyword kw">begin</span>
|
39
|
+
<span class="ruby-identifier">xscreensaver</span> = <span class="ruby-value">`which xscreensaver-command`</span>
|
40
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">xscreensaver</span>
|
41
|
+
<span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
|
42
|
+
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-node">"|#{xscreensaver} -watch"</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ss</span><span class="ruby-operator">|</span>
|
43
|
+
<span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
44
|
+
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">ss</span>.<span class="ruby-identifier">gets</span>
|
45
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/^LOCK|^BLANK/</span>
|
46
|
+
<span class="ruby-ivar">@suspend_popups</span> = <span class="ruby-keyword kw">true</span>
|
47
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/^UNBLANK/</span>
|
48
|
+
<span class="ruby-ivar">@suspend_popups</span> = <span class="ruby-keyword kw">false</span>
|
49
|
+
<span class="ruby-keyword kw">end</span>
|
50
|
+
<span class="ruby-keyword kw">end</span>
|
51
|
+
<span class="ruby-keyword kw">end</span>
|
52
|
+
<span class="ruby-keyword kw">end</span>
|
53
|
+
<span class="ruby-keyword kw">end</span>
|
54
|
+
<span class="ruby-keyword kw">rescue</span>
|
55
|
+
<span class="ruby-keyword kw">end</span>
|
56
|
+
<span class="ruby-keyword kw">end</span>
|
57
|
+
<span class="ruby-keyword kw">end</span></pre>
|
58
|
+
</body>
|
59
|
+
</html>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html>
|
6
|
+
<head><title>show (SimplePop)</title>
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
8
|
+
<style>
|
9
|
+
.ruby-comment { color: green; font-style: italic }
|
10
|
+
.ruby-constant { color: #4433aa; font-weight: bold; }
|
11
|
+
.ruby-identifier { color: #222222; }
|
12
|
+
.ruby-ivar { color: #2233dd; }
|
13
|
+
.ruby-keyword { color: #3333FF; font-weight: bold }
|
14
|
+
.ruby-node { color: #777777; }
|
15
|
+
.ruby-operator { color: #111111; }
|
16
|
+
.ruby-regexp { color: #662222; }
|
17
|
+
.ruby-value { color: #662222; font-style: italic }
|
18
|
+
.kw { color: #3333FF; font-weight: bold }
|
19
|
+
.cmt { color: green; font-style: italic }
|
20
|
+
.str { color: #662222; font-style: italic }
|
21
|
+
.re { color: #662222; }
|
22
|
+
</style>
|
23
|
+
</head>
|
24
|
+
<body bgcolor="white">
|
25
|
+
<pre><span class="ruby-comment cmt"># File plugins/simplepop.rb, line 42</span>
|
26
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">show</span>(<span class="ruby-identifier">note</span>)
|
27
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@suspend_popups</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
|
28
|
+
|
29
|
+
<span class="ruby-comment cmt"># Create a new window.</span>
|
30
|
+
<span class="ruby-identifier">element</span> = <span class="ruby-constant">SimplePopWindow</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">note</span>, <span class="ruby-identifier">note</span>.<span class="ruby-identifier">duration</span>, <span class="ruby-ivar">@current_messages</span>.<span class="ruby-identifier">last</span>)
|
31
|
+
|
32
|
+
<span class="ruby-comment cmt"># Add the new window to the list of windows.</span>
|
33
|
+
<span class="ruby-ivar">@current_messages</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">element</span>
|
34
|
+
|
35
|
+
<span class="ruby-comment cmt"># Call notify which calls Gtk.main (blocks) until the window is clicked or</span>
|
36
|
+
<span class="ruby-comment cmt"># times out.</span>
|
37
|
+
<span class="ruby-identifier">element</span>.<span class="ruby-identifier">notify</span> <span class="ruby-comment cmt"># blocks until hidden.</span>
|
38
|
+
|
39
|
+
<span class="ruby-comment cmt"># Remove the stored reference to this window.</span>
|
40
|
+
<span class="ruby-ivar">@current_messages</span>.<span class="ruby-identifier">delete</span> <span class="ruby-identifier">element</span>
|
41
|
+
<span class="ruby-keyword kw">end</span></pre>
|
42
|
+
</body>
|
43
|
+
</html>
|
@@ -0,0 +1,126 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html>
|
6
|
+
<head>
|
7
|
+
<title>Class: SimplePopWindow</title>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
|
+
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
10
|
+
|
11
|
+
<script language="JavaScript" type="text/javascript">
|
12
|
+
// <![CDATA[
|
13
|
+
|
14
|
+
function toggleSource( id )
|
15
|
+
{
|
16
|
+
var elem
|
17
|
+
var link
|
18
|
+
|
19
|
+
if( document.getElementById )
|
20
|
+
{
|
21
|
+
elem = document.getElementById( id )
|
22
|
+
link = document.getElementById( "l_" + id )
|
23
|
+
}
|
24
|
+
else if ( document.all )
|
25
|
+
{
|
26
|
+
elem = eval( "document.all." + id )
|
27
|
+
link = eval( "document.all.l_" + id )
|
28
|
+
}
|
29
|
+
else
|
30
|
+
return false;
|
31
|
+
|
32
|
+
if( elem.style.display == "block" )
|
33
|
+
{
|
34
|
+
elem.style.display = "none"
|
35
|
+
link.innerHTML = "show source"
|
36
|
+
}
|
37
|
+
else
|
38
|
+
{
|
39
|
+
elem.style.display = "block"
|
40
|
+
link.innerHTML = "hide source"
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
function openCode( url )
|
45
|
+
{
|
46
|
+
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
47
|
+
}
|
48
|
+
// ]]>
|
49
|
+
</script>
|
50
|
+
</head>
|
51
|
+
|
52
|
+
<body>
|
53
|
+
<table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
|
54
|
+
<td class="file-title"><span class="file-title-prefix">Class</span><br />SimplePopWindow</td>
|
55
|
+
<td align="right">
|
56
|
+
<table cellspacing=0 cellpadding=2>
|
57
|
+
<tr valign="top">
|
58
|
+
<td>In:</td>
|
59
|
+
<td>
|
60
|
+
<a href="../files/plugins/simplepop_rb.html">plugins/simplepop.rb</a>
|
61
|
+
</td>
|
62
|
+
</tr>
|
63
|
+
<tr>
|
64
|
+
<td>Parent:</td>
|
65
|
+
<td>
|
66
|
+
Gtk::Window
|
67
|
+
</td>
|
68
|
+
</tr>
|
69
|
+
</table>
|
70
|
+
</td>
|
71
|
+
</tr>
|
72
|
+
</table>
|
73
|
+
<!-- banner header -->
|
74
|
+
|
75
|
+
<div id="bodyContent">
|
76
|
+
<div id="content">
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
<div class="sectiontitle">Methods</div>
|
82
|
+
<ul>
|
83
|
+
<li><a href="#M000005">new</a></li>
|
84
|
+
<li><a href="#M000006">notify</a></li>
|
85
|
+
</ul>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
<div class="sectiontitle">Attributes</div>
|
92
|
+
<table border='0' cellpadding='5'>
|
93
|
+
<tr valign='top'>
|
94
|
+
<td class='attr-rw'>
|
95
|
+
[R]
|
96
|
+
</td>
|
97
|
+
<td class='attr-name'>start_y</td>
|
98
|
+
<td class='attr-desc'></td>
|
99
|
+
</tr>
|
100
|
+
</table>
|
101
|
+
|
102
|
+
<div class="sectiontitle">Public Class methods</div>
|
103
|
+
<div class="method">
|
104
|
+
<div class="title">
|
105
|
+
<a name="M000005"></a><b>new</b>(note, duration=0, highest=nil)
|
106
|
+
[ <a href="javascript:openCode('SimplePopWindow.src/M000005.html')">source</a> ]
|
107
|
+
</div>
|
108
|
+
</div>
|
109
|
+
<div class="sectiontitle">Public Instance methods</div>
|
110
|
+
<div class="method">
|
111
|
+
<div class="title">
|
112
|
+
<a name="M000006"></a><b>notify</b>()
|
113
|
+
[ <a href="javascript:openCode('SimplePopWindow.src/M000006.html')">source</a> ]
|
114
|
+
</div>
|
115
|
+
<div class="description">
|
116
|
+
<p>
|
117
|
+
Activates the notification by displaying the window.
|
118
|
+
</p>
|
119
|
+
</div>
|
120
|
+
</div>
|
121
|
+
</div>
|
122
|
+
|
123
|
+
</div>
|
124
|
+
|
125
|
+
</body>
|
126
|
+
</html>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html>
|
6
|
+
<head><title>new (SimplePopWindow)</title>
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
8
|
+
<style>
|
9
|
+
.ruby-comment { color: green; font-style: italic }
|
10
|
+
.ruby-constant { color: #4433aa; font-weight: bold; }
|
11
|
+
.ruby-identifier { color: #222222; }
|
12
|
+
.ruby-ivar { color: #2233dd; }
|
13
|
+
.ruby-keyword { color: #3333FF; font-weight: bold }
|
14
|
+
.ruby-node { color: #777777; }
|
15
|
+
.ruby-operator { color: #111111; }
|
16
|
+
.ruby-regexp { color: #662222; }
|
17
|
+
.ruby-value { color: #662222; font-style: italic }
|
18
|
+
.kw { color: #3333FF; font-weight: bold }
|
19
|
+
.cmt { color: green; font-style: italic }
|
20
|
+
.str { color: #662222; font-style: italic }
|
21
|
+
.re { color: #662222; }
|
22
|
+
</style>
|
23
|
+
</head>
|
24
|
+
<body bgcolor="white">
|
25
|
+
<pre><span class="ruby-comment cmt"># File plugins/simplepop.rb, line 65</span>
|
26
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">note</span>, <span class="ruby-identifier">duration</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">highest</span>=<span class="ruby-keyword kw">nil</span>)
|
27
|
+
<span class="ruby-ivar">@note</span> = <span class="ruby-identifier">note</span>
|
28
|
+
<span class="ruby-ivar">@duration</span> = <span class="ruby-identifier">duration</span>
|
29
|
+
<span class="ruby-ivar">@width</span> = <span class="ruby-value">260</span>
|
30
|
+
<span class="ruby-ivar">@height</span> = <span class="ruby-value">80</span>
|
31
|
+
|
32
|
+
<span class="ruby-keyword kw">super</span>(<span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">Window</span><span class="ruby-operator">::</span><span class="ruby-constant">POPUP</span>)
|
33
|
+
|
34
|
+
<span class="ruby-identifier">resize</span>(<span class="ruby-ivar">@width</span>,<span class="ruby-ivar">@height</span>)
|
35
|
+
<span class="ruby-identifier">stick</span>
|
36
|
+
<span class="ruby-identifier">title</span> = <span class="ruby-ivar">@note</span>.<span class="ruby-identifier">title</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@note</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:title</span>
|
37
|
+
<span class="ruby-identifier">title</span> = <span class="ruby-ivar">@note</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">title</span>
|
38
|
+
|
39
|
+
<span class="ruby-ivar">@root_win</span> = <span class="ruby-constant">Gdk</span><span class="ruby-operator">::</span><span class="ruby-constant">Window</span>.<span class="ruby-identifier">default_root_window</span>
|
40
|
+
<span class="ruby-ivar">@start_x</span> = <span class="ruby-ivar">@root_win</span>.<span class="ruby-identifier">geometry</span>[<span class="ruby-value">2</span>]<span class="ruby-operator">-</span><span class="ruby-ivar">@width</span><span class="ruby-operator">-</span><span class="ruby-value">10</span>
|
41
|
+
<span class="ruby-ivar">@start_y</span> = <span class="ruby-ivar">@root_win</span>.<span class="ruby-identifier">geometry</span>[<span class="ruby-value">3</span>]<span class="ruby-operator">-</span><span class="ruby-ivar">@height</span>
|
42
|
+
<span class="ruby-ivar">@start_y</span> = (<span class="ruby-identifier">highest</span>.<span class="ruby-identifier">start_y</span><span class="ruby-operator">-</span><span class="ruby-ivar">@height</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">highest</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:start_y</span>
|
43
|
+
<span class="ruby-identifier">screen_top</span> = <span class="ruby-value">0</span>
|
44
|
+
<span class="ruby-ivar">@start_y</span> = <span class="ruby-ivar">@root_win</span>.<span class="ruby-identifier">geometry</span>[<span class="ruby-value">3</span>]<span class="ruby-operator">-</span><span class="ruby-ivar">@height</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@start_y</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">screen_top</span>
|
45
|
+
<span class="ruby-identifier">move</span>(<span class="ruby-ivar">@start_x</span>,<span class="ruby-ivar">@start_y</span>)
|
46
|
+
|
47
|
+
<span class="ruby-ivar">@note</span> = <span class="ruby-ivar">@note</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">"<"</span>, <span class="ruby-value str">"&lt;"</span>)
|
48
|
+
<span class="ruby-ivar">@note</span> = <span class="ruby-ivar">@note</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">">"</span>, <span class="ruby-value str">"&gt;"</span>)
|
49
|
+
|
50
|
+
<span class="ruby-ivar">@button</span> = <span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">Button</span>.<span class="ruby-identifier">new</span>
|
51
|
+
<span class="ruby-identifier">frame</span> = <span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">Frame</span>.<span class="ruby-identifier">new</span>
|
52
|
+
<span class="ruby-identifier">button_box</span> = <span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">HBox</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-value">0</span>)
|
53
|
+
<span class="ruby-identifier">image</span> = <span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">Image</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">Stock</span><span class="ruby-operator">::</span><span class="ruby-constant">DIALOG_WARNING</span>, <span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">IconSize</span><span class="ruby-operator">::</span><span class="ruby-constant">DIALOG</span>)
|
54
|
+
<span class="ruby-identifier">label</span> = <span class="ruby-constant">Gtk</span><span class="ruby-operator">::</span><span class="ruby-constant">Label</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@note</span>)
|
55
|
+
|
56
|
+
<span class="ruby-identifier">label</span>.<span class="ruby-identifier">width_chars</span> = (<span class="ruby-ivar">@width</span><span class="ruby-operator">-</span><span class="ruby-identifier">image</span>.<span class="ruby-identifier">width_request</span>)<span class="ruby-operator">/</span><span class="ruby-value">10</span>
|
57
|
+
<span class="ruby-identifier">col</span> = (<span class="ruby-ivar">@width</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">image</span>.<span class="ruby-identifier">width_request</span>)<span class="ruby-operator">/</span><span class="ruby-value">10</span>
|
58
|
+
<span class="ruby-identifier">col</span> = <span class="ruby-value">40</span>
|
59
|
+
<span class="ruby-identifier">wrapped_text</span> = <span class="ruby-identifier">label</span>.<span class="ruby-identifier">text</span>
|
60
|
+
<span class="ruby-identifier">wrapped_text</span> = <span class="ruby-identifier">wrapped_text</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-node">/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/</span>, <span class="ruby-value str">"\\1\\3\n"</span>)
|
61
|
+
<span class="ruby-identifier">wrapped_text</span> = <span class="ruby-identifier">wrapped_text</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\n"</span>)[<span class="ruby-value">0</span> <span class="ruby-operator">..</span> <span class="ruby-value">4</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n"</span>)
|
62
|
+
<span class="ruby-identifier">label</span>.<span class="ruby-identifier">set_markup</span>(<span class="ruby-node">"<small>#{wrapped_text}</small>"</span>)
|
63
|
+
|
64
|
+
<span class="ruby-identifier">frame</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">button_box</span>)
|
65
|
+
<span class="ruby-identifier">button_box</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">image</span>)
|
66
|
+
<span class="ruby-identifier">button_box</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">label</span>)
|
67
|
+
<span class="ruby-ivar">@button</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">frame</span>)
|
68
|
+
|
69
|
+
<span class="ruby-ivar">@button</span>.<span class="ruby-identifier">signal_connect</span>(<span class="ruby-value str">'clicked'</span>) { <span class="ruby-ivar">@sleep_thread</span>.<span class="ruby-identifier">kill</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sleep_thread</span> }
|
70
|
+
<span class="ruby-identifier">add</span>(<span class="ruby-ivar">@button</span>)
|
71
|
+
|
72
|
+
<span class="ruby-identifier">realize</span>
|
73
|
+
<span class="ruby-ivar">@window</span> = <span class="ruby-identifier">window</span> <span class="ruby-comment cmt"># The GDK window object this uses.</span>
|
74
|
+
<span class="ruby-identifier">show_all</span>
|
75
|
+
<span class="ruby-keyword kw">end</span></pre>
|
76
|
+
</body>
|
77
|
+
</html>
|