summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/goggle.py
diff options
context:
space:
mode:
authorBob Foerster <robert@erafx.com>2010-12-17 23:20:39 +0800
committerRichard Purdie <rpurdie@linux.intel.com>2011-01-05 11:13:48 +0000
commit2e0ef25a50c6a31cd6de52dfb31a04b77e694da3 (patch)
treefee195184ef180928f6712b05c1ed223382a6c96 /bitbake/lib/bb/ui/goggle.py
parent25ac24e02e3e96945e8ac83e16fe27a6b24789b1 (diff)
downloadpoky-2e0ef25a50c6a31cd6de52dfb31a04b77e694da3.tar.gz
Resurrect alternative UIs
The various alternative UIs have been updated to once again be functional with the latest bitbake internals. Each of the UIs still have much room for functional improvement. In particular, they have been updated to: - interact with the new process based server - handle the current set of events and notifications fired from the server and its associated subsystems (Bitbake rev: b947e7aa405966262c0614cae02e7978ec637095) Signed-off-by: Bob Foerster <robert@erafx.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb/ui/goggle.py')
-rw-r--r--bitbake/lib/bb/ui/goggle.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/bitbake/lib/bb/ui/goggle.py b/bitbake/lib/bb/ui/goggle.py
index 40923ba88d..3c6a014dc2 100644
--- a/bitbake/lib/bb/ui/goggle.py
+++ b/bitbake/lib/bb/ui/goggle.py
@@ -24,19 +24,32 @@ import xmlrpclib
24from bb.ui.crumbs.runningbuild import RunningBuildTreeView, RunningBuild 24from bb.ui.crumbs.runningbuild import RunningBuildTreeView, RunningBuild
25from bb.ui.crumbs.progress import ProgressBar 25from bb.ui.crumbs.progress import ProgressBar
26 26
27import Queue
28
29
27def event_handle_idle_func (eventHandler, build, pbar): 30def event_handle_idle_func (eventHandler, build, pbar):
28 31
29 # Consume as many messages as we can in the time available to us 32 # Consume as many messages as we can in the time available to us
30 event = eventHandler.getEvent() 33 event = eventHandler.getEvent()
31 while event: 34 while event:
32 build.handle_event (event, pbar)
33 event = eventHandler.getEvent() 35 event = eventHandler.getEvent()
36 build.handle_event (event, pbar)
34 37
35 return True 38 return True
36 39
37def scroll_tv_cb (model, path, iter, view): 40def scroll_tv_cb (model, path, iter, view):
38 view.scroll_to_cell (path) 41 view.scroll_to_cell (path)
39 42
43
44# @todo hook these into the GUI so the user has feedback...
45def running_build_failed_cb (running_build):
46 pass
47
48
49def running_build_succeeded_cb (running_build):
50 pass
51
52
40class MainWindow (gtk.Window): 53class MainWindow (gtk.Window):
41 def __init__ (self): 54 def __init__ (self):
42 gtk.Window.__init__ (self, gtk.WINDOW_TOPLEVEL) 55 gtk.Window.__init__ (self, gtk.WINDOW_TOPLEVEL)
@@ -49,6 +62,7 @@ class MainWindow (gtk.Window):
49 self.set_default_size(640, 480) 62 self.set_default_size(640, 480)
50 scrolled_window.add (self.cur_build_tv) 63 scrolled_window.add (self.cur_build_tv)
51 64
65
52def main (server, eventHandler): 66def main (server, eventHandler):
53 gobject.threads_init() 67 gobject.threads_init()
54 gtk.gdk.threads_init() 68 gtk.gdk.threads_init()
@@ -61,9 +75,11 @@ def main (server, eventHandler):
61 running_build = RunningBuild () 75 running_build = RunningBuild ()
62 window.cur_build_tv.set_model (running_build.model) 76 window.cur_build_tv.set_model (running_build.model)
63 running_build.model.connect("row-inserted", scroll_tv_cb, window.cur_build_tv) 77 running_build.model.connect("row-inserted", scroll_tv_cb, window.cur_build_tv)
78 running_build.connect ("build-succeeded", running_build_succeeded_cb)
79 running_build.connect ("build-failed", running_build_failed_cb)
80
64 try: 81 try:
65 cmdline = server.runCommand(["getCmdLineAction"]) 82 cmdline = server.runCommand(["getCmdLineAction"])
66 print(cmdline)
67 if not cmdline: 83 if not cmdline:
68 return 1 84 return 1
69 ret = server.runCommand(cmdline) 85 ret = server.runCommand(cmdline)
@@ -76,10 +92,18 @@ def main (server, eventHandler):
76 92
77 # Use a timeout function for probing the event queue to find out if we 93 # Use a timeout function for probing the event queue to find out if we
78 # have a message waiting for us. 94 # have a message waiting for us.
79 gobject.timeout_add (200, 95 gobject.timeout_add (100,
80 event_handle_idle_func, 96 event_handle_idle_func,
81 eventHandler, 97 eventHandler,
82 running_build, 98 running_build,
83 pbar) 99 pbar)
84 100
85 gtk.main() 101 try:
102 gtk.main()
103 except EnvironmentError as ioerror:
104 # ignore interrupted io
105 if ioerror.args[0] == 4:
106 pass
107 finally:
108 server.runCommand(["stateStop"])
109