Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Unified Diff: client/bin/factory_ui_lib.py

Issue 3226005: Refactory UI to grab shortcut keys, and tests to not look for triggers. (Closed) Base URL: http://git.chromium.org/git/autotest.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/bin/factory_ui ('k') | client/deps/factory/startx.sh » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/bin/factory_ui_lib.py
diff --git a/client/bin/factory_ui_lib.py b/client/bin/factory_ui_lib.py
index 7024d72fd12283bea0fc1c02e4e3c7bc3f54addb..6826a2e419b14ac3b12d26250703239c99c6d92a 100644
--- a/client/bin/factory_ui_lib.py
+++ b/client/bin/factory_ui_lib.py
@@ -8,11 +8,9 @@
# DESCRIPTION :
#
# This library provides convenience routines to launch factory tests.
-# This includes support for identifying keyboard test switching
-# triggers, grabbing control of the keyboard and mouse, and making the
-# mouse cursor disappear. It also manages communication of any found
-# keyboard triggers to the control process, via writing data to
-# factory.RESULT_FILE_PATH.
+# This includes support for drawing the test widget in a window at the
+# proper location, grabbing control of the mouse, and making the mouse
+# cursor disappear.
from autotest_lib.client.bin import factory
@@ -34,6 +32,8 @@ WHITE = gtk.gdk.Color(0xFFFF, 0xFFFF, 0xFFFF)
LIGHT_GREEN = gtk.gdk.color_parse('light green')
+SEP_COLOR = gtk.gdk.color_parse('grey50')
+
RGBA_GREEN_OVERLAY = (0, 0.5, 0, 0.6)
RGBA_YELLOW_OVERLAY = (0.6, 0.6, 0, 0.6)
@@ -64,6 +64,20 @@ def make_label(message, font=LABEL_FONT, fg=LIGHT_GREEN,
return l
+def make_hsep(width=1):
+ frame = gtk.EventBox()
+ frame.set_size_request(-1, width)
+ frame.modify_bg(gtk.STATE_NORMAL, SEP_COLOR)
+ return frame
+
+
+def make_vsep(width=1):
+ frame = gtk.EventBox()
+ frame.set_size_request(width, -1)
+ frame.modify_bg(gtk.STATE_NORMAL, SEP_COLOR)
+ return frame
+
+
def make_countdown_widget():
title = make_label('time remaining / 剩餘時間: ', alignment=(1, 0.5))
countdown = make_label('%d' % FAIL_TIMEOUT, alignment=(0, 0.5))
@@ -83,59 +97,34 @@ def hide_cursor(gdk_window):
gdk_window.set_cursor(cursor)
-class State:
-
- def __init__(self, trigger_set=set()):
- self._got_trigger = None
- self._trigger_set = [ord(x) for x in trigger_set]
-
- def exit_on_trigger(self, event):
- char = event.keyval in range(32,127) and chr(event.keyval) or None
- if ('GDK_CONTROL_MASK' not in event.state.value_names
- or event.keyval not in self._trigger_set):
- return False
- factory.log('got test switch trigger %s(%s)' % (event.keyval, char))
- self._got_trigger = char
- gtk.main_quit()
- return True
-
- def run_test_widget(self,
- test_widget=None,
- test_widget_size=None,
- invisible_cursor=True,
- window_registration_callback=None,
- cleanup_callback=None):
+def run_test_widget(job, test_widget,
+ invisible_cursor=True,
+ window_registration_callback=None,
+ cleanup_callback=None):
- window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- window.modify_bg(gtk.STATE_NORMAL, BLACK)
- window.set_size_request(*test_widget_size)
+ test_widget_size = job.factory_shared_dict.get('test_widget_size')
- align = gtk.Alignment(xalign=0.5, yalign=0.5)
- align.add(test_widget)
+ window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ window.modify_bg(gtk.STATE_NORMAL, BLACK)
+ window.set_size_request(*test_widget_size)
- window.add(align)
- window.show_all()
+ align = gtk.Alignment(xalign=0.5, yalign=0.5)
+ align.add(test_widget)
- gtk.gdk.pointer_grab(window.window, confine_to=window.window)
- gtk.gdk.keyboard_grab(window.window)
+ window.add(align)
+ window.show_all()
- if invisible_cursor:
- hide_cursor(window.window)
+ if window_registration_callback is not None:
+ window_registration_callback(window)
- if window_registration_callback is not None:
- window_registration_callback(window)
+ gtk.gdk.pointer_grab(window.window, confine_to=window.window)
- factory.log('factory_test running gtk.main')
- gtk.main()
- factory.log('factory_test quit gtk.main')
+ if invisible_cursor:
+ hide_cursor(window.window)
- if cleanup_callback is not None:
- cleanup_callback()
+ gtk.main()
- gtk.gdk.pointer_ungrab()
- gtk.gdk.keyboard_ungrab()
+ gtk.gdk.pointer_ungrab()
- if self._got_trigger is not None:
- factory.log('run_test_widget returning kbd_shortcut "%s"' %
- self._got_trigger)
- factory.log_shared_data('activated_kbd_shortcut', self._got_trigger)
+ if cleanup_callback is not None:
+ cleanup_callback()
« no previous file with comments | « client/bin/factory_ui ('k') | client/deps/factory/startx.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698