equal
deleted
inserted
replaced
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) |