3 from twisted
.internet
import gtk2reactor
5 from twisted
.internet
import reactor
6 from twisted
.python
import util
7 from twisted
.spread
import pb
8 from twisted
.cred
import credentials
9 import gtk
, gtk
.glade
, gnome
.ui
13 def __init__(self
, master
="localhost:8007", passwd
="debugpw"):
16 host
, port
= re
.search(r
'(.+):(\d+)', master
).groups()
18 print "unparseable master location '%s'" % master
19 print " expecting something more like localhost:8007"
25 xml
= self
.xml
= gtk
.glade
.XML(util
.sibpath(__file__
, "debug.glade"))
27 self
.buildname
= g('buildname')
28 self
.filename
= g('filename')
29 self
.connectbutton
= g('connectbutton')
30 self
.connectlabel
= g('connectlabel')
31 g('window1').connect('destroy', lambda win
: gtk
.mainquit())
32 # put the master info in the window's titlebar
33 g('window1').set_title("Buildbot Debug Tool: %s" % master
)
34 c
= xml
.signal_connect
35 c('do_connect', self
.do_connect
)
36 c('do_reload', self
.do_reload
)
37 c('do_rebuild', self
.do_rebuild
)
38 c('do_poke_irc', self
.do_poke_irc
)
39 c('do_build', self
.do_build
)
40 c('do_commit', self
.do_commit
)
41 c('on_usebranch_toggled', self
.usebranch_toggled
)
42 self
.usebranch_toggled(g('usebranch'))
43 c('on_userevision_toggled', self
.userevision_toggled
)
44 self
.userevision_toggled(g('userevision'))
45 c('do_current_offline', self
.do_current
, "offline")
46 c('do_current_idle', self
.do_current
, "idle")
47 c('do_current_waiting', self
.do_current
, "waiting")
48 c('do_current_building', self
.do_current
, "building")
50 def do_connect(self
, widget
):
52 self
.connectlabel
.set_text("Disconnecting...")
54 self
.remote
.broker
.transport
.loseConnection()
56 self
.connectlabel
.set_text("Connecting...")
57 f
= pb
.PBClientFactory()
58 creds
= credentials
.UsernamePassword("debug", self
.passwd
)
60 reactor
.connectTCP(self
.host
, int(self
.port
), f
)
61 d
.addCallbacks(self
.connect_complete
, self
.connect_failed
)
62 def connect_complete(self
, ref
):
63 self
.connectbutton
.set_label("Disconnect")
64 self
.connectlabel
.set_text("Connected")
67 self
.remote
.callRemote("print", "hello cleveland")
68 self
.remote
.notifyOnDisconnect(self
.disconnected
)
69 def connect_failed(self
, why
):
70 self
.connectlabel
.set_text("Failed")
72 def disconnected(self
, ref
):
73 self
.connectbutton
.set_label("Connect")
74 self
.connectlabel
.set_text("Disconnected")
78 def do_reload(self
, widget
):
81 d
= self
.remote
.callRemote("reload")
82 d
.addErrback(self
.err
)
83 def do_rebuild(self
, widget
):
84 print "Not yet implemented"
86 def do_poke_irc(self
, widget
):
89 d
= self
.remote
.callRemote("pokeIRC")
90 d
.addErrback(self
.err
)
92 def do_build(self
, widget
):
95 name
= self
.buildname
.get_text()
96 d
= self
.remote
.callRemote("forceBuild", name
)
97 d
.addErrback(self
.err
)
99 def usebranch_toggled(self
, widget
):
100 rev
= self
.xml
.get_widget('branch')
101 if widget
.get_active():
102 rev
.set_sensitive(True)
104 rev
.set_sensitive(False)
106 def userevision_toggled(self
, widget
):
107 rev
= self
.xml
.get_widget('revision')
108 if widget
.get_active():
109 rev
.set_sensitive(True)
111 rev
.set_sensitive(False)
113 def do_commit(self
, widget
):
116 filename
= self
.filename
.get_text()
117 who
= self
.xml
.get_widget("who").get_text()
120 if self
.xml
.get_widget("usebranch").get_active():
121 branch
= self
.xml
.get_widget('branch').get_text()
126 if self
.xml
.get_widget("userevision").get_active():
127 revision
= self
.xml
.get_widget('revision').get_text()
129 revision
= int(revision
)
135 kwargs
= { 'revision': revision
, 'who': who
}
137 kwargs
['branch'] = branch
138 d
= self
.remote
.callRemote("fakeChange", filename
, **kwargs
)
139 d
.addErrback(self
.err
)
141 def do_current(self
, widget
, state
):
144 name
= self
.buildname
.get_text()
145 d
= self
.remote
.callRemote("setCurrentState", name
, state
)
146 d
.addErrback(self
.err
)
147 def err(self
, failure
):
148 print "received error"
149 failure
.printTraceback()
155 if __name__
== '__main__':
156 master
= "localhost:8007"
157 if len(sys
.argv
) > 1:
160 if len(sys
.argv
) > 2:
162 d
= DebugWidget(master
, passwd
)