diff options
Diffstat (limited to 'src/uicheck.py')
-rw-r--r-- | src/uicheck.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/uicheck.py b/src/uicheck.py new file mode 100644 index 0000000..41beed0 --- /dev/null +++ b/src/uicheck.py @@ -0,0 +1,83 @@ +# Copyright (C) 2008, Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import sys +import time + +import gobject +import gtk +import wnck + +checks_queue = [] +checks_failed = [] +checks_succeeded = [] + +class Check(object): + def __init__(self): + self.succeeded = False + self.start_time = None + self.max_time = None + self.timeout = None + + def start(self): + self.start_time = time.time() + + def get_failed(self): + if self.max_time and self.start_time: + if time.time() - self.start_time > self.max_time: + return True + return False + + failed = property(get_failed) + +class ShellCheck(Check): + def start(self): + Check.start(self) + + self.max_time = 3 + + screen = wnck.screen_get_default() + screen.connect('window-opened', self._window_opened_cb) + + def _window_opened_cb(self, screen, window): + if window.get_window_type() == wnck.WINDOW_DESKTOP: + self.succeeded = True + +def _timeout_cb(): + if checks_queue[0].failed: + checks_failed.append(checks_queue.pop(0)) + elif checks_queue[0].succeeded: + checks_succeeded.append(checks_queue.pop(0)) + else: + return True + + if len(checks_queue) > 0: + checks_queue[0].start() + else: + gtk.main_quit() + + return True + +def main(): + checks_queue.append(ShellCheck()) + + checks_queue[0].start() + gobject.timeout_add(500, _timeout_cb) + + gtk.main() + + if len(checks_failed) > 0: + sys.exit(1) |