tests/ide_tests/sikuliberemiz.py
branchwxPython4
changeset 3432 40b8b2ffb3fd
parent 3431 5bcef31e276d
child 3437 ce366d67a5b7
equal deleted inserted replaced
3431:5bcef31e276d 3432:40b8b2ffb3fd
     2 
     2 
     3 import os
     3 import os
     4 import sys
     4 import sys
     5 import subprocess
     5 import subprocess
     6 from threading import Thread, Event
     6 from threading import Thread, Event
       
     7 
       
     8 typeof=type
       
     9 
     7 from sikuli import *
    10 from sikuli import *
     8 
    11 
     9 home = os.environ["HOME"]
       
    10 beremiz_path = os.environ["BEREMIZPATH"]
    12 beremiz_path = os.environ["BEREMIZPATH"]
    11 python_bin = os.environ.get("BEREMIZPYTHONPATH", "/usr/bin/python")
    13 python_bin = os.environ.get("BEREMIZPYTHONPATH", "/usr/bin/python")
    12 
    14 
    13 opj = os.path.join
    15 opj = os.path.join
    14 
       
    15 
    16 
    16 def StartBeremizApp(projectpath=None, exemple=None):
    17 def StartBeremizApp(projectpath=None, exemple=None):
    17     """
    18     """
    18     Starts Beremiz IDE, waits for main window to appear, maximize it.
    19     Starts Beremiz IDE, waits for main window to appear, maximize it.
    19 
    20 
    88     fkeys = {"Stop":     Key.F4,
    89     fkeys = {"Stop":     Key.F4,
    89              "Run":      Key.F5,
    90              "Run":      Key.F5,
    90              "Transfer": Key.F6,
    91              "Transfer": Key.F6,
    91              "Connect":  Key.F7,
    92              "Connect":  Key.F7,
    92              "Clean":    Key.F9,
    93              "Clean":    Key.F9,
    93              "Build":    Key.F11}
    94              "Build":    Key.F11,
       
    95              "Save":     ("s",Key.CTRL),
       
    96              "New":      ("n",Key.CTRL),
       
    97              "Address":  ("l",Key.CTRL)}  # to reach address bar in GTK's file selector
    94 
    98 
    95     def __init__(self, app):
    99     def __init__(self, app):
    96         self.app = app
   100         self.app = app
    97     
   101     
    98     def __getattr__(self, name):
   102     def __getattr__(self, name):
    99         fkey = self.fkeys[name]
   103         fkey = self.fkeys[name]
       
   104         if typeof(fkey) != tuple:
       
   105             fkey = (fkey,)
   100         app = self.app
   106         app = self.app
   101 
   107 
   102         def PressShortCut():
   108         def PressShortCut():
   103             app.focus()
   109             app.focus()
   104             type(fkey)
   110             type(*fkey)
   105 
   111 
   106         return PressShortCut
   112         return PressShortCut
   107 
   113 
   108 
   114 
   109 class IDEIdleObserver:
   115 class IDEIdleObserver:
   125 
   131 
   126     def __del__(self):
   132     def __del__(self):
   127         self.r.stopObserver()
   133         self.r.stopObserver()
   128 
   134 
   129     def _OnIDEWindowChange(self, event):
   135     def _OnIDEWindowChange(self, event):
   130         print event
       
   131         self.idechanged = True
   136         self.idechanged = True
   132 
   137 
   133     def Wait(self, period, timeout):
   138     def Wait(self, period, timeout):
   134         """
   139         """
   135         Wait for IDE to stop changing
   140         Wait for IDE to stop changing
   160         self.proc = proc
   165         self.proc = proc
   161         self.stdoutchanged = False
   166         self.stdoutchanged = False
   162 
   167 
   163         self.thread = Thread(target = self._waitStdoutProc).start()
   168         self.thread = Thread(target = self._waitStdoutProc).start()
   164 
   169 
   165     def _waitStdoutProc():
   170     def _waitStdoutProc(self):
   166         while True:
   171         while True:
   167             a = self.proc.stdout.read(1)
   172             a = self.proc.stdout.read(1)
   168             if len(a) == 0 or a is None: 
   173             if len(a) == 0 or a is None: 
   169                 break
   174                 break
   170             sys.stdout.write(a)
   175             sys.stdout.write(a)