circus-deployment 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/LICENSE +23 -0
  2. data/README.md +0 -0
  3. data/bin/circus +24 -0
  4. data/lib/bundler/circus_bundler.rb +24 -0
  5. data/lib/bundler/circus_util.rb +43 -0
  6. data/lib/bundler/patches.rb +18 -0
  7. data/lib/circus/act.rb +74 -0
  8. data/lib/circus/actstore_client.rb +30 -0
  9. data/lib/circus/agents/agent.rb +59 -0
  10. data/lib/circus/agents/client.rb +77 -0
  11. data/lib/circus/agents/connection.rb +76 -0
  12. data/lib/circus/agents/conversation.rb +17 -0
  13. data/lib/circus/agents/dbus_connection.rb +85 -0
  14. data/lib/circus/agents/dbus_logger.rb +34 -0
  15. data/lib/circus/agents/encoding.rb +32 -0
  16. data/lib/circus/agents/logger.rb +52 -0
  17. data/lib/circus/agents/params.rb +47 -0
  18. data/lib/circus/agents/ssh_connection.rb +120 -0
  19. data/lib/circus/application.rb +99 -0
  20. data/lib/circus/booth_client.rb +25 -0
  21. data/lib/circus/booth_tool.rb +98 -0
  22. data/lib/circus/cli.rb +147 -0
  23. data/lib/circus/clown_client.rb +27 -0
  24. data/lib/circus/connection_builder.rb +32 -0
  25. data/lib/circus/external_util.rb +14 -0
  26. data/lib/circus/local_config.rb +65 -0
  27. data/lib/circus/profiles/base.rb +115 -0
  28. data/lib/circus/profiles/django.rb +90 -0
  29. data/lib/circus/profiles/jekyll.rb +90 -0
  30. data/lib/circus/profiles/make_base.rb +17 -0
  31. data/lib/circus/profiles/pure_py.rb +46 -0
  32. data/lib/circus/profiles/pure_rb.rb +48 -0
  33. data/lib/circus/profiles/python_base.rb +39 -0
  34. data/lib/circus/profiles/rack.rb +59 -0
  35. data/lib/circus/profiles/ruby_base.rb +52 -0
  36. data/lib/circus/profiles/shell.rb +46 -0
  37. data/lib/circus/profiles.rb +10 -0
  38. data/lib/circus/repos/git.rb +42 -0
  39. data/lib/circus/repos/mercurial.rb +42 -0
  40. data/lib/circus/repos.rb +16 -0
  41. data/lib/circus/resource_allocator_client.rb +19 -0
  42. data/lib/circus/stdout_logger.rb +11 -0
  43. data/lib/circus/version.rb +3 -0
  44. data/lib/circus.rb +9 -0
  45. data/vendor/ruby-dbus/COPYING +504 -0
  46. data/vendor/ruby-dbus/ChangeLog +782 -0
  47. data/vendor/ruby-dbus/HOWTO-RELEASE +14 -0
  48. data/vendor/ruby-dbus/NEWS +104 -0
  49. data/vendor/ruby-dbus/README +53 -0
  50. data/vendor/ruby-dbus/Rakefile +47 -0
  51. data/vendor/ruby-dbus/doc/tutorial/src/00.index.page +12 -0
  52. data/vendor/ruby-dbus/doc/tutorial/src/10.intro.page +127 -0
  53. data/vendor/ruby-dbus/doc/tutorial/src/20.basic_client.page +174 -0
  54. data/vendor/ruby-dbus/doc/tutorial/src/30.service.page +121 -0
  55. data/vendor/ruby-dbus/doc/tutorial/src/default.css +129 -0
  56. data/vendor/ruby-dbus/doc/tutorial/src/default.template +46 -0
  57. data/vendor/ruby-dbus/examples/gdbus/gdbus +255 -0
  58. data/vendor/ruby-dbus/examples/gdbus/gdbus.glade +184 -0
  59. data/vendor/ruby-dbus/examples/gdbus/launch.sh +4 -0
  60. data/vendor/ruby-dbus/examples/no-introspect/nm-test.rb +21 -0
  61. data/vendor/ruby-dbus/examples/no-introspect/tracker-test.rb +16 -0
  62. data/vendor/ruby-dbus/examples/rhythmbox/playpause.rb +25 -0
  63. data/vendor/ruby-dbus/examples/service/call_service.rb +25 -0
  64. data/vendor/ruby-dbus/examples/service/service_newapi.rb +51 -0
  65. data/vendor/ruby-dbus/examples/simple/call_introspect.rb +34 -0
  66. data/vendor/ruby-dbus/examples/utils/listnames.rb +11 -0
  67. data/vendor/ruby-dbus/examples/utils/notify.rb +19 -0
  68. data/vendor/ruby-dbus/lib/dbus/auth.rb +156 -0
  69. data/vendor/ruby-dbus/lib/dbus/bus.rb +750 -0
  70. data/vendor/ruby-dbus/lib/dbus/export.rb +133 -0
  71. data/vendor/ruby-dbus/lib/dbus/introspect.rb +544 -0
  72. data/vendor/ruby-dbus/lib/dbus/marshall.rb +443 -0
  73. data/vendor/ruby-dbus/lib/dbus/matchrule.rb +100 -0
  74. data/vendor/ruby-dbus/lib/dbus/message.rb +293 -0
  75. data/vendor/ruby-dbus/lib/dbus/type.rb +222 -0
  76. data/vendor/ruby-dbus/lib/dbus.rb +89 -0
  77. data/vendor/ruby-dbus/ruby-dbus.gemspec +28 -0
  78. data/vendor/ruby-dbus/setup.rb +1585 -0
  79. data/vendor/ruby-dbus/test/Makefile +4 -0
  80. data/vendor/ruby-dbus/test/bus_driver_test.rb +21 -0
  81. data/vendor/ruby-dbus/test/server_robustness_test.rb +41 -0
  82. data/vendor/ruby-dbus/test/server_test.rb +44 -0
  83. data/vendor/ruby-dbus/test/service_newapi.rb +99 -0
  84. data/vendor/ruby-dbus/test/session_bus_test_manual.rb +20 -0
  85. data/vendor/ruby-dbus/test/signal_test.rb +57 -0
  86. data/vendor/ruby-dbus/test/t1 +4 -0
  87. data/vendor/ruby-dbus/test/t2.rb +66 -0
  88. data/vendor/ruby-dbus/test/t3-ticket27.rb +18 -0
  89. data/vendor/ruby-dbus/test/t5-report-dbus-interface.rb +58 -0
  90. data/vendor/ruby-dbus/test/t6-loop.rb +85 -0
  91. data/vendor/ruby-dbus/test/test_all +26 -0
  92. data/vendor/ruby-dbus/test/test_server +74 -0
  93. data/vendor/ruby-dbus/test/variant_test.rb +66 -0
  94. metadata +225 -0
@@ -0,0 +1,129 @@
1
+ a { text-decoration: none; }
2
+ a:link { color: #2E5F84; background-color: inherit; }
3
+ a:visited { color: #4084B8; background-color: inherit; }
4
+ a:hover,
5
+ a:active {
6
+ color: #4084B8;
7
+ background-color: inherit;
8
+ text-decoration: underline;
9
+ }
10
+
11
+ #content {
12
+ width: 50em;
13
+ margin: 0pt auto;
14
+ }
15
+
16
+ #header {
17
+ padding: 2pt;
18
+ color: inherit;
19
+ background-color: #C61C18;
20
+ border-top: thin solid #891D1B;
21
+ border-left: thin solid #891D1B;
22
+ border-right: thin solid #891D1B;
23
+ }
24
+
25
+ #header h1 {
26
+ margin: 5pt;
27
+ color: #FFFFFF;
28
+ background-color: inherit;
29
+ }
30
+
31
+ #footer {
32
+ margin-top: 5pt;
33
+ border-top: thin solid #891D1B;
34
+ }
35
+
36
+ #body { text-align: justify; }
37
+
38
+ .bar {
39
+ clear: both;
40
+ padding: 2pt;
41
+ text-align: center;
42
+ font-size: 83%;
43
+ border: thin solid #891D1B;
44
+ color: inherit;
45
+ background-color: #F07F7D;
46
+ }
47
+ .bar a:link { color: #FFFFFF; background-color: inherit; }
48
+ .bar a:visited { color: #FFFFFF; background-color: inherit; }
49
+
50
+ .left, .right {
51
+ padding: 0pt 1em;
52
+ }
53
+
54
+ .left {
55
+ float: left;
56
+ text-align: left;
57
+ }
58
+
59
+ .right {
60
+ float: right;
61
+ text-align: right;
62
+ }
63
+
64
+ .log { table-layout: fixed; width: 100%; }
65
+ .log tr.header .day { width: 6em; }
66
+
67
+ code { color: inherit; background-color: #F0E7E7; }
68
+
69
+ pre {
70
+ font-size: 90%;
71
+ overflow: hidden;
72
+ padding-left: 10pt;
73
+ border: thin solid #F0B4B4;
74
+ color: inherit;
75
+ background-color: #F0DDDD;
76
+ }
77
+
78
+ pre code { color: inherit; background-color: #F0DDDD; }
79
+
80
+ h2, h3 {
81
+ color: #1D3B52;
82
+ background-color: inherit;
83
+ border-bottom: thin dashed #1D3B52;
84
+ }
85
+
86
+ table th { color: inherit; background-color: #B4D2E8; }
87
+
88
+ /* styling the menu */
89
+
90
+ #menu {
91
+ float: right;
92
+ width: 15em;
93
+ margin: 10pt 0pt 5pt 10pt;
94
+ font-size: 83%;
95
+ border: thin solid #2E5F84;
96
+ color: inherit;
97
+ background-color: #B4D2E8;
98
+ }
99
+
100
+ #menu a {
101
+ text-decoration: none;
102
+ }
103
+
104
+ #menu a:hover {
105
+ text-decoration: underline;
106
+ }
107
+
108
+ #menu li.webgen-menu-item-selected {
109
+ font-weight: bold;
110
+ }
111
+
112
+ #menu ul {
113
+ list-style-type: none;
114
+ padding-left: 15pt; /* first ul has some padding left & right */
115
+ padding-right: 5pt;
116
+ }
117
+
118
+ #menu li {
119
+ padding: 3pt 0pt; /* inter-item padding */
120
+ color: #2E5F84;
121
+ background-color: inherit;
122
+ }
123
+
124
+ #menu li > ul {
125
+ font-weight: normal;
126
+ padding-top: 3pt; /* padding in front of first item */
127
+ padding-left: 7pt; /* indentation */
128
+ padding-right: 0pt;
129
+ }
@@ -0,0 +1,46 @@
1
+ --- content, html
2
+ <?xml version="1.0" encoding="UTF-8"?>
3
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{lang:}">
5
+ <head>
6
+ <title>The Ruby D-Bus Tutorial - {title: }</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+ <meta name="description" content="The Ruby D-Bus tutorial" />
9
+ <meta name="keywords" content="ruby,d-bus,dbus,tutorial,object,interface,service,proxy" />
10
+ <meta name="author" content="Arnaud Cornet" />
11
+ <meta name="generator" content="Webgen - http://webgen.rubyforge.com/" />
12
+ <link href="{relocatable: default.css}" rel="stylesheet" type="text/css" />
13
+ <link href="{resource: webgen-css}" rel="stylesheet" type="text/css" />
14
+ </head>
15
+ <body>
16
+ <div id="content">
17
+ <div id="header">
18
+ <h1>Ruby D-Bus Tutorial - {title: }</h1>
19
+ </div>
20
+
21
+ <div id="headerbar" class="bar">
22
+ <span class="left">Location: {breadcrumbTrail: }</span>
23
+ <span class="right">Language: {langbar: }</span>
24
+ <div style="clear:both"></div>
25
+ </div>
26
+
27
+ <div id="menu">
28
+ {menu: vertical}
29
+ </div>
30
+
31
+ <div id="body">
32
+ {block: }
33
+ </div>
34
+
35
+ <div id="footer" class="bar">
36
+ Generated with <a href="http://webgen.rubyforge.org">webgen</a> on <b>{date: }</b><br/>
37
+ &copy; Arnaud Cornet and Paul van Tilburg; this tutorial is part of
38
+ free software; you can redistribute it and/or modify it under the
39
+ terms of the GNU
40
+ <a href="http://www.gnu.org/licenses/lgpl.html">Lesser General Public
41
+ License, version 2.1</a> as published by the
42
+ <a href="http://www.fsf.org/">Free Software Foundation</a>.
43
+ </div>
44
+ </div>
45
+ </body>
46
+ </html>
@@ -0,0 +1,255 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This is a quite complex example using internal lower level API.
4
+ # Not a good starting point, but might be usefull if you want to do tricky
5
+ # stuff.
6
+ # -- Arnaud
7
+
8
+ require 'dbus'
9
+ require 'libglade2'
10
+
11
+ $enable_system = false
12
+
13
+ class MethodCallWindow
14
+ def initialize(pwindow, intf, meth)
15
+ @intf, @meth = intf, meth
16
+ @entries = Array.new
17
+ @dialog = Gtk::Dialog.new(meth.name, pwindow,
18
+ Gtk::Dialog::MODAL | Gtk::Dialog::NO_SEPARATOR,
19
+ [Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK],
20
+ [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL])
21
+
22
+ @meth.params.each do |param|
23
+ shbox = Gtk::HBox.new(true, 0)
24
+ label = Gtk::Label.new("#{param[0]} (#{param[1]})")
25
+ input = Gtk::Entry.new
26
+ @entries << input
27
+ shbox.pack_start(label, true, true, 0)
28
+ shbox.pack_start(input, true, true, 0)
29
+ @dialog.vbox.pack_start(shbox, true, true, 0)
30
+ @dialog.vbox.show_all
31
+ end
32
+ end
33
+
34
+ def run
35
+ on_ok if @dialog.run == Gtk::Dialog::RESPONSE_OK
36
+ @dialog.destroy
37
+ end
38
+
39
+ def on_ok
40
+ bus = @intf.object.bus
41
+ m = DBus::Message.new(DBus::Message::METHOD_CALL)
42
+ m.path = @intf.object.path
43
+ m.interface = @intf.name
44
+ m.destination = @intf.object.destination
45
+ m.member = @meth.name
46
+ m.sender = bus.unique_name
47
+ @meth.params.each_with_index do |param, idx|
48
+ entry = @entries[idx]
49
+ data = nil
50
+ case param[1]
51
+ when "u", "i"
52
+ data = entry.text.to_i
53
+ when "s"
54
+ data = entry.text
55
+ when /^a/
56
+ begin
57
+ data = eval(entry.text)
58
+ rescue
59
+ puts "Incorrect data: #{data}"
60
+ end
61
+ end
62
+ m.add_param(param[1], data)
63
+ end
64
+ bus.on_return(m) do |retm|
65
+ if retm.is_a?(DBus::Error)
66
+ puts "Error: #{retm.inspect}"
67
+ else
68
+ puts "Method #{m.member} returns: #{retm.params.inspect}"
69
+ end
70
+ end
71
+ bus.send(m.marshall)
72
+ end
73
+ end
74
+
75
+ class DBusUI
76
+ def initialize
77
+ @glade = GladeXML.new("gdbus.glade") { |h| method(h) } # This block is like
78
+ # black magic :)
79
+ @sessiontreeview = @glade.get_widget("sessiontreeview")
80
+ setup_treeview_renderer(@sessiontreeview, 'D-Bus Objects')
81
+ @sessiontreeview.selection.signal_connect("changed") do |selection|
82
+ on_treeview_selection_changed(selection)
83
+ end
84
+
85
+ @systemtreeview = @glade.get_widget("systemtreeview")
86
+ setup_treeview_renderer(@systemtreeview, 'D-Bus Objects')
87
+ @systemtreeview.selection.signal_connect("changed") do |selection|
88
+ on_treeview_selection_changed(selection)
89
+ end
90
+
91
+ @methsigtreeview = @glade.get_widget("methsigtreeview")
92
+ # ierk
93
+ setup_methodview_renderer(@methsigtreeview)
94
+
95
+ @window = @glade.get_widget("window1")
96
+ @window.show_all
97
+ start_buses
98
+ end
99
+
100
+ def beautify_method(meth)
101
+ # Damn, this need to be rewritten :p
102
+ s = meth.name + "("
103
+ if meth.kind_of?(DBus::Method)
104
+ s += (meth.params.collect { |a| "in #{a[0]}:#{a[1]}" } +
105
+ meth.rets.collect { |a| "out #{a[0]}:#{a[1]}" }).join(", ")
106
+ elsif meth.kind_of?(DBus::Signal)
107
+ s += (meth.params.collect { |a| "in #{a[0]}:#{a[1]}" }).join(", ")
108
+ end
109
+ s += ")"
110
+ s
111
+ end
112
+
113
+ def on_treeview_selection_changed(selection)
114
+ selected = selection.selected
115
+ model = Gtk::ListStore.new(String, String, DBus::Method,
116
+ DBus::ProxyObjectInterface)
117
+ @methsigtreeview.model = model
118
+ if selected
119
+ if intf = selected[1]
120
+ intf.methods.keys.sort.each do |mi|
121
+ m = intf.methods[mi]
122
+ subiter = model.append
123
+ subiter[0] = beautify_method(m)
124
+ subiter[1] = "M"
125
+ subiter[2] = m
126
+ subiter[3] = intf
127
+ end
128
+ intf.signals.keys.sort.each do |mi|
129
+ m = intf.signals[mi]
130
+ subiter = model.append
131
+ subiter[0] = beautify_method(m)
132
+ subiter[1] = "S"
133
+ subiter[2] = m
134
+ subiter[3] = intf
135
+ end
136
+ end
137
+ end
138
+ end
139
+
140
+ def on_method_activated(view, path, column)
141
+ name = view.model.get_iter(path)[0]
142
+ puts "Clicked on: #{name.inspect}"
143
+ type = view.model.get_iter(path)[1]
144
+ intf = view.model.get_iter(path)[2]
145
+ if type == "M"
146
+ method = view.model.get_iter(path)[2]
147
+ intf = view.model.get_iter(path)[3]
148
+ MethodCallWindow.new(@window, intf, method).run
149
+ elsif type == "S"
150
+ signal = view.model.get_iter(path)[2]
151
+ intf = view.model.get_iter(path)[3]
152
+ mr = DBus::MatchRule.new.from_signal(intf, signal)
153
+ puts "*** Registering matchrule: #{mr.to_s} ***"
154
+ intf.object.bus.add_match(mr) do |sig|
155
+ puts "Got #{sig.member}(#{sig.params.join(',')})"
156
+ end
157
+ end
158
+ end
159
+
160
+ def on_sessiontreeview_row_activated(view, path, column)
161
+ name = view.model.get_iter(path)[0]
162
+ puts "Clicked on: #{name.inspect}"
163
+ intf = view.model.get_iter(path)[1]
164
+ end
165
+
166
+ def on_window_delete_event(window, event)
167
+ Gtk.main_quit
168
+ end
169
+
170
+ def setup_methodview_renderer(treeview)
171
+ renderer = Gtk::CellRendererText.new
172
+ col_offset = treeview.insert_column(-1, "T", renderer, 'text' => 1)
173
+ col_offset = treeview.insert_column(-1, "Name", renderer, 'text' => 0)
174
+ column = treeview.get_column(col_offset - 1)
175
+ column.clickable = true
176
+ end
177
+
178
+ def setup_treeview_renderer(treeview, str)
179
+ renderer = Gtk::CellRendererText.new
180
+ col_offset = treeview.insert_column(-1, str, renderer, 'text' => 0)
181
+ column = treeview.get_column(col_offset - 1)
182
+ column.clickable = true
183
+ end
184
+
185
+ def process_input(bus)
186
+ # THIS is the bad ass loop
187
+ # we should return to the glib main loop from time to time. Anyone with a
188
+ # proper way to handle it ?
189
+ bus.update_buffer
190
+ bus.messages.each do |msg|
191
+ bus.process(msg)
192
+ end
193
+ end
194
+
195
+ def start_buses
196
+ # call glibize to get dbus messages from the glib mainloop
197
+ DBus::SessionBus.instance.glibize
198
+ DBus::SystemBus.instance.glibize if $enable_system
199
+
200
+ DBus::SessionBus.instance.proxy.ListNames do |msg, names|
201
+ fill_treeview(DBus::SessionBus.instance, @sessiontreeview, names)
202
+ end
203
+ if $enable_system
204
+ DBus::SystemBus.instance.proxy.ListNames do |msg, names|
205
+ fill_treeview(DBus::SystemBus.instance, @systemtreeview, names)
206
+ end
207
+ end
208
+ end
209
+
210
+ def walk_node(model, iter, node)
211
+ node.each_pair do |key, val|
212
+ subiter = model.append(iter)
213
+ subiter[0] = key
214
+ walk_node(model, subiter, val)
215
+ end
216
+ unless node.object.nil?
217
+ node.object.interfaces.sort.each do |ifname|
218
+ subiter = model.append(iter)
219
+ subiter[0] = ifname
220
+ subiter[1] = node.object[ifname]
221
+ end
222
+ end
223
+ end
224
+
225
+ def introspect_services(model, bus)
226
+ el = @introspect_array.shift
227
+ if not el =~ /^:/
228
+ iter = model.append(nil)
229
+ iter[0] = el
230
+ puts "introspecting: #{el}"
231
+ begin
232
+ service = bus.service(el).introspect
233
+ walk_node(model, iter, service.root)
234
+ rescue Exception => e
235
+ puts "DBus Error:"
236
+ puts e.backtrace.join("\n")
237
+ end
238
+ end
239
+
240
+ not @introspect_array.empty?
241
+ end
242
+
243
+ def fill_treeview(bus, treeview, array)
244
+ model = Gtk::TreeStore.new(String, DBus::ProxyObjectInterface)
245
+ treeview.model = model
246
+ @introspect_array = array.sort
247
+ Gtk::idle_add { introspect_services(model, bus) }
248
+ end
249
+
250
+ def main
251
+ Gtk.main
252
+ end
253
+ end
254
+
255
+ DBusUI.new.main
@@ -0,0 +1,184 @@
1
+ <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
2
+ <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
3
+
4
+ <glade-interface>
5
+
6
+ <widget class="GtkWindow" id="window1">
7
+ <property name="visible">True</property>
8
+ <property name="title" translatable="yes">GD-Bus</property>
9
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
10
+ <property name="window_position">GTK_WIN_POS_NONE</property>
11
+ <property name="modal">False</property>
12
+ <property name="default_width">500</property>
13
+ <property name="default_height">400</property>
14
+ <property name="resizable">True</property>
15
+ <property name="destroy_with_parent">False</property>
16
+ <property name="decorated">True</property>
17
+ <property name="skip_taskbar_hint">False</property>
18
+ <property name="skip_pager_hint">False</property>
19
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
20
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
21
+ <property name="focus_on_map">True</property>
22
+ <property name="urgency_hint">False</property>
23
+ <signal name="delete_event" handler="on_window_delete_event" last_modification_time="Sat, 17 Mar 2007 14:49:13 GMT"/>
24
+
25
+ <child>
26
+ <widget class="GtkHPaned" id="hpaned1">
27
+ <property name="visible">True</property>
28
+ <property name="can_focus">True</property>
29
+
30
+ <child>
31
+ <widget class="GtkNotebook" id="notebook1">
32
+ <property name="visible">True</property>
33
+ <property name="can_focus">True</property>
34
+ <property name="show_tabs">True</property>
35
+ <property name="show_border">True</property>
36
+ <property name="tab_pos">GTK_POS_TOP</property>
37
+ <property name="scrollable">False</property>
38
+ <property name="enable_popup">False</property>
39
+
40
+ <child>
41
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
42
+ <property name="visible">True</property>
43
+ <property name="can_focus">True</property>
44
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
45
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
46
+ <property name="shadow_type">GTK_SHADOW_IN</property>
47
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
48
+
49
+ <child>
50
+ <widget class="GtkTreeView" id="sessiontreeview">
51
+ <property name="visible">True</property>
52
+ <property name="can_focus">True</property>
53
+ <property name="headers_visible">True</property>
54
+ <property name="rules_hint">False</property>
55
+ <property name="reorderable">False</property>
56
+ <property name="enable_search">True</property>
57
+ <property name="fixed_height_mode">False</property>
58
+ <property name="hover_selection">False</property>
59
+ <property name="hover_expand">False</property>
60
+ <signal name="row_activated" handler="on_sessiontreeview_row_activated" last_modification_time="Sat, 17 Mar 2007 10:17:11 GMT"/>
61
+ </widget>
62
+ </child>
63
+ </widget>
64
+ <packing>
65
+ <property name="tab_expand">False</property>
66
+ <property name="tab_fill">True</property>
67
+ </packing>
68
+ </child>
69
+
70
+ <child>
71
+ <widget class="GtkLabel" id="label1">
72
+ <property name="visible">True</property>
73
+ <property name="label" translatable="yes">Session</property>
74
+ <property name="use_underline">False</property>
75
+ <property name="use_markup">False</property>
76
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
77
+ <property name="wrap">False</property>
78
+ <property name="selectable">False</property>
79
+ <property name="xalign">0.5</property>
80
+ <property name="yalign">0.5</property>
81
+ <property name="xpad">0</property>
82
+ <property name="ypad">0</property>
83
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
84
+ <property name="width_chars">-1</property>
85
+ <property name="single_line_mode">False</property>
86
+ <property name="angle">0</property>
87
+ </widget>
88
+ <packing>
89
+ <property name="type">tab</property>
90
+ </packing>
91
+ </child>
92
+
93
+ <child>
94
+ <widget class="GtkScrolledWindow" id="scrolledwindow5">
95
+ <property name="visible">True</property>
96
+ <property name="can_focus">True</property>
97
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
98
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
99
+ <property name="shadow_type">GTK_SHADOW_IN</property>
100
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
101
+
102
+ <child>
103
+ <widget class="GtkTreeView" id="systemtreeview">
104
+ <property name="visible">True</property>
105
+ <property name="can_focus">True</property>
106
+ <property name="headers_visible">True</property>
107
+ <property name="rules_hint">False</property>
108
+ <property name="reorderable">False</property>
109
+ <property name="enable_search">True</property>
110
+ <property name="fixed_height_mode">False</property>
111
+ <property name="hover_selection">False</property>
112
+ <property name="hover_expand">False</property>
113
+ </widget>
114
+ </child>
115
+ </widget>
116
+ <packing>
117
+ <property name="tab_expand">False</property>
118
+ <property name="tab_fill">True</property>
119
+ </packing>
120
+ </child>
121
+
122
+ <child>
123
+ <widget class="GtkLabel" id="label2">
124
+ <property name="visible">True</property>
125
+ <property name="label" translatable="yes">System</property>
126
+ <property name="use_underline">False</property>
127
+ <property name="use_markup">False</property>
128
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
129
+ <property name="wrap">False</property>
130
+ <property name="selectable">False</property>
131
+ <property name="xalign">0.5</property>
132
+ <property name="yalign">0.5</property>
133
+ <property name="xpad">0</property>
134
+ <property name="ypad">0</property>
135
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
136
+ <property name="width_chars">-1</property>
137
+ <property name="single_line_mode">False</property>
138
+ <property name="angle">0</property>
139
+ </widget>
140
+ <packing>
141
+ <property name="type">tab</property>
142
+ </packing>
143
+ </child>
144
+ </widget>
145
+ <packing>
146
+ <property name="shrink">True</property>
147
+ <property name="resize">False</property>
148
+ </packing>
149
+ </child>
150
+
151
+ <child>
152
+ <widget class="GtkScrolledWindow" id="scrolledwindow4">
153
+ <property name="visible">True</property>
154
+ <property name="can_focus">True</property>
155
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
156
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
157
+ <property name="shadow_type">GTK_SHADOW_IN</property>
158
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
159
+
160
+ <child>
161
+ <widget class="GtkTreeView" id="methsigtreeview">
162
+ <property name="visible">True</property>
163
+ <property name="can_focus">True</property>
164
+ <property name="headers_visible">True</property>
165
+ <property name="rules_hint">False</property>
166
+ <property name="reorderable">False</property>
167
+ <property name="enable_search">True</property>
168
+ <property name="fixed_height_mode">False</property>
169
+ <property name="hover_selection">False</property>
170
+ <property name="hover_expand">False</property>
171
+ <signal name="row_activated" handler="on_method_activated" last_modification_time="Sat, 17 Mar 2007 14:49:13 GMT"/>
172
+ </widget>
173
+ </child>
174
+ </widget>
175
+ <packing>
176
+ <property name="shrink">True</property>
177
+ <property name="resize">False</property>
178
+ </packing>
179
+ </child>
180
+ </widget>
181
+ </child>
182
+ </widget>
183
+
184
+ </glade-interface>
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ set -e
3
+ # for the lazy typer
4
+ ruby -w -I ../../lib gdbus
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Trivial network interface lister using NetworkManager.
4
+ # NetworkManager does not support introspection, so the api is not that sexy.
5
+
6
+ require 'dbus'
7
+
8
+ bus = DBus::SystemBus.instance
9
+
10
+ nm_service = bus.service("org.freedesktop.NetworkManager")
11
+ nm_manager = nm_service.object("/org/freedesktop/NetworkManager")
12
+ poi = DBus::ProxyObjectInterface.new(nm_manager, "org.freedesktop.NetworkManager")
13
+ begin
14
+ poi.define_method("getDevices", "") # NM 0.6
15
+ p poi.getDevices
16
+ rescue Exception
17
+ poi.define_method("GetDevices", "") # NM 0.7
18
+ p poi.GetDevices
19
+ end
20
+
21
+
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Trivial network interface lister using NetworkManager.
4
+ # NetworkManager does not support introspection, so the api is not that sexy.
5
+
6
+ require 'dbus'
7
+
8
+ bus = DBus::SessionBus.instance
9
+
10
+ tracker_service = bus.service("org.freedesktop.Tracker")
11
+ tracker_manager = tracker_service.object("/org/freedesktop/tracker")
12
+ poi = DBus::ProxyObjectInterface.new(tracker_manager, "org.freedesktop.Tracker.Files")
13
+ poi.define_method("GetMetadataForFilesInFolder", "in live_query_id:i, in uri:s, in fields:as, out values:aas")
14
+ p poi.GetMetadataForFilesInFolder(-1, ENV['HOME'] + "/Desktop", ["File:Name", "File:Size"])
15
+
16
+
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'dbus'
4
+ bus = DBus::SessionBus.instance
5
+ # get a rb object
6
+ proxy = bus.introspect("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Player")
7
+ proxyi = proxy["org.gnome.Rhythmbox.Player"]
8
+
9
+ # register for signals
10
+
11
+ mr = DBus::MatchRule.new
12
+ mr.type = "signal"
13
+ mr.interface = "org.gnome.Rhythmbox.Player"
14
+ mr.path = "/org/gnome/Rhythmbox/Player"
15
+ bus.add_match(mr) do |msg, first_param|
16
+ print msg.member + " "
17
+ puts first_param
18
+ end
19
+
20
+ proxyi.playPause(true)
21
+
22
+ main = DBus::Main.new
23
+ main << bus
24
+ main.run
25
+