The requested changes are too big and content was truncated. Show full diff
@@ -0,0 +1,7 | |||||
|
1 | # ~/.bash_logout: executed by bash(1) when login shell exits. | |||
|
2 | ||||
|
3 | # when leaving the console clear the screen to increase privacy | |||
|
4 | ||||
|
5 | if [ "$SHLVL" = 1 ]; then | |||
|
6 | [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q | |||
|
7 | fi |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
@@ -0,0 +1,29 | |||||
|
1 | #!/usr/bin/env python | |||
|
2 | import os, sys | |||
|
3 | from PyQt4 import QtCore, QtGui | |||
|
4 | from PyQt4.QtGui import QApplication | |||
|
5 | ||||
|
6 | from schainpy.gui.viewcontroller.initwindow import InitWindow | |||
|
7 | from schainpy.gui.viewcontroller.basicwindow import BasicWindow | |||
|
8 | from schainpy.gui.viewcontroller.workspace import Workspace | |||
|
9 | ||||
|
10 | def main(): | |||
|
11 | ||||
|
12 | app = QtGui.QApplication(sys.argv) | |||
|
13 | ||||
|
14 | Welcome=InitWindow() | |||
|
15 | ||||
|
16 | if not Welcome.exec_(): | |||
|
17 | sys.exit(-1) | |||
|
18 | ||||
|
19 | WorkPathspace=Workspace() | |||
|
20 | if not WorkPathspace.exec_(): | |||
|
21 | sys.exit(-1) | |||
|
22 | ||||
|
23 | MainGUI=BasicWindow() | |||
|
24 | MainGUI.setWorkSpaceGUI(WorkPathspace.dirComBox.currentText()) | |||
|
25 | MainGUI.show() | |||
|
26 | sys.exit(app.exec_()) | |||
|
27 | ||||
|
28 | if __name__ == "__main__": | |||
|
29 | main() No newline at end of file |
@@ -0,0 +1,29 | |||||
|
1 | #!/usr/bin/env python | |||
|
2 | import os, sys | |||
|
3 | from PyQt4 import QtCore, QtGui | |||
|
4 | from PyQt4.QtGui import QApplication | |||
|
5 | ||||
|
6 | from schainpy.gui.viewcontroller.initwindow import InitWindow | |||
|
7 | from schainpy.gui.viewcontroller.basicwindow import BasicWindow | |||
|
8 | from schainpy.gui.viewcontroller.workspace import Workspace | |||
|
9 | ||||
|
10 | def main(): | |||
|
11 | ||||
|
12 | app = QtGui.QApplication(sys.argv) | |||
|
13 | ||||
|
14 | Welcome=InitWindow() | |||
|
15 | ||||
|
16 | if not Welcome.exec_(): | |||
|
17 | sys.exit(-1) | |||
|
18 | ||||
|
19 | WorkPathspace=Workspace() | |||
|
20 | if not WorkPathspace.exec_(): | |||
|
21 | sys.exit(-1) | |||
|
22 | ||||
|
23 | MainGUI=BasicWindow() | |||
|
24 | MainGUI.setWorkSpaceGUI(WorkPathspace.dirComBox.currentText()) | |||
|
25 | MainGUI.show() | |||
|
26 | sys.exit(app.exec_()) | |||
|
27 | ||||
|
28 | if __name__ == "__main__": | |||
|
29 | main() No newline at end of file |
@@ -0,0 +1,97 | |||||
|
1 | import threading | |||
|
2 | import Queue | |||
|
3 | import pickle | |||
|
4 | import numpy, os, sys | |||
|
5 | ||||
|
6 | from schainpy.controller import Project | |||
|
7 | from command import * | |||
|
8 | ||||
|
9 | class ControllerThread(threading.Thread): | |||
|
10 | def __init__(self, filename, data_q): | |||
|
11 | super(ControllerThread, self).__init__() | |||
|
12 | self.filename = filename | |||
|
13 | self.data_q = data_q | |||
|
14 | self.control = {'stop':False,'pause':False} | |||
|
15 | ||||
|
16 | def stop(self): | |||
|
17 | self.control['stop'] = True | |||
|
18 | ||||
|
19 | def pause(self): | |||
|
20 | self.control['pause'] = not(self.control['pause']) | |||
|
21 | ||||
|
22 | def run(self): | |||
|
23 | self.control['stop'] = False | |||
|
24 | self.control['pause'] = False | |||
|
25 | self.controllerObj = Project(self.control, self.data_q) | |||
|
26 | self.controllerObj.readXml(self.filename) | |||
|
27 | self.controllerObj.createObjects() | |||
|
28 | self.controllerObj.connectObjects() | |||
|
29 | self.controllerObj.run() | |||
|
30 | ||||
|
31 | class CommCtrlProcessThread(threading.Thread): | |||
|
32 | """ Implements the threading.Thread interface (start, join, etc.) and | |||
|
33 | can be controlled via the cmd_q Queue attribute. Replies are placed in | |||
|
34 | the reply_q Queue attribute. | |||
|
35 | """ | |||
|
36 | def __init__(self, cmd_q=Queue.Queue(), reply_q=Queue.Queue()): | |||
|
37 | super(CommCtrlProcessThread, self).__init__() | |||
|
38 | self.cmd_q = cmd_q | |||
|
39 | self.reply_q = reply_q | |||
|
40 | ||||
|
41 | # self.print_q = Queue.Queue() | |||
|
42 | self.data_q = Queue.Queue() | |||
|
43 | ||||
|
44 | self.alive = threading.Event() | |||
|
45 | self.alive.set() | |||
|
46 | self.socket = None | |||
|
47 | ||||
|
48 | self.socketIO = None | |||
|
49 | self.mySocket = None | |||
|
50 | ||||
|
51 | ||||
|
52 | self.handlers = { | |||
|
53 | ProcessCommand.PROCESS: self._handle_ioPROCESSTHREAD, | |||
|
54 | ProcessCommand.MESSAGE: self._handle_ioMESSAGE, | |||
|
55 | ProcessCommand.DATA: self._handle_ioDATA, | |||
|
56 | ProcessCommand.STOP: self._handle_ioSTOP, | |||
|
57 | ProcessCommand.PAUSE: self._handle_ioPAUSE | |||
|
58 | } | |||
|
59 | ||||
|
60 | def run(self): | |||
|
61 | while self.alive.isSet(): | |||
|
62 | try: | |||
|
63 | cmd = self.cmd_q.get(True, 0.1) | |||
|
64 | self.handlers[cmd.type](cmd) | |||
|
65 | except Queue.Empty as e: | |||
|
66 | continue | |||
|
67 | ||||
|
68 | ||||
|
69 | def _handle_ioPROCESSTHREAD(self, cmd): | |||
|
70 | filename = cmd.data | |||
|
71 | self.controllerObj = ControllerThread(filename=filename, data_q=self.data_q) | |||
|
72 | self.controllerObj.start() | |||
|
73 | ||||
|
74 | def _handle_ioPAUSE(self, cmd): | |||
|
75 | self.controllerObj.pause() | |||
|
76 | ||||
|
77 | def _handle_ioSTOP(self, cmd): | |||
|
78 | self.controllerObj.stop() | |||
|
79 | ||||
|
80 | def _handle_ioDATA(self, cmd): | |||
|
81 | self.reply_q.put(self._success_reply_data(data=cmd.data)) | |||
|
82 | ||||
|
83 | def _handle_ioMESSAGE(self, cmd): | |||
|
84 | self.reply_q.put(self._success_reply_message(data=cmd.data)) | |||
|
85 | ||||
|
86 | def _success_reply_data(self, data=None): | |||
|
87 | return ClientReply(ClientReply.DATA, data) | |||
|
88 | ||||
|
89 | def _success_reply_message(self, data=None): | |||
|
90 | return ClientReply(ClientReply.MESSAGE, data) | |||
|
91 | ||||
|
92 | def join(self, timeout=None): | |||
|
93 | self.alive.clear() | |||
|
94 | threading.Thread.join(self, timeout) | |||
|
95 | ||||
|
96 | ||||
|
97 | No newline at end of file |
@@ -0,0 +1,50 | |||||
|
1 | class ProcessCommand(object): | |||
|
2 | """ A command to the client thread. | |||
|
3 | Each command type has its associated data: | |||
|
4 | ||||
|
5 | DATA: Data Radar Object | |||
|
6 | MESSAGE: Data String | |||
|
7 | STOP: Event to Stop the process thread | |||
|
8 | PAUSE: Event to Pause the process thread | |||
|
9 | """ | |||
|
10 | PROCESS, DATA, MESSAGE, STOP, PAUSE = range(5) | |||
|
11 | ||||
|
12 | def __init__(self, type, data=None): | |||
|
13 | self.type = type | |||
|
14 | self.data = data | |||
|
15 | ||||
|
16 | ||||
|
17 | class ClientCommand(object): | |||
|
18 | """ A command to the client thread. | |||
|
19 | Each command type has its associated data: | |||
|
20 | ||||
|
21 | CONNECT: (host, port) tuple | |||
|
22 | SEND: Data string | |||
|
23 | RECEIVE: None | |||
|
24 | CLOSE: None | |||
|
25 | PROCESS: to processing | |||
|
26 | SEND: send a data | |||
|
27 | SENDXML: send xml file | |||
|
28 | """ | |||
|
29 | CONNECT, SEND, SENDXML, RECEIVE, CLOSE, PROCESS = range(6) | |||
|
30 | ||||
|
31 | def __init__(self, type, data=None): | |||
|
32 | self.type = type | |||
|
33 | self.data = data | |||
|
34 | ||||
|
35 | ||||
|
36 | class ClientReply(object): | |||
|
37 | """ A reply from the client thread. | |||
|
38 | Each reply type has its associated data: | |||
|
39 | ||||
|
40 | ERROR: The error string | |||
|
41 | MESSAGE: Data String | |||
|
42 | DATA: Data | |||
|
43 | SUCCESS: Depends on the command - for RECEIVE it's the received | |||
|
44 | data string, for others None. | |||
|
45 | """ | |||
|
46 | ERROR, SUCCESS, MESSAGE, DATA= range(4) | |||
|
47 | ||||
|
48 | def __init__(self, type, data=None): | |||
|
49 | self.type = type | |||
|
50 | self.data = data |
@@ -0,0 +1,21 | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | ||||
|
3 | """ | |||
|
4 | Module implementing Ftp. | |||
|
5 | """ | |||
|
6 | ||||
|
7 | from PyQt4.QtGui import QMainWindow | |||
|
8 | from PyQt4.QtCore import pyqtSignature | |||
|
9 | ||||
|
10 | from schainpy.gui.viewer.ftp import Ui_Ftp | |||
|
11 | ||||
|
12 | class Ftp(QMainWindow, Ui_MainWindow): | |||
|
13 | """ | |||
|
14 | Class documentation goes here. | |||
|
15 | """ | |||
|
16 | def __init__(self, parent = None): | |||
|
17 | """ | |||
|
18 | Constructor | |||
|
19 | """ | |||
|
20 | QMainWindow.__init__(self, parent) | |||
|
21 | self.setupUi(self) |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 |
@@ -0,0 +1,298 | |||||
|
1 | import os.path | |||
|
2 | import ftplib | |||
|
3 | ||||
|
4 | ||||
|
5 | class Ftp(): | |||
|
6 | """ | |||
|
7 | Ftp is a public class used to define custom File Transfer Protocol from "ftplib" python module | |||
|
8 | ||||
|
9 | Non-standard Python modules used: None | |||
|
10 | ||||
|
11 | Written by "Daniel Suarez":mailto:daniel.suarez@jro.igp.gob.pe Oct. 26, 2010 | |||
|
12 | """ | |||
|
13 | ||||
|
14 | def __init__(self,host = None, username=None, passw=None, remotefolder=None): | |||
|
15 | """ | |||
|
16 | This method is used to setting parameters for FTP and establishing connection to remote host | |||
|
17 | ||||
|
18 | Inputs: | |||
|
19 | host - remote host IP Address | |||
|
20 | ||||
|
21 | username - remote host Username | |||
|
22 | ||||
|
23 | passw - remote host Passw | |||
|
24 | ||||
|
25 | remotefolder - remote host current working directory | |||
|
26 | ||||
|
27 | Return: void | |||
|
28 | ||||
|
29 | Affects: | |||
|
30 | self.status - in Error Case or Connection Failed this parameter is set to 1 else 0 | |||
|
31 | ||||
|
32 | self.folderList - sub-folder list of remote folder | |||
|
33 | ||||
|
34 | self.fileList - file list of remote folder | |||
|
35 | ||||
|
36 | ||||
|
37 | """ | |||
|
38 | ||||
|
39 | if ((host == None) and (username==None) and (passw==None) and (remotefolder==None)): | |||
|
40 | host, username, passw, remotefolder = self.parmsByDefault() | |||
|
41 | ||||
|
42 | self.host = host | |||
|
43 | self.username = username | |||
|
44 | self.passw = passw | |||
|
45 | self.remotefolder = remotefolder | |||
|
46 | self.file = None | |||
|
47 | self.ftp = None | |||
|
48 | self.status = 0 | |||
|
49 | ||||
|
50 | try: | |||
|
51 | self.ftp = ftplib.FTP(self.host) | |||
|
52 | self.ftp.login(self.username,self.passw) | |||
|
53 | self.ftp.cwd(self.remotefolder) | |||
|
54 | # print 'Connect to FTP Server: Successfully' | |||
|
55 | ||||
|
56 | except ftplib.all_errors: | |||
|
57 | print 'Error FTP Service' | |||
|
58 | self.status = 1 | |||
|
59 | return | |||
|
60 | ||||
|
61 | ||||
|
62 | ||||
|
63 | self.dirList = [] | |||
|
64 | ||||
|
65 | try: | |||
|
66 | self.dirList = self.ftp.nlst() | |||
|
67 | ||||
|
68 | except ftplib.error_perm, resp: | |||
|
69 | if str(resp) == "550 No files found": | |||
|
70 | print "no files in this directory" | |||
|
71 | self.status = 1 | |||
|
72 | return | |||
|
73 | ||||
|
74 | except ftplib.all_errors: | |||
|
75 | print 'Error Displaying Dir-Files' | |||
|
76 | self.status = 1 | |||
|
77 | return | |||
|
78 | ||||
|
79 | self.fileList = [] | |||
|
80 | self.folderList = [] | |||
|
81 | #only for test | |||
|
82 | for f in self.dirList: | |||
|
83 | name, ext = os.path.splitext(f) | |||
|
84 | if ext != '': | |||
|
85 | self.fileList.append(f) | |||
|
86 | # print 'filename: %s - size: %d'%(f,self.ftp.size(f)) | |||
|
87 | ||||
|
88 | def parmsByDefault(self): | |||
|
89 | host = 'jro-app.igp.gob.pe' | |||
|
90 | username = 'wmaster' | |||
|
91 | passw = 'mst2010vhf' | |||
|
92 | remotefolder = '/home/wmaster/graficos' | |||
|
93 | ||||
|
94 | # host = 'jro.igp.gob.pe' | |||
|
95 | # username = 'operaciones' | |||
|
96 | # passw = 'mst2010vhf' | |||
|
97 | # remotefolder = '/users/databases/on-line' | |||
|
98 | ||||
|
99 | return host, username, passw, remotefolder | |||
|
100 | ||||
|
101 | ||||
|
102 | def mkd(self,dirname): | |||
|
103 | """ | |||
|
104 | mkd is used to make directory in remote host | |||
|
105 | ||||
|
106 | Input: | |||
|
107 | dirname - directory name | |||
|
108 | ||||
|
109 | Return: | |||
|
110 | 1 in error case else 0 | |||
|
111 | """ | |||
|
112 | try: | |||
|
113 | self.ftp.mkd(dirname) | |||
|
114 | except: | |||
|
115 | print 'Error creating remote folder:%s'%dirname | |||
|
116 | return 1 | |||
|
117 | ||||
|
118 | return 0 | |||
|
119 | ||||
|
120 | ||||
|
121 | def delete(self,filename): | |||
|
122 | """ | |||
|
123 | delete is used to delete file in current working directory of remote host | |||
|
124 | ||||
|
125 | Input: | |||
|
126 | filename - filename to delete in remote folder | |||
|
127 | ||||
|
128 | Return: | |||
|
129 | 1 in error case else 0 | |||
|
130 | """ | |||
|
131 | ||||
|
132 | try: | |||
|
133 | self.ftp.delete(filename) | |||
|
134 | except: | |||
|
135 | print 'Error deleting remote file:%s'%filename | |||
|
136 | return 1 | |||
|
137 | ||||
|
138 | return 0 | |||
|
139 | ||||
|
140 | def download(self,filename,localfolder): | |||
|
141 | """ | |||
|
142 | download is used to downloading file from remote folder into local folder | |||
|
143 | ||||
|
144 | Inputs: | |||
|
145 | filename - filename to donwload | |||
|
146 | ||||
|
147 | localfolder - directory local to store filename | |||
|
148 | ||||
|
149 | Returns: | |||
|
150 | self.status - 1 in error case else 0 | |||
|
151 | """ | |||
|
152 | ||||
|
153 | self.status = 0 | |||
|
154 | ||||
|
155 | ||||
|
156 | if not(filename in self.fileList): | |||
|
157 | print 'filename:%s not exists'%filename | |||
|
158 | self.status = 1 | |||
|
159 | return self.status | |||
|
160 | ||||
|
161 | newfilename = os.path.join(localfolder,filename) | |||
|
162 | ||||
|
163 | self.file = open(newfilename, 'wb') | |||
|
164 | ||||
|
165 | try: | |||
|
166 | print 'Download: ' + filename | |||
|
167 | self.ftp.retrbinary('RETR ' + filename, self.__handleDownload) | |||
|
168 | print 'Download Complete' | |||
|
169 | except ftplib.all_errors: | |||
|
170 | print 'Error Downloading ' + filename | |||
|
171 | self.status = 1 | |||
|
172 | return self.status | |||
|
173 | ||||
|
174 | self.file.close() | |||
|
175 | ||||
|
176 | return self.status | |||
|
177 | ||||
|
178 | ||||
|
179 | def __handleDownload(self,block): | |||
|
180 | """ | |||
|
181 | __handleDownload is used to handle writing file | |||
|
182 | """ | |||
|
183 | self.file.write(block) | |||
|
184 | ||||
|
185 | ||||
|
186 | def upload(self,filename,remotefolder=None): | |||
|
187 | """ | |||
|
188 | upload is used to uploading local file to remote directory | |||
|
189 | ||||
|
190 | Inputs: | |||
|
191 | filename - full path name of local file to store in remote directory | |||
|
192 | ||||
|
193 | remotefolder - remote directory | |||
|
194 | ||||
|
195 | Returns: | |||
|
196 | self.status - 1 in error case else 0 | |||
|
197 | """ | |||
|
198 | ||||
|
199 | if remotefolder == None: | |||
|
200 | remotefolder = self.remotefolder | |||
|
201 | ||||
|
202 | self.status = 0 | |||
|
203 | ||||
|
204 | try: | |||
|
205 | self.ftp.cwd(remotefolder) | |||
|
206 | ||||
|
207 | self.file = open(filename, 'rb') | |||
|
208 | ||||
|
209 | (head, tail) = os.path.split(filename) | |||
|
210 | ||||
|
211 | command = "STOR " + tail | |||
|
212 | ||||
|
213 | print 'Uploading: ' + tail | |||
|
214 | self.ftp.storbinary(command, self.file) | |||
|
215 | print 'Upload Completed' | |||
|
216 | ||||
|
217 | except ftplib.all_errors: | |||
|
218 | print 'Error Uploading ' + tail | |||
|
219 | self.status = 1 | |||
|
220 | return self.status | |||
|
221 | ||||
|
222 | self.file.close() | |||
|
223 | ||||
|
224 | #back to initial directory in __init__() | |||
|
225 | self.ftp.cwd(self.remotefolder) | |||
|
226 | ||||
|
227 | return self.status | |||
|
228 | ||||
|
229 | ||||
|
230 | def dir(self,remotefolder): | |||
|
231 | """ | |||
|
232 | dir is used to change working directory of remote host and get folder and file list | |||
|
233 | ||||
|
234 | Input: | |||
|
235 | remotefolder - current working directory | |||
|
236 | ||||
|
237 | Affects: | |||
|
238 | self.fileList - file list of working directory | |||
|
239 | ||||
|
240 | Return: | |||
|
241 | infoList - list with filenames and size of file in bytes | |||
|
242 | ||||
|
243 | self.folderList - folder list | |||
|
244 | """ | |||
|
245 | ||||
|
246 | self.remotefolder = remotefolder | |||
|
247 | print 'Change to ' + self.remotefolder | |||
|
248 | try: | |||
|
249 | self.ftp.cwd(remotefolder) | |||
|
250 | except ftplib.all_errors: | |||
|
251 | print 'Error Change to ' + self.remotefolder | |||
|
252 | infoList = None | |||
|
253 | self.folderList = None | |||
|
254 | return infoList,self.folderList | |||
|
255 | ||||
|
256 | self.dirList = [] | |||
|
257 | ||||
|
258 | try: | |||
|
259 | self.dirList = self.ftp.nlst() | |||
|
260 | ||||
|
261 | except ftplib.error_perm, resp: | |||
|
262 | if str(resp) == "550 No files found": | |||
|
263 | print "no files in this directory" | |||
|
264 | infoList = None | |||
|
265 | self.folderList = None | |||
|
266 | return infoList,self.folderList | |||
|
267 | except ftplib.all_errors: | |||
|
268 | print 'Error Displaying Dir-Files' | |||
|
269 | infoList = None | |||
|
270 | self.folderList = None | |||
|
271 | return infoList,self.folderList | |||
|
272 | ||||
|
273 | infoList = [] | |||
|
274 | self.fileList = [] | |||
|
275 | self.folderList = [] | |||
|
276 | for f in self.dirList: | |||
|
277 | name,ext = os.path.splitext(f) | |||
|
278 | if ext != '': | |||
|
279 | self.fileList.append(f) | |||
|
280 | value = (f,self.ftp.size(f)) | |||
|
281 | infoList.append(value) | |||
|
282 | ||||
|
283 | if ext == '': | |||
|
284 | self.folderList.append(f) | |||
|
285 | ||||
|
286 | return infoList,self.folderList | |||
|
287 | ||||
|
288 | ||||
|
289 | def close(self): | |||
|
290 | """ | |||
|
291 | close is used to close and end FTP connection | |||
|
292 | ||||
|
293 | Inputs: None | |||
|
294 | ||||
|
295 | Return: void | |||
|
296 | ||||
|
297 | """ | |||
|
298 | self.ftp.close() No newline at end of file |
This diff has been collapsed as it changes many lines, (538 lines changed) Show them Hide them | |||||
@@ -0,0 +1,538 | |||||
|
1 | import os | |||
|
2 | import numpy | |||
|
3 | import time, datetime | |||
|
4 | import mpldriver_gui | |||
|
5 | from customftp import * | |||
|
6 | import Queue | |||
|
7 | import threading | |||
|
8 | ||||
|
9 | class FTP_Thread (threading.Thread): | |||
|
10 | def __init__(self): | |||
|
11 | threading.Thread.__init__(self) | |||
|
12 | self.exitFlag = 0 | |||
|
13 | self.queueLock = threading.Lock() | |||
|
14 | self.workQueue = Queue.Queue() | |||
|
15 | ||||
|
16 | def run(self): | |||
|
17 | self.send_data() | |||
|
18 | ||||
|
19 | def fin(self): | |||
|
20 | self.exitFlag = 1 | |||
|
21 | ||||
|
22 | def put_data(self, data): | |||
|
23 | # Fill the queue | |||
|
24 | self.queueLock.acquire() | |||
|
25 | self.workQueue.put(data) | |||
|
26 | self.queueLock.release() | |||
|
27 | ||||
|
28 | def send_data(self): | |||
|
29 | while not self.exitFlag: | |||
|
30 | if self.workQueue.qsize(): | |||
|
31 | ||||
|
32 | data = self.workQueue.get(True) | |||
|
33 | ||||
|
34 | try: | |||
|
35 | ftpObj = Ftp(host=data['server'], | |||
|
36 | username=data['username'], | |||
|
37 | passw=data['password'], | |||
|
38 | remotefolder=data['folder']) | |||
|
39 | ||||
|
40 | ftpObj.upload(data['figfilename']) | |||
|
41 | ftpObj.close() | |||
|
42 | except: | |||
|
43 | print ValueError, 'Error FTP' | |||
|
44 | print "don't worry still running the program" | |||
|
45 | ||||
|
46 | ||||
|
47 | class Figure(): | |||
|
48 | ||||
|
49 | __driver = mpldriver_gui | |||
|
50 | __isConfigThread = False | |||
|
51 | fig = None | |||
|
52 | ||||
|
53 | id = None | |||
|
54 | wintitle = None | |||
|
55 | width = None | |||
|
56 | height = None | |||
|
57 | nplots = None | |||
|
58 | timerange = None | |||
|
59 | ||||
|
60 | axesObjList = [] | |||
|
61 | ||||
|
62 | WIDTH = None | |||
|
63 | HEIGHT = None | |||
|
64 | PREFIX = 'fig' | |||
|
65 | ||||
|
66 | FTP_WEI = None #(WW) | |||
|
67 | EXP_CODE = None #(EXP) | |||
|
68 | SUB_EXP_CODE = None #(SS) | |||
|
69 | PLOT_CODE = None #(TT) | |||
|
70 | PLOT_POS = None #(NN) | |||
|
71 | ||||
|
72 | ||||
|
73 | ||||
|
74 | def __init__(self): | |||
|
75 | ||||
|
76 | raise ValueError, "This method is not implemented" | |||
|
77 | ||||
|
78 | def getSubplots(self): | |||
|
79 | ||||
|
80 | raise ValueError, "Abstract method: This method should be defined" | |||
|
81 | ||||
|
82 | def getAxesObjList(self): | |||
|
83 | ||||
|
84 | return self.axesObjList | |||
|
85 | ||||
|
86 | def getScreenDim(self, widthplot, heightplot): | |||
|
87 | ||||
|
88 | nrow, ncol = self.getSubplots() | |||
|
89 | widthscreen = widthplot*ncol | |||
|
90 | heightscreen = heightplot*nrow | |||
|
91 | ||||
|
92 | return widthscreen, heightscreen | |||
|
93 | ||||
|
94 | def getFilename(self, name, ext='.png'): | |||
|
95 | path = '%s%03d' %(self.PREFIX, self.id) | |||
|
96 | filename = '%s_%s%s' %(self.PREFIX, name, ext) | |||
|
97 | return os.path.join(path, filename) | |||
|
98 | ||||
|
99 | def createFigure(self, id, wintitle, widthplot=None, heightplot=None): | |||
|
100 | ||||
|
101 | if widthplot == None: | |||
|
102 | widthplot = self.WIDTH | |||
|
103 | ||||
|
104 | if heightplot == None: | |||
|
105 | heightplot = self.HEIGHT | |||
|
106 | ||||
|
107 | self.id = id | |||
|
108 | ||||
|
109 | self.wintitle = wintitle | |||
|
110 | ||||
|
111 | self.widthscreen, self.heightscreen = self.getScreenDim(widthplot, heightplot) | |||
|
112 | ||||
|
113 | self.fig = self.__driver.createFigure(id=self.id, | |||
|
114 | wintitle=self.wintitle, | |||
|
115 | width=self.widthscreen, | |||
|
116 | height=self.heightscreen) | |||
|
117 | ||||
|
118 | self.axesObjList = [] | |||
|
119 | ||||
|
120 | return self.fig | |||
|
121 | ||||
|
122 | def clearAxes(self): | |||
|
123 | self.axesObjList = [] | |||
|
124 | ||||
|
125 | def addAxes(self, *args): | |||
|
126 | axesObj = Axes(self.fig, *args) | |||
|
127 | self.axesObjList.append(axesObj) | |||
|
128 | ||||
|
129 | def saveFigure(self, figpath, figfile, *args): | |||
|
130 | ||||
|
131 | filename = os.path.join(figpath, figfile) | |||
|
132 | ||||
|
133 | fullpath = os.path.split(filename)[0] | |||
|
134 | ||||
|
135 | if not os.path.exists(fullpath): | |||
|
136 | subpath = os.path.split(fullpath)[0] | |||
|
137 | ||||
|
138 | if not os.path.exists(subpath): | |||
|
139 | os.mkdir(subpath) | |||
|
140 | ||||
|
141 | os.mkdir(fullpath) | |||
|
142 | ||||
|
143 | self.__driver.saveFigure(self.fig, filename, *args) | |||
|
144 | ||||
|
145 | def getTimeLim(self, x, xmin, xmax): | |||
|
146 | ||||
|
147 | if self.timerange != None: | |||
|
148 | txmin = x[0] - x[0]%self.timerange | |||
|
149 | else: | |||
|
150 | txmin = numpy.min(x) | |||
|
151 | ||||
|
152 | thisdatetime = datetime.datetime.utcfromtimestamp(txmin) | |||
|
153 | thisdate = datetime.datetime.combine(thisdatetime.date(), datetime.time(0,0,0)) | |||
|
154 | ||||
|
155 | #################################################### | |||
|
156 | #If the x is out of xrange | |||
|
157 | if xmax < (thisdatetime - thisdate).seconds/(60*60.): | |||
|
158 | xmin = None | |||
|
159 | xmax = None | |||
|
160 | ||||
|
161 | if xmin == None: | |||
|
162 | td = thisdatetime - thisdate | |||
|
163 | xmin = td.seconds/(60*60.) | |||
|
164 | ||||
|
165 | if xmax == None: | |||
|
166 | xmax = xmin + self.timerange/(60*60.) | |||
|
167 | ||||
|
168 | mindt = thisdate + datetime.timedelta(hours=xmin) - datetime.timedelta(seconds=time.timezone) | |||
|
169 | tmin = time.mktime(mindt.timetuple()) | |||
|
170 | ||||
|
171 | maxdt = thisdate + datetime.timedelta(hours=xmax) - datetime.timedelta(seconds=time.timezone) | |||
|
172 | tmax = time.mktime(maxdt.timetuple()) | |||
|
173 | ||||
|
174 | self.timerange = tmax - tmin | |||
|
175 | ||||
|
176 | return tmin, tmax | |||
|
177 | ||||
|
178 | def sendByFTP(self, figfilename, server, folder, username, password): | |||
|
179 | ftpObj = Ftp(host=server, username=username, passw=password, remotefolder=folder) | |||
|
180 | ftpObj.upload(figfilename) | |||
|
181 | ftpObj.close() | |||
|
182 | ||||
|
183 | def sendByFTP_Thread(self, figfilename, server, folder, username, password): | |||
|
184 | data = {'figfilename':figfilename,'server':server,'folder':folder,'username':username,'password':password} | |||
|
185 | ||||
|
186 | if not(self.__isConfigThread): | |||
|
187 | ||||
|
188 | self.thread = FTP_Thread() | |||
|
189 | self.thread.start() | |||
|
190 | self.__isConfigThread = True | |||
|
191 | ||||
|
192 | self.thread.put_data(data) | |||
|
193 | ||||
|
194 | ||||
|
195 | def getNameToFtp(self, thisDatetime, FTP_WEI, EXP_CODE, SUB_EXP_CODE, PLOT_CODE, PLOT_POS): | |||
|
196 | YEAR_STR = '%4.4d'%thisDatetime.timetuple().tm_year | |||
|
197 | DOY_STR = '%3.3d'%thisDatetime.timetuple().tm_yday | |||
|
198 | FTP_WEI = '%2.2d'%FTP_WEI | |||
|
199 | EXP_CODE = '%3.3d'%EXP_CODE | |||
|
200 | SUB_EXP_CODE = '%2.2d'%SUB_EXP_CODE | |||
|
201 | PLOT_CODE = '%2.2d'%PLOT_CODE | |||
|
202 | PLOT_POS = '%2.2d'%PLOT_POS | |||
|
203 | name = YEAR_STR + DOY_STR + FTP_WEI + EXP_CODE + SUB_EXP_CODE + PLOT_CODE + PLOT_POS | |||
|
204 | return name | |||
|
205 | ||||
|
206 | def draw(self): | |||
|
207 | self.__driver.draw(self.fig) | |||
|
208 | ||||
|
209 | axesList = property(getAxesObjList) | |||
|
210 | ||||
|
211 | class Axes: | |||
|
212 | ||||
|
213 | __driver = mpldriver_gui | |||
|
214 | fig = None | |||
|
215 | ax = None | |||
|
216 | plot = None | |||
|
217 | __missing = 1E30 | |||
|
218 | __firsttime = None | |||
|
219 | ||||
|
220 | __showprofile = False | |||
|
221 | ||||
|
222 | xmin = None | |||
|
223 | xmax = None | |||
|
224 | ymin = None | |||
|
225 | ymax = None | |||
|
226 | zmin = None | |||
|
227 | zmax = None | |||
|
228 | ||||
|
229 | x_buffer = None | |||
|
230 | z_buffer = None | |||
|
231 | ||||
|
232 | decimationx = None | |||
|
233 | decimationy = None | |||
|
234 | ||||
|
235 | __MAXNUMX = 1000. | |||
|
236 | __MAXNUMY = 500. | |||
|
237 | ||||
|
238 | def __init__(self, *args): | |||
|
239 | ||||
|
240 | """ | |||
|
241 | ||||
|
242 | Input: | |||
|
243 | *args : Los parametros necesarios son | |||
|
244 | fig, nrow, ncol, xpos, ypos, colspan, rowspan | |||
|
245 | """ | |||
|
246 | ||||
|
247 | ax = self.__driver.createAxes(*args) | |||
|
248 | self.fig = args[0] | |||
|
249 | self.ax = ax | |||
|
250 | self.plot = None | |||
|
251 | ||||
|
252 | self.__firsttime = True | |||
|
253 | self.idlineList = [] | |||
|
254 | ||||
|
255 | self.x_buffer = numpy.array([]) | |||
|
256 | self.z_buffer = numpy.array([]) | |||
|
257 | ||||
|
258 | def pcolor(self, x, y, z, | |||
|
259 | xmin=None, xmax=None, | |||
|
260 | ymin=None, ymax=None, | |||
|
261 | zmin=None, zmax=None, | |||
|
262 | xlabel='', ylabel='', | |||
|
263 | title='', rti = False, colormap='jet', | |||
|
264 | **kwargs): | |||
|
265 | ||||
|
266 | """ | |||
|
267 | Input: | |||
|
268 | x : | |||
|
269 | y : | |||
|
270 | x : | |||
|
271 | xmin : | |||
|
272 | xmax : | |||
|
273 | ymin : | |||
|
274 | ymax : | |||
|
275 | zmin : | |||
|
276 | zmax : | |||
|
277 | xlabel : | |||
|
278 | ylabel : | |||
|
279 | title : | |||
|
280 | **kwargs : Los parametros aceptados son | |||
|
281 | ticksize=9, | |||
|
282 | cblabel='' | |||
|
283 | rti = True or False | |||
|
284 | """ | |||
|
285 | ||||
|
286 | if self.__firsttime: | |||
|
287 | ||||
|
288 | if xmin == None: xmin = numpy.nanmin(x) | |||
|
289 | if xmax == None: xmax = numpy.nanmax(x) | |||
|
290 | if ymin == None: ymin = numpy.nanmin(y) | |||
|
291 | if ymax == None: ymax = numpy.nanmax(y) | |||
|
292 | if zmin == None: zmin = numpy.nanmin(z) | |||
|
293 | if zmax == None: zmax = numpy.nanmax(z) | |||
|
294 | ||||
|
295 | ||||
|
296 | self.plot = self.__driver.createPcolor(self.ax, x, y, z, | |||
|
297 | xmin, xmax, | |||
|
298 | ymin, ymax, | |||
|
299 | zmin, zmax, | |||
|
300 | xlabel=xlabel, | |||
|
301 | ylabel=ylabel, | |||
|
302 | title=title, | |||
|
303 | colormap=colormap, | |||
|
304 | **kwargs) | |||
|
305 | ||||
|
306 | if self.xmin == None: self.xmin = xmin | |||
|
307 | if self.xmax == None: self.xmax = xmax | |||
|
308 | if self.ymin == None: self.ymin = ymin | |||
|
309 | if self.ymax == None: self.ymax = ymax | |||
|
310 | if self.zmin == None: self.zmin = zmin | |||
|
311 | if self.zmax == None: self.zmax = zmax | |||
|
312 | ||||
|
313 | self.__firsttime = False | |||
|
314 | return | |||
|
315 | ||||
|
316 | if rti: | |||
|
317 | self.__driver.addpcolor(self.ax, x, y, z, self.zmin, self.zmax, | |||
|
318 | xlabel=xlabel, | |||
|
319 | ylabel=ylabel, | |||
|
320 | title=title, | |||
|
321 | colormap=colormap) | |||
|
322 | return | |||
|
323 | ||||
|
324 | self.__driver.pcolor(self.plot, z, | |||
|
325 | xlabel=xlabel, | |||
|
326 | ylabel=ylabel, | |||
|
327 | title=title) | |||
|
328 | ||||
|
329 | ||||
|
330 | def pline(self, x, y, | |||
|
331 | xmin=None, xmax=None, | |||
|
332 | ymin=None, ymax=None, | |||
|
333 | xlabel='', ylabel='', | |||
|
334 | title='', | |||
|
335 | **kwargs): | |||
|
336 | ||||
|
337 | """ | |||
|
338 | ||||
|
339 | Input: | |||
|
340 | x : | |||
|
341 | y : | |||
|
342 | xmin : | |||
|
343 | xmax : | |||
|
344 | ymin : | |||
|
345 | ymax : | |||
|
346 | xlabel : | |||
|
347 | ylabel : | |||
|
348 | title : | |||
|
349 | **kwargs : Los parametros aceptados son | |||
|
350 | ||||
|
351 | ticksize | |||
|
352 | ytick_visible | |||
|
353 | """ | |||
|
354 | ||||
|
355 | if self.__firsttime: | |||
|
356 | ||||
|
357 | if xmin == None: xmin = numpy.nanmin(x) | |||
|
358 | if xmax == None: xmax = numpy.nanmax(x) | |||
|
359 | if ymin == None: ymin = numpy.nanmin(y) | |||
|
360 | if ymax == None: ymax = numpy.nanmax(y) | |||
|
361 | ||||
|
362 | self.plot = self.__driver.createPline(self.ax, x, y, | |||
|
363 | xmin, xmax, | |||
|
364 | ymin, ymax, | |||
|
365 | xlabel=xlabel, | |||
|
366 | ylabel=ylabel, | |||
|
367 | title=title, | |||
|
368 | **kwargs) | |||
|
369 | ||||
|
370 | self.idlineList.append(0) | |||
|
371 | self.__firsttime = False | |||
|
372 | return | |||
|
373 | ||||
|
374 | self.__driver.pline(self.plot, x, y, xlabel=xlabel, | |||
|
375 | ylabel=ylabel, | |||
|
376 | title=title) | |||
|
377 | ||||
|
378 | def pmultiline(self, x, y, | |||
|
379 | xmin=None, xmax=None, | |||
|
380 | ymin=None, ymax=None, | |||
|
381 | xlabel='', ylabel='', | |||
|
382 | title='', | |||
|
383 | **kwargs): | |||
|
384 | ||||
|
385 | if self.__firsttime: | |||
|
386 | ||||
|
387 | if xmin == None: xmin = numpy.nanmin(x) | |||
|
388 | if xmax == None: xmax = numpy.nanmax(x) | |||
|
389 | if ymin == None: ymin = numpy.nanmin(y) | |||
|
390 | if ymax == None: ymax = numpy.nanmax(y) | |||
|
391 | ||||
|
392 | self.plot = self.__driver.createPmultiline(self.ax, x, y, | |||
|
393 | xmin, xmax, | |||
|
394 | ymin, ymax, | |||
|
395 | xlabel=xlabel, | |||
|
396 | ylabel=ylabel, | |||
|
397 | title=title, | |||
|
398 | **kwargs) | |||
|
399 | self.__firsttime = False | |||
|
400 | return | |||
|
401 | ||||
|
402 | self.__driver.pmultiline(self.plot, x, y, xlabel=xlabel, | |||
|
403 | ylabel=ylabel, | |||
|
404 | title=title) | |||
|
405 | ||||
|
406 | def pmultilineyaxis(self, x, y, | |||
|
407 | xmin=None, xmax=None, | |||
|
408 | ymin=None, ymax=None, | |||
|
409 | xlabel='', ylabel='', | |||
|
410 | title='', | |||
|
411 | **kwargs): | |||
|
412 | ||||
|
413 | if self.__firsttime: | |||
|
414 | ||||
|
415 | if xmin == None: xmin = numpy.nanmin(x) | |||
|
416 | if xmax == None: xmax = numpy.nanmax(x) | |||
|
417 | if ymin == None: ymin = numpy.nanmin(y) | |||
|
418 | if ymax == None: ymax = numpy.nanmax(y) | |||
|
419 | ||||
|
420 | self.plot = self.__driver.createPmultilineYAxis(self.ax, x, y, | |||
|
421 | xmin, xmax, | |||
|
422 | ymin, ymax, | |||
|
423 | xlabel=xlabel, | |||
|
424 | ylabel=ylabel, | |||
|
425 | title=title, | |||
|
426 | **kwargs) | |||
|
427 | if self.xmin == None: self.xmin = xmin | |||
|
428 | if self.xmax == None: self.xmax = xmax | |||
|
429 | if self.ymin == None: self.ymin = ymin | |||
|
430 | if self.ymax == None: self.ymax = ymax | |||
|
431 | ||||
|
432 | self.__firsttime = False | |||
|
433 | return | |||
|
434 | ||||
|
435 | self.__driver.pmultilineyaxis(self.plot, x, y, xlabel=xlabel, | |||
|
436 | ylabel=ylabel, | |||
|
437 | title=title) | |||
|
438 | ||||
|
439 | def addpline(self, x, y, idline, **kwargs): | |||
|
440 | lines = self.ax.lines | |||
|
441 | ||||
|
442 | if idline in self.idlineList: | |||
|
443 | self.__driver.set_linedata(self.ax, x, y, idline) | |||
|
444 | ||||
|
445 | if idline not in(self.idlineList): | |||
|
446 | self.__driver.addpline(self.ax, x, y, **kwargs) | |||
|
447 | self.idlineList.append(idline) | |||
|
448 | ||||
|
449 | return | |||
|
450 | ||||
|
451 | def pcolorbuffer(self, x, y, z, | |||
|
452 | xmin=None, xmax=None, | |||
|
453 | ymin=None, ymax=None, | |||
|
454 | zmin=None, zmax=None, | |||
|
455 | xlabel='', ylabel='', | |||
|
456 | title='', rti = True, colormap='jet', | |||
|
457 | maxNumX = None, maxNumY = None, | |||
|
458 | **kwargs): | |||
|
459 | ||||
|
460 | if maxNumX == None: | |||
|
461 | maxNumX = self.__MAXNUMX | |||
|
462 | ||||
|
463 | if maxNumY == None: | |||
|
464 | maxNumY = self.__MAXNUMY | |||
|
465 | ||||
|
466 | if self.__firsttime: | |||
|
467 | self.z_buffer = z | |||
|
468 | self.x_buffer = numpy.hstack((self.x_buffer, x)) | |||
|
469 | ||||
|
470 | if xmin == None: xmin = numpy.nanmin(x) | |||
|
471 | if xmax == None: xmax = numpy.nanmax(x) | |||
|
472 | if ymin == None: ymin = numpy.nanmin(y) | |||
|
473 | if ymax == None: ymax = numpy.nanmax(y) | |||
|
474 | if zmin == None: zmin = numpy.nanmin(z) | |||
|
475 | if zmax == None: zmax = numpy.nanmax(z) | |||
|
476 | ||||
|
477 | ||||
|
478 | self.plot = self.__driver.createPcolor(self.ax, self.x_buffer, y, z, | |||
|
479 | xmin, xmax, | |||
|
480 | ymin, ymax, | |||
|
481 | zmin, zmax, | |||
|
482 | xlabel=xlabel, | |||
|
483 | ylabel=ylabel, | |||
|
484 | title=title, | |||
|
485 | colormap=colormap, | |||
|
486 | **kwargs) | |||
|
487 | ||||
|
488 | if self.xmin == None: self.xmin = xmin | |||
|
489 | if self.xmax == None: self.xmax = xmax | |||
|
490 | if self.ymin == None: self.ymin = ymin | |||
|
491 | if self.ymax == None: self.ymax = ymax | |||
|
492 | if self.zmin == None: self.zmin = zmin | |||
|
493 | if self.zmax == None: self.zmax = zmax | |||
|
494 | ||||
|
495 | self.__firsttime = False | |||
|
496 | return | |||
|
497 | ||||
|
498 | self.x_buffer = numpy.hstack((self.x_buffer, x[-1])) | |||
|
499 | self.z_buffer = numpy.hstack((self.z_buffer, z)) | |||
|
500 | ||||
|
501 | if self.decimationx == None: | |||
|
502 | deltax = float(self.xmax - self.xmin)/maxNumX | |||
|
503 | deltay = float(self.ymax - self.ymin)/maxNumY | |||
|
504 | ||||
|
505 | resolutionx = self.x_buffer[2]-self.x_buffer[0] | |||
|
506 | resolutiony = y[1]-y[0] | |||
|
507 | ||||
|
508 | self.decimationx = numpy.ceil(deltax / resolutionx) | |||
|
509 | self.decimationy = numpy.ceil(deltay / resolutiony) | |||
|
510 | ||||
|
511 | z_buffer = self.z_buffer.reshape(-1,len(y)) | |||
|
512 | ||||
|
513 | x_buffer = self.x_buffer[::self.decimationx] | |||
|
514 | y_buffer = y[::self.decimationy] | |||
|
515 | z_buffer = z_buffer[::self.decimationx, ::self.decimationy] | |||
|
516 | #=================================================== | |||
|
517 | ||||
|
518 | x_buffer, y_buffer, z_buffer = self.__fillGaps(x_buffer, y_buffer, z_buffer) | |||
|
519 | ||||
|
520 | self.__driver.addpcolorbuffer(self.ax, x_buffer, y_buffer, z_buffer, self.zmin, self.zmax, | |||
|
521 | xlabel=xlabel, | |||
|
522 | ylabel=ylabel, | |||
|
523 | title=title, | |||
|
524 | colormap=colormap) | |||
|
525 | def __fillGaps(self, x_buffer, y_buffer, z_buffer): | |||
|
526 | ||||
|
527 | deltas = x_buffer[1:] - x_buffer[0:-1] | |||
|
528 | x_median = numpy.median(deltas) | |||
|
529 | ||||
|
530 | index = numpy.where(deltas >= 2*x_median) | |||
|
531 | ||||
|
532 | if len(index[0]) != 0: | |||
|
533 | z_buffer[index[0],::] = self.__missing | |||
|
534 | z_buffer = numpy.ma.masked_inside(z_buffer,0.99*self.__missing,1.01*self.__missing) | |||
|
535 | ||||
|
536 | return x_buffer, y_buffer, z_buffer | |||
|
537 | ||||
|
538 | No newline at end of file |
@@ -0,0 +1,326 | |||||
|
1 | import numpy | |||
|
2 | import datetime | |||
|
3 | import sys | |||
|
4 | ||||
|
5 | from matplotlib.figure import Figure | |||
|
6 | from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas | |||
|
7 | ||||
|
8 | from mpl_toolkits.axes_grid1 import make_axes_locatable | |||
|
9 | from matplotlib.ticker import * | |||
|
10 | import matplotlib.gridspec as gridspec | |||
|
11 | import matplotlib.cm as cm | |||
|
12 | import matplotlib.colorbar | |||
|
13 | ||||
|
14 | def createFigure(id, wintitle, width, height, facecolor="w"): | |||
|
15 | figsize = (width,height) | |||
|
16 | fig = Figure(figsize=figsize, facecolor=facecolor) | |||
|
17 | ||||
|
18 | return fig | |||
|
19 | ||||
|
20 | def createAxes(fig, nrow, ncol, x, y, ratio): | |||
|
21 | width_ratios = [] | |||
|
22 | for i in range(ncol): | |||
|
23 | if i%2==0: | |||
|
24 | width_ratios.append(ratio) | |||
|
25 | else: | |||
|
26 | width_ratios.append(1) | |||
|
27 | ||||
|
28 | gs = gridspec.GridSpec(nrow, ncol, width_ratios=width_ratios) | |||
|
29 | ax = fig.add_subplot(gs[x,y]) | |||
|
30 | ||||
|
31 | return ax | |||
|
32 | ||||
|
33 | def saveFigure(fig, filename): | |||
|
34 | fig.savefig(filename) | |||
|
35 | ||||
|
36 | ||||
|
37 | def printLabels(ax, xlabel, ylabel, title): | |||
|
38 | ||||
|
39 | ax.set_xlabel(xlabel, size=11) | |||
|
40 | ax.set_ylabel(ylabel, size=11) | |||
|
41 | ax.set_title(title, size=12) | |||
|
42 | ||||
|
43 | def createPcolor(ax, x, y, z, xmin, xmax, ymin, ymax, zmin, zmax, | |||
|
44 | xlabel='', ylabel='', title='', ticksize = 9, | |||
|
45 | colormap='jet',cblabel='', cbsize="5%", | |||
|
46 | XAxisAsTime=False): | |||
|
47 | ||||
|
48 | divider = make_axes_locatable(ax) | |||
|
49 | ax_cb = divider.new_horizontal(size=cbsize, pad=0.05) | |||
|
50 | fig = ax.get_figure() | |||
|
51 | fig.add_axes(ax_cb) | |||
|
52 | ||||
|
53 | ax.set_xlim([xmin,xmax]) | |||
|
54 | ax.set_ylim([ymin,ymax]) | |||
|
55 | ||||
|
56 | printLabels(ax, xlabel, ylabel, title) | |||
|
57 | ||||
|
58 | imesh = ax.pcolormesh(x,y,z.T, vmin=zmin, vmax=zmax, cmap=cm.get_cmap(colormap)) | |||
|
59 | cb = fig.colorbar(imesh, cax=ax_cb) | |||
|
60 | cb.set_label(cblabel) | |||
|
61 | ||||
|
62 | for tick in ax.yaxis.get_major_ticks(): | |||
|
63 | tick.label.set_fontsize(ticksize) | |||
|
64 | ||||
|
65 | for tick in ax.xaxis.get_major_ticks(): | |||
|
66 | tick.label.set_fontsize(ticksize) | |||
|
67 | ||||
|
68 | for tick in cb.ax.get_yticklabels(): | |||
|
69 | tick.set_fontsize(ticksize) | |||
|
70 | ||||
|
71 | ax_cb.yaxis.tick_right() | |||
|
72 | ||||
|
73 | if '0.' in matplotlib.__version__[0:2]: | |||
|
74 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
75 | return imesh | |||
|
76 | ||||
|
77 | if '1.0.' in matplotlib.__version__[0:4]: | |||
|
78 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
79 | return imesh | |||
|
80 | ||||
|
81 | fig.tight_layout() | |||
|
82 | ||||
|
83 | if XAxisAsTime: | |||
|
84 | ||||
|
85 | func = lambda x, pos: ('%s') %(datetime.datetime.utcfromtimestamp(x).strftime("%H:%M:%S")) | |||
|
86 | ax.xaxis.set_major_formatter(FuncFormatter(func)) | |||
|
87 | ax.xaxis.set_major_locator(LinearLocator(7)) | |||
|
88 | ||||
|
89 | return imesh | |||
|
90 | ||||
|
91 | def pcolor(imesh, z, xlabel='', ylabel='', title=''): | |||
|
92 | ||||
|
93 | z = z.T | |||
|
94 | ||||
|
95 | ax = imesh.get_axes() | |||
|
96 | ||||
|
97 | printLabels(ax, xlabel, ylabel, title) | |||
|
98 | ||||
|
99 | imesh.set_array(z.ravel()) | |||
|
100 | ||||
|
101 | def addpcolorbuffer(ax, x, y, z, zmin, zmax, xlabel='', ylabel='', title='', colormap='jet'): | |||
|
102 | ||||
|
103 | printLabels(ax, xlabel, ylabel, title) | |||
|
104 | ||||
|
105 | ax.collections.remove(ax.collections[0]) | |||
|
106 | ||||
|
107 | ax.pcolormesh(x,y,z.T,vmin=zmin,vmax=zmax, cmap=matplotlib.pyplot.get_cmap(colormap)) | |||
|
108 | ||||
|
109 | ||||
|
110 | def draw(fig): | |||
|
111 | ||||
|
112 | if type(fig) == 'int': | |||
|
113 | raise ValueError, "This parameter should be of tpye matplotlib figure" | |||
|
114 | ||||
|
115 | fig.canvas.draw() | |||
|
116 | ||||
|
117 | ||||
|
118 | def createPline(ax, x, y, xmin, xmax, ymin, ymax, xlabel='', ylabel='', title='', | |||
|
119 | ticksize=9, xtick_visible=True, ytick_visible=True, | |||
|
120 | nxticks=4, nyticks=10, | |||
|
121 | grid=None): | |||
|
122 | ||||
|
123 | """ | |||
|
124 | ||||
|
125 | Input: | |||
|
126 | grid : None, 'both', 'x', 'y' | |||
|
127 | """ | |||
|
128 | fig = ax.get_figure() | |||
|
129 | ax.set_xlim([xmin,xmax]) | |||
|
130 | ax.set_ylim([ymin,ymax]) | |||
|
131 | ||||
|
132 | printLabels(ax, xlabel, ylabel, title) | |||
|
133 | ||||
|
134 | ###################################################### | |||
|
135 | if (xmax-xmin)<=1: | |||
|
136 | xtickspos = numpy.linspace(xmin,xmax,nxticks) | |||
|
137 | xtickspos = numpy.array([float("%.1f"%i) for i in xtickspos]) | |||
|
138 | ax.set_xticks(xtickspos) | |||
|
139 | else: | |||
|
140 | xtickspos = numpy.arange(nxticks)*int((xmax-xmin)/(nxticks)) + int(xmin) | |||
|
141 | # xtickspos = numpy.arange(nxticks)*float(xmax-xmin)/float(nxticks) + int(xmin) | |||
|
142 | ax.set_xticks(xtickspos) | |||
|
143 | ||||
|
144 | for tick in ax.get_xticklabels(): | |||
|
145 | tick.set_visible(xtick_visible) | |||
|
146 | ||||
|
147 | for tick in ax.xaxis.get_major_ticks(): | |||
|
148 | tick.label.set_fontsize(ticksize) | |||
|
149 | ||||
|
150 | ###################################################### | |||
|
151 | for tick in ax.get_yticklabels(): | |||
|
152 | tick.set_visible(ytick_visible) | |||
|
153 | ||||
|
154 | for tick in ax.yaxis.get_major_ticks(): | |||
|
155 | tick.label.set_fontsize(ticksize) | |||
|
156 | ||||
|
157 | ax.plot(x, y) | |||
|
158 | iplot = ax.lines[-1] | |||
|
159 | ||||
|
160 | ###################################################### | |||
|
161 | if '0.' in matplotlib.__version__[0:2]: | |||
|
162 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
163 | return iplot | |||
|
164 | ||||
|
165 | if '1.0.' in matplotlib.__version__[0:4]: | |||
|
166 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
167 | return iplot | |||
|
168 | ||||
|
169 | if grid != None: | |||
|
170 | ax.grid(b=True, which='major', axis=grid) | |||
|
171 | fig.tight_layout() | |||
|
172 | return iplot | |||
|
173 | ||||
|
174 | def set_linedata(ax, x, y, idline): | |||
|
175 | ||||
|
176 | ax.lines[idline].set_data(x,y) | |||
|
177 | ||||
|
178 | def pline(iplot, x, y, xlabel='', ylabel='', title=''): | |||
|
179 | ||||
|
180 | ax = iplot.get_axes() | |||
|
181 | ||||
|
182 | printLabels(ax, xlabel, ylabel, title) | |||
|
183 | ||||
|
184 | set_linedata(ax, x, y, idline=0) | |||
|
185 | ||||
|
186 | def addpline(ax, x, y, color, linestyle, lw): | |||
|
187 | ||||
|
188 | ax.plot(x,y,color=color,linestyle=linestyle,lw=lw) | |||
|
189 | ||||
|
190 | def createPmultiline(ax, x, y, xmin, xmax, ymin, ymax, xlabel='', ylabel='', title='', legendlabels=None, | |||
|
191 | ticksize=9, xtick_visible=True, ytick_visible=True, | |||
|
192 | nxticks=4, nyticks=10, | |||
|
193 | grid=None): | |||
|
194 | ||||
|
195 | """ | |||
|
196 | ||||
|
197 | Input: | |||
|
198 | grid : None, 'both', 'x', 'y' | |||
|
199 | """ | |||
|
200 | ||||
|
201 | # matplotlib.pyplot.ioff() | |||
|
202 | fig = ax.get_figure() | |||
|
203 | ||||
|
204 | lines = ax.plot(x.T, y) | |||
|
205 | leg = ax.legend(lines, legendlabels, loc='upper right') | |||
|
206 | leg.get_frame().set_alpha(0.5) | |||
|
207 | ax.set_xlim([xmin,xmax]) | |||
|
208 | ax.set_ylim([ymin,ymax]) | |||
|
209 | printLabels(ax, xlabel, ylabel, title) | |||
|
210 | ||||
|
211 | xtickspos = numpy.arange(nxticks)*int((xmax-xmin)/(nxticks)) + int(xmin) | |||
|
212 | ax.set_xticks(xtickspos) | |||
|
213 | ||||
|
214 | for tick in ax.get_xticklabels(): | |||
|
215 | tick.set_visible(xtick_visible) | |||
|
216 | ||||
|
217 | for tick in ax.xaxis.get_major_ticks(): | |||
|
218 | tick.label.set_fontsize(ticksize) | |||
|
219 | ||||
|
220 | for tick in ax.get_yticklabels(): | |||
|
221 | tick.set_visible(ytick_visible) | |||
|
222 | ||||
|
223 | for tick in ax.yaxis.get_major_ticks(): | |||
|
224 | tick.label.set_fontsize(ticksize) | |||
|
225 | ||||
|
226 | iplot = ax.lines[-1] | |||
|
227 | ||||
|
228 | if '0.' in matplotlib.__version__[0:2]: | |||
|
229 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
230 | return iplot | |||
|
231 | ||||
|
232 | if '1.0.' in matplotlib.__version__[0:4]: | |||
|
233 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
234 | return iplot | |||
|
235 | ||||
|
236 | if grid != None: | |||
|
237 | ax.grid(b=True, which='major', axis=grid) | |||
|
238 | ||||
|
239 | # matplotlib.pyplot.tight_layout() | |||
|
240 | # | |||
|
241 | # matplotlib.pyplot.ion() | |||
|
242 | ||||
|
243 | fig.tight_layout() | |||
|
244 | ||||
|
245 | return iplot | |||
|
246 | ||||
|
247 | ||||
|
248 | def pmultiline(iplot, x, y, xlabel='', ylabel='', title=''): | |||
|
249 | ||||
|
250 | ax = iplot.get_axes() | |||
|
251 | ||||
|
252 | printLabels(ax, xlabel, ylabel, title) | |||
|
253 | ||||
|
254 | for i in range(len(ax.lines)): | |||
|
255 | line = ax.lines[i] | |||
|
256 | line.set_data(x[i,:],y) | |||
|
257 | ||||
|
258 | def createPmultilineYAxis(ax, x, y, xmin, xmax, ymin, ymax, xlabel='', ylabel='', title='', legendlabels=None, | |||
|
259 | ticksize=9, xtick_visible=True, ytick_visible=True, | |||
|
260 | nxticks=4, nyticks=10, marker='.', markersize=10, linestyle="None", | |||
|
261 | grid=None, XAxisAsTime=False): | |||
|
262 | ||||
|
263 | ||||
|
264 | # matplotlib.pyplot.ioff() | |||
|
265 | fig = ax.get_figure() | |||
|
266 | ||||
|
267 | lines = ax.plot(x, y.T, linestyle='None', marker='.', markersize=markersize) | |||
|
268 | leg = ax.legend(lines, legendlabels, loc='upper left', bbox_to_anchor=(1.01, 1.00), numpoints=1, handlelength=1.5, \ | |||
|
269 | handletextpad=0.5, borderpad=0.5, labelspacing=0.5, borderaxespad=0.) | |||
|
270 | ||||
|
271 | for label in leg.get_texts(): label.set_fontsize(9) | |||
|
272 | ||||
|
273 | ax.set_xlim([xmin,xmax]) | |||
|
274 | ax.set_ylim([ymin,ymax]) | |||
|
275 | printLabels(ax, xlabel, ylabel, title) | |||
|
276 | ||||
|
277 | # xtickspos = numpy.arange(nxticks)*int((xmax-xmin)/(nxticks)) + int(xmin) | |||
|
278 | # ax.set_xticks(xtickspos) | |||
|
279 | ||||
|
280 | for tick in ax.get_xticklabels(): | |||
|
281 | tick.set_visible(xtick_visible) | |||
|
282 | ||||
|
283 | for tick in ax.xaxis.get_major_ticks(): | |||
|
284 | tick.label.set_fontsize(ticksize) | |||
|
285 | ||||
|
286 | for tick in ax.get_yticklabels(): | |||
|
287 | tick.set_visible(ytick_visible) | |||
|
288 | ||||
|
289 | for tick in ax.yaxis.get_major_ticks(): | |||
|
290 | tick.label.set_fontsize(ticksize) | |||
|
291 | ||||
|
292 | iplot = ax.lines[-1] | |||
|
293 | ||||
|
294 | if '0.' in matplotlib.__version__[0:2]: | |||
|
295 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
296 | return iplot | |||
|
297 | ||||
|
298 | if '1.0.' in matplotlib.__version__[0:4]: | |||
|
299 | print "The matplotlib version has to be updated to 1.1 or newer" | |||
|
300 | return iplot | |||
|
301 | ||||
|
302 | if grid != None: | |||
|
303 | ax.grid(b=True, which='major', axis=grid) | |||
|
304 | ||||
|
305 | # matplotlib.pyplot.tight_layout() | |||
|
306 | ||||
|
307 | if XAxisAsTime: | |||
|
308 | ||||
|
309 | func = lambda x, pos: ('%s') %(datetime.datetime.utcfromtimestamp(x).strftime("%H:%M:%S")) | |||
|
310 | ax.xaxis.set_major_formatter(FuncFormatter(func)) | |||
|
311 | ax.xaxis.set_major_locator(LinearLocator(7)) | |||
|
312 | ||||
|
313 | fig.tight_layout() | |||
|
314 | # matplotlib.pyplot.ion() | |||
|
315 | ||||
|
316 | return iplot | |||
|
317 | ||||
|
318 | def pmultilineyaxis(iplot, x, y, xlabel='', ylabel='', title=''): | |||
|
319 | ||||
|
320 | ax = iplot.get_axes() | |||
|
321 | ||||
|
322 | printLabels(ax, xlabel, ylabel, title) | |||
|
323 | ||||
|
324 | for i in range(len(ax.lines)): | |||
|
325 | line = ax.lines[i] | |||
|
326 | line.set_data(x,y[i,:]) No newline at end of file |
@@ -0,0 +1,139 | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | ||||
|
3 | # Form implementation generated from reading ui file '/home/alex/ui/ftpConfig4.ui' | |||
|
4 | # | |||
|
5 | # Created: Tue Aug 20 08:24:35 2013 | |||
|
6 | # by: PyQt4 UI code generator 4.10 | |||
|
7 | # | |||
|
8 | # WARNING! All changes made in this file will be lost! | |||
|
9 | ||||
|
10 | from PyQt4 import QtCore, QtGui | |||
|
11 | ||||
|
12 | try: | |||
|
13 | _fromUtf8 = QtCore.QString.fromUtf8 | |||
|
14 | except AttributeError: | |||
|
15 | def _fromUtf8(s): | |||
|
16 | return s | |||
|
17 | ||||
|
18 | try: | |||
|
19 | _encoding = QtGui.QApplication.UnicodeUTF8 | |||
|
20 | def _translate(context, text, disambig): | |||
|
21 | return QtGui.QApplication.translate(context, text, disambig, _encoding) | |||
|
22 | except AttributeError: | |||
|
23 | def _translate(context, text, disambig): | |||
|
24 | return QtGui.QApplication.translate(context, text, disambig) | |||
|
25 | ||||
|
26 | class Ui_Ftp(object): | |||
|
27 | def setupUi(self, MainWindow): | |||
|
28 | MainWindow.setObjectName(_fromUtf8("MainWindow")) | |||
|
29 | MainWindow.resize(374, 399) | |||
|
30 | MainWindow.setMinimumSize(QtCore.QSize(374, 399)) | |||
|
31 | MainWindow.setMaximumSize(QtCore.QSize(374, 399)) | |||
|
32 | self.centralWidget = QtGui.QWidget(MainWindow) | |||
|
33 | self.centralWidget.setObjectName(_fromUtf8("centralWidget")) | |||
|
34 | self.label = QtGui.QLabel(self.centralWidget) | |||
|
35 | self.label.setGeometry(QtCore.QRect(9, 38, 47, 17)) | |||
|
36 | self.label.setObjectName(_fromUtf8("label")) | |||
|
37 | self.label_2 = QtGui.QLabel(self.centralWidget) | |||
|
38 | self.label_2.setGeometry(QtCore.QRect(9, 133, 77, 17)) | |||
|
39 | self.label_2.setObjectName(_fromUtf8("label_2")) | |||
|
40 | self.label_3 = QtGui.QLabel(self.centralWidget) | |||
|
41 | self.label_3.setGeometry(QtCore.QRect(9, 166, 68, 17)) | |||
|
42 | self.label_3.setObjectName(_fromUtf8("label_3")) | |||
|
43 | self.label_4 = QtGui.QLabel(self.centralWidget) | |||
|
44 | self.label_4.setGeometry(QtCore.QRect(9, 9, 101, 17)) | |||
|
45 | font = QtGui.QFont() | |||
|
46 | font.setBold(True) | |||
|
47 | font.setWeight(75) | |||
|
48 | self.label_4.setFont(font) | |||
|
49 | self.label_4.setObjectName(_fromUtf8("label_4")) | |||
|
50 | self.label_5 = QtGui.QLabel(self.centralWidget) | |||
|
51 | self.label_5.setGeometry(QtCore.QRect(9, 104, 87, 17)) | |||
|
52 | font = QtGui.QFont() | |||
|
53 | font.setBold(True) | |||
|
54 | font.setWeight(75) | |||
|
55 | self.label_5.setFont(font) | |||
|
56 | self.label_5.setObjectName(_fromUtf8("label_5")) | |||
|
57 | self.label_6 = QtGui.QLabel(self.centralWidget) | |||
|
58 | self.label_6.setGeometry(QtCore.QRect(9, 71, 47, 17)) | |||
|
59 | self.label_6.setObjectName(_fromUtf8("label_6")) | |||
|
60 | self.serverFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
61 | self.serverFTP.setGeometry(QtCore.QRect(130, 40, 231, 27)) | |||
|
62 | self.serverFTP.setObjectName(_fromUtf8("serverFTP")) | |||
|
63 | self.folderFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
64 | self.folderFTP.setGeometry(QtCore.QRect(130, 70, 231, 27)) | |||
|
65 | self.folderFTP.setObjectName(_fromUtf8("folderFTP")) | |||
|
66 | self.usernameFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
67 | self.usernameFTP.setGeometry(QtCore.QRect(130, 130, 231, 27)) | |||
|
68 | self.usernameFTP.setObjectName(_fromUtf8("usernameFTP")) | |||
|
69 | self.passwordFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
70 | self.passwordFTP.setGeometry(QtCore.QRect(130, 160, 231, 27)) | |||
|
71 | self.passwordFTP.setObjectName(_fromUtf8("passwordFTP")) | |||
|
72 | self.ftpCancelButton = QtGui.QPushButton(self.centralWidget) | |||
|
73 | self.ftpCancelButton.setGeometry(QtCore.QRect(130, 360, 111, 27)) | |||
|
74 | self.ftpCancelButton.setObjectName(_fromUtf8("ftpCancelButton")) | |||
|
75 | self.ftpOkButton = QtGui.QPushButton(self.centralWidget) | |||
|
76 | self.ftpOkButton.setGeometry(QtCore.QRect(250, 360, 111, 27)) | |||
|
77 | self.ftpOkButton.setObjectName(_fromUtf8("ftpOkButton")) | |||
|
78 | self.label_7 = QtGui.QLabel(self.centralWidget) | |||
|
79 | self.label_7.setGeometry(QtCore.QRect(10, 200, 66, 17)) | |||
|
80 | font = QtGui.QFont() | |||
|
81 | font.setBold(True) | |||
|
82 | font.setWeight(75) | |||
|
83 | self.label_7.setFont(font) | |||
|
84 | self.label_7.setObjectName(_fromUtf8("label_7")) | |||
|
85 | self.label_8 = QtGui.QLabel(self.centralWidget) | |||
|
86 | self.label_8.setGeometry(QtCore.QRect(10, 230, 81, 17)) | |||
|
87 | self.label_8.setObjectName(_fromUtf8("label_8")) | |||
|
88 | self.label_9 = QtGui.QLabel(self.centralWidget) | |||
|
89 | self.label_9.setGeometry(QtCore.QRect(10, 260, 81, 17)) | |||
|
90 | self.label_9.setObjectName(_fromUtf8("label_9")) | |||
|
91 | self.label_10 = QtGui.QLabel(self.centralWidget) | |||
|
92 | self.label_10.setGeometry(QtCore.QRect(10, 290, 81, 17)) | |||
|
93 | self.label_10.setObjectName(_fromUtf8("label_10")) | |||
|
94 | self.label_11 = QtGui.QLabel(self.centralWidget) | |||
|
95 | self.label_11.setGeometry(QtCore.QRect(10, 320, 81, 17)) | |||
|
96 | self.label_11.setObjectName(_fromUtf8("label_11")) | |||
|
97 | self.weightFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
98 | self.weightFTP.setGeometry(QtCore.QRect(130, 230, 231, 27)) | |||
|
99 | self.weightFTP.setObjectName(_fromUtf8("weightFTP")) | |||
|
100 | self.expcodeFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
101 | self.expcodeFTP.setGeometry(QtCore.QRect(130, 260, 231, 27)) | |||
|
102 | self.expcodeFTP.setObjectName(_fromUtf8("expcodeFTP")) | |||
|
103 | self.subexpFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
104 | self.subexpFTP.setGeometry(QtCore.QRect(130, 290, 231, 27)) | |||
|
105 | self.subexpFTP.setObjectName(_fromUtf8("subexpFTP")) | |||
|
106 | self.plotposFTP = QtGui.QLineEdit(self.centralWidget) | |||
|
107 | self.plotposFTP.setGeometry(QtCore.QRect(130, 320, 231, 27)) | |||
|
108 | self.plotposFTP.setObjectName(_fromUtf8("plotposFTP")) | |||
|
109 | MainWindow.setCentralWidget(self.centralWidget) | |||
|
110 | ||||
|
111 | self.retranslateUi(MainWindow) | |||
|
112 | QtCore.QMetaObject.connectSlotsByName(MainWindow) | |||
|
113 | ||||
|
114 | def retranslateUi(self, MainWindow): | |||
|
115 | MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) | |||
|
116 | self.label.setText(_translate("MainWindow", "Server:", None)) | |||
|
117 | self.label_2.setText(_translate("MainWindow", "User Name:", None)) | |||
|
118 | self.label_3.setText(_translate("MainWindow", "Password:", None)) | |||
|
119 | self.label_4.setText(_translate("MainWindow", "Server Details", None)) | |||
|
120 | self.label_5.setText(_translate("MainWindow", "User Details", None)) | |||
|
121 | self.label_6.setText(_translate("MainWindow", "Folder:", None)) | |||
|
122 | self.ftpCancelButton.setText(_translate("MainWindow", "Cancel", None)) | |||
|
123 | self.ftpOkButton.setText(_translate("MainWindow", "Ok", None)) | |||
|
124 | self.label_7.setText(_translate("MainWindow", "Others", None)) | |||
|
125 | self.label_8.setText(_translate("MainWindow", "Ftp_wei:", None)) | |||
|
126 | self.label_9.setText(_translate("MainWindow", "Exp_code:", None)) | |||
|
127 | self.label_10.setText(_translate("MainWindow", "Sub_exp:", None)) | |||
|
128 | self.label_11.setText(_translate("MainWindow", "Plot_pos:", None)) | |||
|
129 | ||||
|
130 | ||||
|
131 | if __name__ == "__main__": | |||
|
132 | import sys | |||
|
133 | app = QtGui.QApplication(sys.argv) | |||
|
134 | MainWindow = QtGui.QMainWindow() | |||
|
135 | ui = Ui_Ftp() | |||
|
136 | ui.setupUi(MainWindow) | |||
|
137 | MainWindow.show() | |||
|
138 | sys.exit(app.exec_()) | |||
|
139 |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
@@ -139,6 +139,12 class ParameterConf(): | |||||
139 | self.name = name |
|
139 | self.name = name | |
140 | self.value = str(value) |
|
140 | self.value = str(value) | |
141 | self.format = str.lower(format) |
|
141 | self.format = str.lower(format) | |
|
142 | ||||
|
143 | def update(self, name, value, format='str'): | |||
|
144 | ||||
|
145 | self.name = name | |||
|
146 | self.value = str(value) | |||
|
147 | self.format = format | |||
142 |
|
148 | |||
143 | def makeXml(self, opElement): |
|
149 | def makeXml(self, opElement): | |
144 |
|
150 | |||
@@ -194,6 +200,34 class OperationConf(): | |||||
194 |
|
200 | |||
195 | return self.parmConfObjList |
|
201 | return self.parmConfObjList | |
196 |
|
202 | |||
|
203 | def getParameterObj(self, parameterName): | |||
|
204 | ||||
|
205 | for parmConfObj in self.parmConfObjList: | |||
|
206 | ||||
|
207 | if parmConfObj.name != parameterName: | |||
|
208 | continue | |||
|
209 | ||||
|
210 | return parmConfObj | |||
|
211 | ||||
|
212 | return None | |||
|
213 | ||||
|
214 | def getParameterObjfromValue(self,parameterValue): | |||
|
215 | for parmConfObj in self.parmConfObjList: | |||
|
216 | ||||
|
217 | if parmConfObj.getValue() != parameterValue: | |||
|
218 | continue | |||
|
219 | ||||
|
220 | return parmConfObj.getValue() | |||
|
221 | ||||
|
222 | return None | |||
|
223 | ||||
|
224 | def getParameterValue(self, parameterName): | |||
|
225 | ||||
|
226 | parameterObj = self.getParameterObj(parameterName) | |||
|
227 | value = parameterObj.getValue() | |||
|
228 | ||||
|
229 | return value | |||
|
230 | ||||
197 | def setup(self, id, name, priority, type): |
|
231 | def setup(self, id, name, priority, type): | |
198 |
|
232 | |||
199 | self.id = id |
|
233 | self.id = id | |
@@ -202,6 +236,13 class OperationConf(): | |||||
202 | self.priority = priority |
|
236 | self.priority = priority | |
203 |
|
237 | |||
204 | self.parmConfObjList = [] |
|
238 | self.parmConfObjList = [] | |
|
239 | ||||
|
240 | def removeParameters(self): | |||
|
241 | ||||
|
242 | for obj in self.parmConfObjList: | |||
|
243 | del obj | |||
|
244 | ||||
|
245 | self.parmConfObjList = [] | |||
205 |
|
246 | |||
206 | def addParameter(self, name, value, format='str'): |
|
247 | def addParameter(self, name, value, format='str'): | |
207 |
|
248 | |||
@@ -214,6 +255,13 class OperationConf(): | |||||
214 |
|
255 | |||
215 | return parmConfObj |
|
256 | return parmConfObj | |
216 |
|
257 | |||
|
258 | def changeParameter(self, name, value, format='str'): | |||
|
259 | ||||
|
260 | parmConfObj = self.getParameterObj(name) | |||
|
261 | parmConfObj.update(name, value, format) | |||
|
262 | ||||
|
263 | return parmConfObj | |||
|
264 | ||||
217 | def makeXml(self, upElement): |
|
265 | def makeXml(self, upElement): | |
218 |
|
266 | |||
219 | opElement = SubElement(upElement, self.ELEMENTNAME) |
|
267 | opElement = SubElement(upElement, self.ELEMENTNAME) | |
@@ -282,6 +330,7 class ProcUnitConf(): | |||||
282 | name = None |
|
330 | name = None | |
283 | datatype = None |
|
331 | datatype = None | |
284 | inputId = None |
|
332 | inputId = None | |
|
333 | parentId = None | |||
285 |
|
334 | |||
286 | opConfObjList = [] |
|
335 | opConfObjList = [] | |
287 |
|
336 | |||
@@ -326,21 +375,49 class ProcUnitConf(): | |||||
326 |
|
375 | |||
327 | return self.opConfObjList |
|
376 | return self.opConfObjList | |
328 |
|
377 | |||
|
378 | def getOperationObj(self, name=None): | |||
|
379 | ||||
|
380 | for opConfObj in self.opConfObjList: | |||
|
381 | ||||
|
382 | if opConfObj.name != name: | |||
|
383 | continue | |||
|
384 | ||||
|
385 | return opConfObj | |||
|
386 | ||||
|
387 | return None | |||
|
388 | ||||
|
389 | def getOpObjfromParamValue(self,value=None): | |||
|
390 | ||||
|
391 | for opConfObj in self.opConfObjList: | |||
|
392 | if opConfObj.getParameterObjfromValue(parameterValue=value) != value: | |||
|
393 | continue | |||
|
394 | return opConfObj | |||
|
395 | return None | |||
|
396 | ||||
329 | def getProcUnitObj(self): |
|
397 | def getProcUnitObj(self): | |
330 |
|
398 | |||
331 | return self.procUnitObj |
|
399 | return self.procUnitObj | |
332 |
|
400 | |||
333 | def setup(self, id, name, datatype, inputId): |
|
401 | def setup(self, id, name, datatype, inputId, parentId=None): | |
334 |
|
402 | |||
335 | self.id = id |
|
403 | self.id = id | |
336 | self.name = name |
|
404 | self.name = name | |
337 | self.datatype = datatype |
|
405 | self.datatype = datatype | |
338 | self.inputId = inputId |
|
406 | self.inputId = inputId | |
|
407 | self.parentId = parentId | |||
339 |
|
408 | |||
340 | self.opConfObjList = [] |
|
409 | self.opConfObjList = [] | |
341 |
|
410 | |||
342 | self.addOperation(name='run', optype='self') |
|
411 | self.addOperation(name='run', optype='self') | |
343 |
|
412 | |||
|
413 | def removeOperations(self): | |||
|
414 | ||||
|
415 | for obj in self.opConfObjList: | |||
|
416 | del obj | |||
|
417 | ||||
|
418 | self.opConfObjList = [] | |||
|
419 | self.addOperation(name='run') | |||
|
420 | ||||
344 | def addParameter(self, **kwargs): |
|
421 | def addParameter(self, **kwargs): | |
345 |
|
422 | |||
346 | opObj = self.opConfObjList[0] |
|
423 | opObj = self.opConfObjList[0] | |
@@ -426,6 +503,9 class ProcUnitConf(): | |||||
426 |
|
503 | |||
427 | kwargs = {} |
|
504 | kwargs = {} | |
428 | for parmConfObj in opConfObj.getParameterObjList(): |
|
505 | for parmConfObj in opConfObj.getParameterObjList(): | |
|
506 | if opConfObj.name == 'run' and parmConfObj.name == 'datatype': | |||
|
507 | continue | |||
|
508 | ||||
429 | kwargs[parmConfObj.name] = parmConfObj.getValue() |
|
509 | kwargs[parmConfObj.name] = parmConfObj.getValue() | |
430 |
|
510 | |||
431 | #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id) |
|
511 | #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id) | |
@@ -439,8 +519,15 class ProcUnitConf(): | |||||
439 |
|
519 | |||
440 | def close(self): |
|
520 | def close(self): | |
441 |
|
521 | |||
442 | self.procUnitObj.close() |
|
522 | for opConfObj in self.opConfObjList: | |
|
523 | if opConfObj.type == 'self': | |||
|
524 | continue | |||
|
525 | ||||
|
526 | opObj = self.procUnitObj.getOperationObj(opConfObj.id) | |||
|
527 | opObj.close() | |||
443 |
|
528 | |||
|
529 | self.procUnitObj.close() | |||
|
530 | ||||
444 | return |
|
531 | return | |
445 |
|
532 | |||
446 | class ReadUnitConf(ProcUnitConf): |
|
533 | class ReadUnitConf(ProcUnitConf): | |
@@ -467,7 +554,7 class ReadUnitConf(ProcUnitConf): | |||||
467 |
|
554 | |||
468 | return self.ELEMENTNAME |
|
555 | return self.ELEMENTNAME | |
469 |
|
556 | |||
470 |
def setup(self, id, name, datatype, path |
|
557 | def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs): | |
471 |
|
558 | |||
472 | self.id = id |
|
559 | self.id = id | |
473 | self.name = name |
|
560 | self.name = name | |
@@ -480,11 +567,23 class ReadUnitConf(ProcUnitConf): | |||||
480 | self.endTime = endTime |
|
567 | self.endTime = endTime | |
481 |
|
568 | |||
482 | self.addRunOperation(**kwargs) |
|
569 | self.addRunOperation(**kwargs) | |
483 |
|
570 | |||
|
571 | def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, **kwargs): | |||
|
572 | ||||
|
573 | self.datatype = datatype | |||
|
574 | self.path = path | |||
|
575 | self.startDate = startDate | |||
|
576 | self.endDate = endDate | |||
|
577 | self.startTime = startTime | |||
|
578 | self.endTime = endTime | |||
|
579 | ||||
|
580 | self.updateRunOperation(**kwargs) | |||
|
581 | ||||
484 | def addRunOperation(self, **kwargs): |
|
582 | def addRunOperation(self, **kwargs): | |
485 |
|
583 | |||
486 | opObj = self.addOperation(name = 'run', optype = 'self') |
|
584 | opObj = self.addOperation(name = 'run', optype = 'self') | |
487 |
|
585 | |||
|
586 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') | |||
488 | opObj.addParameter(name='path' , value=self.path, format='str') |
|
587 | opObj.addParameter(name='path' , value=self.path, format='str') | |
489 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') |
|
588 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') | |
490 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') |
|
589 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') | |
@@ -496,6 +595,22 class ReadUnitConf(ProcUnitConf): | |||||
496 |
|
595 | |||
497 | return opObj |
|
596 | return opObj | |
498 |
|
597 | |||
|
598 | def updateRunOperation(self, **kwargs): | |||
|
599 | ||||
|
600 | opObj = self.getOperationObj(name = 'run') | |||
|
601 | opObj.removeParameters() | |||
|
602 | ||||
|
603 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') | |||
|
604 | opObj.addParameter(name='path' , value=self.path, format='str') | |||
|
605 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') | |||
|
606 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') | |||
|
607 | opObj.addParameter(name='startTime' , value=self.startTime, format='time') | |||
|
608 | opObj.addParameter(name='endTime' , value=self.endTime, format='time') | |||
|
609 | ||||
|
610 | for key, value in kwargs.items(): | |||
|
611 | opObj.addParameter(name=key, value=value, format=type(value).__name__) | |||
|
612 | ||||
|
613 | return opObj | |||
499 |
|
614 | |||
500 | class Project(): |
|
615 | class Project(): | |
501 |
|
616 | |||
@@ -507,15 +622,24 class Project(): | |||||
507 |
|
622 | |||
508 | ELEMENTNAME = 'Project' |
|
623 | ELEMENTNAME = 'Project' | |
509 |
|
624 | |||
510 | def __init__(self): |
|
625 | def __init__(self, control=None, dataq=None): | |
511 |
|
626 | |||
512 | self.id = None |
|
627 | self.id = None | |
513 | self.name = None |
|
628 | self.name = None | |
514 | self.description = None |
|
629 | self.description = None | |
515 |
|
630 | |||
516 | # self.readUnitConfObjList = [] |
|
|||
517 | self.procUnitConfObjDict = {} |
|
631 | self.procUnitConfObjDict = {} | |
518 |
|
632 | |||
|
633 | #global data_q | |||
|
634 | #data_q = dataq | |||
|
635 | ||||
|
636 | if control==None: | |||
|
637 | control = {} | |||
|
638 | control['stop'] = False | |||
|
639 | control['pause'] = False | |||
|
640 | ||||
|
641 | self.control = control | |||
|
642 | ||||
519 | def __getNewId(self): |
|
643 | def __getNewId(self): | |
520 |
|
644 | |||
521 | id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1 |
|
645 | id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1 | |
@@ -525,13 +649,22 class Project(): | |||||
525 | def getElementName(self): |
|
649 | def getElementName(self): | |
526 |
|
650 | |||
527 | return self.ELEMENTNAME |
|
651 | return self.ELEMENTNAME | |
|
652 | ||||
|
653 | def getId(self): | |||
|
654 | ||||
|
655 | return self.id | |||
528 |
|
656 | |||
529 | def setup(self, id, name, description): |
|
657 | def setup(self, id, name, description): | |
530 |
|
658 | |||
531 | self.id = id |
|
659 | self.id = id | |
532 | self.name = name |
|
660 | self.name = name | |
533 | self.description = description |
|
661 | self.description = description | |
534 |
|
662 | |||
|
663 | def update(self, name, description): | |||
|
664 | ||||
|
665 | self.name = name | |||
|
666 | self.description = description | |||
|
667 | ||||
535 | def addReadUnit(self, datatype=None, name=None, **kwargs): |
|
668 | def addReadUnit(self, datatype=None, name=None, **kwargs): | |
536 |
|
669 | |||
537 | #Compatible with old signal chain version |
|
670 | #Compatible with old signal chain version | |
@@ -550,7 +683,7 class Project(): | |||||
550 | id = self.__getNewId() |
|
683 | id = self.__getNewId() | |
551 |
|
684 | |||
552 | readUnitConfObj = ReadUnitConf() |
|
685 | readUnitConfObj = ReadUnitConf() | |
553 | readUnitConfObj.setup(id, name, datatype, **kwargs) |
|
686 | readUnitConfObj.setup(id, name, datatype, parentId=self.id, **kwargs) | |
554 |
|
687 | |||
555 | self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj |
|
688 | self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj | |
556 |
|
689 | |||
@@ -574,12 +707,30 class Project(): | |||||
574 | id = self.__getNewId() |
|
707 | id = self.__getNewId() | |
575 |
|
708 | |||
576 | procUnitConfObj = ProcUnitConf() |
|
709 | procUnitConfObj = ProcUnitConf() | |
577 | procUnitConfObj.setup(id, name, datatype, inputId) |
|
710 | procUnitConfObj.setup(id, name, datatype, inputId, parentId=self.id) | |
578 |
|
711 | |||
579 | self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj |
|
712 | self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj | |
580 |
|
713 | |||
581 | return procUnitConfObj |
|
714 | return procUnitConfObj | |
582 |
|
715 | |||
|
716 | def getReadUnitId(self): | |||
|
717 | ||||
|
718 | readUnitConfObj = self.getReadUnitObj() | |||
|
719 | ||||
|
720 | return readUnitConfObj.id | |||
|
721 | ||||
|
722 | def getReadUnitObj(self): | |||
|
723 | ||||
|
724 | for obj in self.procUnitConfObjDict.values(): | |||
|
725 | if obj.getElementName() == "ReadUnit": | |||
|
726 | return obj | |||
|
727 | ||||
|
728 | return None | |||
|
729 | ||||
|
730 | def getProcUnitObj(self, id): | |||
|
731 | ||||
|
732 | return self.procUnitConfObjDict[id] | |||
|
733 | ||||
583 | def makeXml(self): |
|
734 | def makeXml(self): | |
584 |
|
735 | |||
585 | projectElement = Element('Project') |
|
736 | projectElement = Element('Project') | |
@@ -705,10 +856,28 class Project(): | |||||
705 | print "Every process unit have finished" |
|
856 | print "Every process unit have finished" | |
706 | break |
|
857 | break | |
707 |
|
858 | |||
|
859 | if self.control['pause']: | |||
|
860 | print "Pause..." | |||
|
861 | ||||
|
862 | while True: | |||
|
863 | time.sleep(0.1) | |||
|
864 | ||||
|
865 | if not self.control['pause']: | |||
|
866 | break | |||
|
867 | ||||
|
868 | if self.control['stop']: | |||
|
869 | break | |||
|
870 | ||||
|
871 | if self.control['stop']: | |||
|
872 | print "Stopping process" | |||
|
873 | break | |||
|
874 | ||||
708 | #Closing every process |
|
875 | #Closing every process | |
709 | for procKey in keyList: |
|
876 | for procKey in keyList: | |
710 | procUnitConfObj = self.procUnitConfObjDict[procKey] |
|
877 | procUnitConfObj = self.procUnitConfObjDict[procKey] | |
711 | procUnitConfObj.close() |
|
878 | procUnitConfObj.close() | |
|
879 | ||||
|
880 | print "Process stopped" | |||
712 |
|
881 | |||
713 | def start(self, filename): |
|
882 | def start(self, filename): | |
714 |
|
883 |
@@ -1,1 +0,0 | |||||
1 | from figure import * No newline at end of file |
|
@@ -1,5 +1,4 | |||||
1 | #!/usr/bin/python |
|
1 | ||
2 | # -*- coding: utf-8 -*-' |
|
|||
3 | import sys |
|
2 | import sys | |
4 | from PyQt4 import QtCore, QtGui |
|
3 | from PyQt4 import QtCore, QtGui | |
5 | from PyQt4.QtGui import QApplication |
|
4 | from PyQt4.QtGui import QApplication |
@@ -1,1 +0,0 | |||||
1 | from viewcontroller import * No newline at end of file |
|
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
@@ -9,7 +9,7 from PyQt4.QtCore import pyqtSignature | |||||
9 | from PyQt4 import QtCore |
|
9 | from PyQt4 import QtCore | |
10 | from PyQt4 import QtGui |
|
10 | from PyQt4 import QtGui | |
11 |
|
11 | |||
12 | from viewer.ui_initwindow import Ui_InitWindow |
|
12 | from schainpy.gui.viewer.ui_initwindow import Ui_InitWindow | |
13 |
|
13 | |||
14 | class InitWindow(QDialog, Ui_InitWindow): |
|
14 | class InitWindow(QDialog, Ui_InitWindow): | |
15 | """ |
|
15 | """ | |
@@ -22,7 +22,7 class InitWindow(QDialog, Ui_InitWindow): | |||||
22 | QDialog.__init__(self, parent) |
|
22 | QDialog.__init__(self, parent) | |
23 | self.setupUi(self) |
|
23 | self.setupUi(self) | |
24 | self.setWindowTitle("ROJ-Signal Chain") |
|
24 | self.setWindowTitle("ROJ-Signal Chain") | |
25 | self.setWindowIcon(QtGui.QIcon("figure/adn.jpg")) |
|
25 | self.setWindowIcon(QtGui.QIcon("schainpy/gui/figure/adn.jpg")) | |
26 |
|
26 | |||
27 | @pyqtSignature("") |
|
27 | @pyqtSignature("") | |
28 | def on_ExitBtn_clicked(self): |
|
28 | def on_ExitBtn_clicked(self): |
@@ -11,12 +11,11 from PyQt4 import QtGui | |||||
11 | from timeconversions import Doy2Date |
|
11 | from timeconversions import Doy2Date | |
12 | from modelProperties import treeModel |
|
12 | from modelProperties import treeModel | |
13 |
|
13 | |||
14 | from viewer.ui_unitprocess import Ui_UnitProcess |
|
14 | from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess | |
15 | from viewer.ui_window import Ui_window |
|
15 | from schainpy.gui.viewer.ui_window import Ui_window | |
16 | from viewer.ui_mainwindow import Ui_MainWindow |
|
16 | from schainpy.gui.viewer.ui_mainwindow import Ui_MainWindow | |
17 |
|
17 | |||
18 |
|
18 | from schainpy.controller import Project,ReadUnitConf,ProcUnitConf,OperationConf,ParameterConf | ||
19 | from controller import Project,ReadUnitConf,ProcUnitConf,OperationConf,ParameterConf |
|
|||
20 | import os |
|
19 | import os | |
21 |
|
20 | |||
22 |
|
21 |
This diff has been collapsed as it changes many lines, (578 lines changed) Show them Hide them | |||||
@@ -1,277 +1,303 | |||||
1 | from PyQt4 import QtCore |
|
1 | # -*- coding: utf-8 -*- | |
2 |
|
2 | from PyQt4 import QtCore | ||
3 | HORIZONTAL_HEADERS = ("Property","Value " ) |
|
3 | import itertools | |
4 |
|
4 | |||
5 | HORIZONTAL = ("RAMA :",) |
|
5 | HORIZONTAL_HEADERS = ("Property","Value " ) | |
6 |
|
6 | |||
7 | class treeModel(QtCore.QAbstractItemModel): |
|
7 | HORIZONTAL = ("RAMA :",) | |
8 |
|
|
8 | ||
9 | a model to display a few names, ordered by encabezado |
|
9 | class treeModel(QtCore.QAbstractItemModel): | |
10 |
|
|
10 | ''' | |
11 | name=None |
|
11 | a model to display a few names, ordered by encabezado | |
12 | directorio=None |
|
12 | ||
13 | workspace=None |
|
13 | ''' | |
14 | remode=None |
|
14 | def __init__(self ,parent=None): | |
15 | dataformat=None |
|
15 | super(treeModel, self).__init__(parent) | |
16 | date=None |
|
16 | self.people = [] | |
17 | initTime=None |
|
17 | self.initProjectProperties() | |
18 | endTime=None |
|
18 | self.initPUVoltageProperties() | |
19 | timezone=None |
|
19 | self.initPUSpectraProperties() | |
20 | Summary=None |
|
20 | self.initPUSpectraHeisProperties() | |
21 |
|
21 | |||
22 | description=None |
|
22 | def initProjectProperties(self): | |
23 |
|
23 | |||
24 | def __init__(self ,parent=None): |
|
24 | name=None | |
25 | super(treeModel, self).__init__(parent) |
|
25 | directorio=None | |
26 | self.people = [] |
|
26 | workspace=None | |
27 |
|
27 | remode=None | ||
28 |
|
28 | dataformat=None | ||
29 | def properties_projecto(self,description): |
|
29 | startDate=None | |
30 | self.caracteristica="Project_Properties" |
|
30 | endDate=None | |
31 | self.principal ="Name" |
|
31 | startTime=None | |
32 | self.description =description |
|
32 | endTime=None | |
33 | exam_project=person_class(self.caracteristica,self.principal,self.description) |
|
33 | delay=None | |
34 | return exam_project |
|
34 | set= None | |
35 |
|
35 | walk=None | ||
36 |
|
36 | timezone=None | ||
37 |
|
37 | Summary=None | ||
38 | def arbol(self): |
|
38 | description=None | |
39 | for caracteristica,principal, descripcion in (("Properties","Name",self.name), |
|
39 | ||
40 | ("Properties","Data Path",self.directorio), |
|
40 | def initPUVoltageProperties(self): | |
41 | ("Properties","Workspace",self.workspace), |
|
41 | type=None | |
42 | ("Parameters", "Read Mode ",self.remode), |
|
42 | channel=None | |
43 | ("Parameters", "DataType ",self.dataformat), |
|
43 | heights=None | |
44 | ("Parameters", "Date ",self.date), |
|
44 | filter=None | |
45 | ("Parameters", "Init Time ",self.initTime), |
|
45 | profile=None | |
46 | ("Parameters", "Final Time ",self.endTime), |
|
46 | code=None | |
47 | ("Parameters", " Time zone ",self.timezone), |
|
47 | mode=None | |
48 | ("Parameters", "Profiles ","1"), |
|
48 | coherentintegration=None | |
49 | ("Description", "Summary ", self.Summary), |
|
49 | ||
50 | ): |
|
50 | def initPUSpectraProperties(self): | |
51 | person = person_class(caracteristica, principal, descripcion) |
|
51 | type =None | |
52 | self.people.append(person) |
|
52 | nFFTpoints =None | |
53 | def addProjectproperties(self,person): |
|
53 | ippFactor = None | |
54 | self.people.append(person) |
|
54 | pairsList =None | |
55 |
|
55 | channel =None | ||
56 |
|
56 | heights =None | ||
57 | #def veamos(self): |
|
57 | incoherentintegration =None | |
58 | # self.update= MainWindow(self) |
|
58 | removeDC = None | |
59 | # self.update.dataProyectTxt.text() |
|
59 | removeInterference =None | |
60 | # return self.update.dataProyectTxt.text() |
|
60 | getNoise = None | |
61 |
|
61 | operationSpecPlot=None | ||
62 | def showtree(self): |
|
62 | operationCrossSpecPlot = None | |
63 | self.rootItem = TreeItem(None, "ALL", None) |
|
63 | operationRTIPlot = None | |
64 | self.parents = {0 : self.rootItem} |
|
64 | operationCohermap = None | |
65 | self.setupModelData() |
|
65 | operationPowProfilePlot = None | |
66 |
|
66 | |||
67 | def setParams(self,name,directorio,workspace,remode,dataformat,date,initTime,endTime,timezone,Summary): |
|
67 | def initPUSpectraHeisProperties(self): | |
68 | self.name=name |
|
68 | type =None | |
69 | self.workspace=workspace |
|
69 | incoherentintegration =None | |
70 | self.directorio= directorio |
|
70 | operationSpecHeisPlot=None | |
71 | self.remode=remode |
|
71 | operationRTIHeisPlot = None | |
72 | self.dataformat=dataformat |
|
72 | ||
73 | self.date=date |
|
73 | def initProjectView(self): | |
74 | self.initTime=initTime |
|
74 | """ | |
75 | self.endTime=endTime |
|
75 | Reemplazo del método showtree | |
76 | self.timezone=timezone |
|
76 | """ | |
77 | self.Summary=Summary |
|
77 | HORIZONTAL_HEADERS = ("Property","Value " ) | |
78 |
|
78 | HORIZONTAL = ("RAMA :",) | ||
79 |
|
79 | self.rootItem = TreeItem(None, "ALL", None) | ||
80 | for caracteristica,principal, descripcion in (("Properties","Name",self.name), |
|
80 | self.parents = {0 : self.rootItem} | |
81 | ("Properties","Data Path",self.directorio), |
|
81 | self.setupModelData() | |
82 | ("Properties","Workspace",self.workspace), |
|
82 | ||
83 | ("Parameters", "Read Mode ",self.remode), |
|
83 | def initPUVoltageView(self): | |
84 | ("Parameters", "DataType ",self.dataformat), |
|
84 | HORIZONTAL_HEADERS = ("Operation"," Parameter Value " ) | |
85 | ("Parameters", "Date ",self.date), |
|
85 | HORIZONTAL = ("RAMA :",) | |
86 | ("Parameters", "Init Time ",self.initTime), |
|
86 | self.rootItem = TreeItem(None, "ALL", None) | |
87 | ("Parameters", "Final Time ",self.endTime), |
|
87 | self.parents = {0 : self.rootItem} | |
88 | ("Parameters", " Time zone ",self.timezone), |
|
88 | self.setupModelData() | |
89 | ("Parameters", "Profiles ","1"), |
|
89 | ||
90 | ("Description", "Summary ", self.Summary), |
|
90 | def showProjectParms(self,caracteristicaList,principalList,descripcionList): | |
91 | ): |
|
91 | """ | |
92 | person = person_class(caracteristica, principal, descripcion) |
|
92 | set2Obje | |
93 | self.people.append(person) |
|
93 | """ | |
94 | self.rootItem = TreeItem(None, "ALL", None) |
|
94 | for caracteristica,principal, descripcion in itertools.izip(caracteristicaList,principalList,descripcionList): | |
95 | self.parents = {0 : self.rootItem} |
|
95 | person = person_class(caracteristica, principal, descripcion) | |
96 | self.setupModelData() |
|
96 | self.people.append(person) | |
97 |
|
97 | self.rootItem = TreeItem(None, "ALL", None) | ||
98 |
|
98 | self.parents = {0 : self.rootItem} | ||
99 | def columnCount(self, parent=None): |
|
99 | self.setupModelData() | |
100 | if parent and parent.isValid(): |
|
100 | ||
101 | return parent.internalPointer().columnCount() |
|
101 | def showPUVoltageParms(self,caracteristicaList,principalList,descripcionList): | |
102 | else: |
|
102 | ||
103 | return len(HORIZONTAL_HEADERS) |
|
103 | for caracteristica,principal, descripcion in itertools.izip(caracteristicaList,principalList,descripcionList): | |
104 |
|
104 | person = person_class(caracteristica, principal, descripcion) | ||
105 | def data(self, index, role): |
|
105 | self.people.append(person) | |
106 | if not index.isValid(): |
|
106 | self.rootItem = TreeItem(None, "ALL", None) | |
107 | return QtCore.QVariant() |
|
107 | self.parents = {0 : self.rootItem} | |
108 |
|
108 | self.setupModelData() | ||
109 | item = index.internalPointer() |
|
109 | ||
110 | if role == QtCore.Qt.DisplayRole: |
|
110 | ||
111 | return item.data(index.column()) |
|
111 | def showPUSpectraParms(self,caracteristicaList,principalList,descripcionList): | |
112 | if role == QtCore.Qt.UserRole: |
|
112 | ||
113 | if item: |
|
113 | for caracteristica,principal, descripcion in itertools.izip(caracteristicaList,principalList,descripcionList): | |
114 | return item.person |
|
114 | person = person_class(caracteristica, principal, descripcion) | |
115 |
|
115 | self.people.append(person) | ||
116 | return QtCore.QVariant() |
|
116 | self.rootItem = TreeItem(None, "ALL", None) | |
117 |
|
117 | self.parents = {0 : self.rootItem} | ||
118 | def headerData(self, column, orientation, role): |
|
118 | self.setupModelData() | |
119 | if (orientation == QtCore.Qt.Horizontal and |
|
119 | ||
120 | role == QtCore.Qt.DisplayRole): |
|
120 | def showPUSpectraHeisParms(self,caracteristicaList,principalList,descripcionList): | |
121 | try: |
|
121 | ||
122 | return QtCore.QVariant(HORIZONTAL_HEADERS[column]) |
|
122 | for caracteristica,principal, descripcion in itertools.izip(caracteristicaList,principalList,descripcionList): | |
123 | except IndexError: |
|
123 | person = person_class(caracteristica, principal, descripcion) | |
124 | pass |
|
124 | self.people.append(person) | |
125 |
|
125 | self.rootItem = TreeItem(None, "ALL", None) | ||
126 | return QtCore.QVariant() |
|
126 | self.parents = {0 : self.rootItem} | |
127 |
|
127 | self.setupModelData() | ||
128 | def index(self, row, column, parent): |
|
128 | ||
129 | if not self.hasIndex(row, column, parent): |
|
129 | ||
130 | return QtCore.QModelIndex() |
|
130 | def columnCount(self, parent=None): | |
131 |
|
131 | if parent and parent.isValid(): | ||
132 | if not parent.isValid(): |
|
132 | return parent.internalPointer().columnCount() | |
133 | parentItem = self.rootItem |
|
133 | else: | |
134 | else: |
|
134 | return len(HORIZONTAL_HEADERS) | |
135 | parentItem = parent.internalPointer() |
|
135 | ||
136 |
|
136 | def data(self, index, role): | ||
137 | childItem = parentItem.child(row) |
|
137 | if not index.isValid(): | |
138 | if childItem: |
|
138 | return QtCore.QVariant() | |
139 | return self.createIndex(row, column, childItem) |
|
139 | ||
140 | else: |
|
140 | item = index.internalPointer() | |
141 | return QtCore.QModelIndex() |
|
141 | if role == QtCore.Qt.DisplayRole: | |
142 |
|
142 | return item.data(index.column()) | ||
143 | def parent(self, index): |
|
143 | if role == QtCore.Qt.UserRole: | |
144 | if not index.isValid(): |
|
144 | if item: | |
145 |
return |
|
145 | return item.person | |
146 |
|
146 | |||
147 | childItem = index.internalPointer() |
|
147 | return QtCore.QVariant() | |
148 | if not childItem: |
|
148 | ||
149 | return QtCore.QModelIndex() |
|
149 | def headerData(self, column, orientation, role): | |
150 |
|
150 | if (orientation == QtCore.Qt.Horizontal and | ||
151 | parentItem = childItem.parent() |
|
151 | role == QtCore.Qt.DisplayRole): | |
152 |
|
152 | try: | ||
153 | if parentItem == self.rootItem: |
|
153 | return QtCore.QVariant(HORIZONTAL_HEADERS[column]) | |
154 | return QtCore.QModelIndex() |
|
154 | except IndexError: | |
155 |
|
155 | pass | ||
156 | return self.createIndex(parentItem.row(), 0, parentItem) |
|
156 | ||
157 |
|
157 | return QtCore.QVariant() | ||
158 | def rowCount(self, parent=QtCore.QModelIndex()): |
|
158 | ||
159 | if parent.column() > 0: |
|
159 | def index(self, row, column, parent): | |
160 | return 0 |
|
160 | if not self.hasIndex(row, column, parent): | |
161 | if not parent.isValid(): |
|
161 | return QtCore.QModelIndex() | |
162 | p_Item = self.rootItem |
|
162 | ||
163 | else: |
|
163 | if not parent.isValid(): | |
164 | p_Item = parent.internalPointer() |
|
164 | parentItem = self.rootItem | |
165 | return p_Item.childCount() |
|
165 | else: | |
166 |
|
166 | parentItem = parent.internalPointer() | ||
167 | def setupModelData(self): |
|
167 | ||
168 | for person in self.people: |
|
168 | childItem = parentItem.child(row) | |
169 | if person.descripcion: |
|
169 | if childItem: | |
170 | encabezado = person.caracteristica |
|
170 | return self.createIndex(row, column, childItem) | |
171 |
|
171 | else: | ||
172 |
|
172 | return QtCore.QModelIndex() | ||
173 | if not self.parents.has_key(encabezado): |
|
173 | ||
174 | newparent = TreeItem(None, encabezado, self.rootItem) |
|
174 | def parent(self, index): | |
175 | self.rootItem.appendChild(newparent) |
|
175 | if not index.isValid(): | |
176 |
|
176 | return QtCore.QModelIndex() | ||
177 | self.parents[encabezado] = newparent |
|
177 | ||
178 |
|
178 | childItem = index.internalPointer() | ||
179 | parentItem = self.parents[encabezado] |
|
179 | if not childItem: | |
180 | newItem = TreeItem(person, "", parentItem) |
|
180 | return QtCore.QModelIndex() | |
181 | parentItem.appendChild(newItem) |
|
181 | ||
182 |
|
182 | parentItem = childItem.parent() | ||
183 | def searchModel(self, person): |
|
183 | ||
184 | ''' |
|
184 | if parentItem == self.rootItem: | |
185 | get the modelIndex for a given appointment |
|
185 | return QtCore.QModelIndex() | |
186 | ''' |
|
186 | ||
187 | def searchNode(node): |
|
187 | return self.createIndex(parentItem.row(), 0, parentItem) | |
188 | ''' |
|
188 | ||
189 | a function called recursively, looking at all nodes beneath node |
|
189 | def rowCount(self, parent=QtCore.QModelIndex()): | |
190 | ''' |
|
190 | if parent.column() > 0: | |
191 | for child in node.childItems: |
|
191 | return 0 | |
192 | if person == child.person: |
|
192 | if not parent.isValid(): | |
193 | index = self.createIndex(child.row(), 0, child) |
|
193 | p_Item = self.rootItem | |
194 | return index |
|
194 | else: | |
195 |
|
195 | p_Item = parent.internalPointer() | ||
196 | if child.childCount() > 0: |
|
196 | return p_Item.childCount() | |
197 | result = searchNode(child) |
|
197 | ||
198 | if result: |
|
198 | def setupModelData(self): | |
199 | return result |
|
199 | for person in self.people: | |
200 |
|
200 | if person.descripcion: | ||
201 | retarg = searchNode(self.parents[0]) |
|
201 | encabezado = person.caracteristica | |
202 | #print retarg |
|
202 | ||
203 | return retarg |
|
203 | ||
204 |
|
204 | if not self.parents.has_key(encabezado): | ||
205 | def find_GivenName(self, principal): |
|
205 | newparent = TreeItem(None, encabezado, self.rootItem) | |
206 | app = None |
|
206 | self.rootItem.appendChild(newparent) | |
207 | for person in self.people: |
|
207 | ||
208 | if person.principal == principal: |
|
208 | self.parents[encabezado] = newparent | |
209 | app = person |
|
209 | ||
210 | break |
|
210 | parentItem = self.parents[encabezado] | |
211 | if app != None: |
|
211 | newItem = TreeItem(person, "", parentItem) | |
212 | index = self.searchModel(app) |
|
212 | parentItem.appendChild(newItem) | |
213 | return (True, index) |
|
213 | ||
214 | return (False, None) |
|
214 | def searchModel(self, person): | |
215 |
|
215 | ''' | ||
216 |
|
216 | get the modelIndex for a given appointment | ||
217 |
|
217 | ''' | ||
218 |
|
218 | def searchNode(node): | ||
219 |
|
219 | ''' | ||
220 |
|
220 | a function called recursively, looking at all nodes beneath node | ||
221 |
|
221 | ''' | ||
222 | class person_class(object): |
|
222 | for child in node.childItems: | |
223 | ''' |
|
223 | if person == child.person: | |
224 | a trivial custom data object |
|
224 | index = self.createIndex(child.row(), 0, child) | |
225 | ''' |
|
225 | return index | |
226 | def __init__(self, caracteristica, principal, descripcion): |
|
226 | ||
227 | self.caracteristica = caracteristica |
|
227 | if child.childCount() > 0: | |
228 | self.principal = principal |
|
228 | result = searchNode(child) | |
229 | self.descripcion = descripcion |
|
229 | if result: | |
230 |
|
230 | return result | ||
231 | def __repr__(self): |
|
231 | ||
232 | return "PERSON - %s %s"% (self.principal, self.caracteristica) |
|
232 | retarg = searchNode(self.parents[0]) | |
233 |
|
233 | #print retarg | ||
234 | class TreeItem(object): |
|
234 | return retarg | |
235 | ''' |
|
235 | ||
236 | a python object used to return row/column data, and keep note of |
|
236 | def find_GivenName(self, principal): | |
237 | it's parents and/or children |
|
237 | app = None | |
238 | ''' |
|
238 | for person in self.people: | |
239 | def __init__(self, person, header, parentItem): |
|
239 | if person.principal == principal: | |
240 |
|
|
240 | app = person | |
241 | self.parentItem = parentItem |
|
241 | break | |
242 | self.header = header |
|
242 | if app != None: | |
243 | self.childItems = [] |
|
243 | index = self.searchModel(app) | |
244 |
|
244 | return (True, index) | ||
245 | def appendChild(self, item): |
|
245 | return (False, None) | |
246 | self.childItems.append(item) |
|
246 | ||
247 |
|
247 | |||
248 | def child(self, row): |
|
248 | class person_class(object): | |
249 | return self.childItems[row] |
|
249 | ''' | |
250 |
|
250 | a trivial custom data object | ||
251 | def childCount(self): |
|
251 | ''' | |
252 | return len(self.childItems) |
|
252 | def __init__(self, caracteristica, principal, descripcion): | |
253 |
|
253 | self.caracteristica = caracteristica | ||
254 | def columnCount(self): |
|
254 | self.principal = principal | |
255 | return 2 |
|
255 | self.descripcion = descripcion | |
256 |
|
256 | |||
257 |
def |
|
257 | def __repr__(self): | |
258 | if self.person == None: |
|
258 | return "PERSON - %s %s"% (self.principal, self.caracteristica) | |
259 | if column == 0: |
|
259 | ||
260 | return QtCore.QVariant(self.header) |
|
260 | class TreeItem(object): | |
261 | if column == 1: |
|
261 | ''' | |
262 | return QtCore.QVariant("") |
|
262 | a python object used to return row/column data, and keep note of | |
263 | else: |
|
263 | it's parents and/or children | |
264 | if column == 0: |
|
264 | ''' | |
265 | return QtCore.QVariant(self.person.principal) |
|
265 | def __init__(self, person, header, parentItem): | |
266 | if column == 1: |
|
266 | self.person = person | |
267 | return QtCore.QVariant(self.person.descripcion) |
|
267 | self.parentItem = parentItem | |
268 | return QtCore.QVariant() |
|
268 | self.header = header | |
269 |
|
269 | self.childItems = [] | ||
270 | def parent(self): |
|
270 | ||
271 | return self.parentItem |
|
271 | def appendChild(self, item): | |
272 |
|
272 | self.childItems.append(item) | ||
273 | def row(self): |
|
273 | ||
274 | if self.parentItem: |
|
274 | def child(self, row): | |
275 |
|
|
275 | return self.childItems[row] | |
276 | return 0 |
|
276 | ||
|
277 | def childCount(self): | |||
|
278 | return len(self.childItems) | |||
|
279 | ||||
|
280 | def columnCount(self): | |||
|
281 | return 2 | |||
|
282 | ||||
|
283 | def data(self, column): | |||
|
284 | if self.person == None: | |||
|
285 | if column == 0: | |||
|
286 | return QtCore.QVariant(self.header) | |||
|
287 | if column == 1: | |||
|
288 | return QtCore.QVariant("") | |||
|
289 | else: | |||
|
290 | if column == 0: | |||
|
291 | return QtCore.QVariant(self.person.principal) | |||
|
292 | if column == 1: | |||
|
293 | return QtCore.QVariant(self.person.descripcion) | |||
|
294 | return QtCore.QVariant() | |||
|
295 | ||||
|
296 | def parent(self): | |||
|
297 | return self.parentItem | |||
|
298 | ||||
|
299 | def row(self): | |||
|
300 | if self.parentItem: | |||
|
301 | return self.parentItem.childItems.index(self) | |||
|
302 | return 0 | |||
277 | No newline at end of file |
|
303 |
@@ -1,10 +1,7 | |||||
1 | import os, sys |
|
1 | import os, sys | |
2 | import getopt |
|
2 | import getopt | |
3 | path = os.path.split(os.getcwd())[0] |
|
|||
4 | #path="C://Users//alex//workspace//gui_14_03_13" |
|
|||
5 | sys.path.append(path) |
|
|||
6 |
|
3 | |||
7 |
from controller import |
|
4 | from schainpy.controller import Project | |
8 |
|
5 | |||
9 | class scProcessController(): |
|
6 | class scProcessController(): | |
10 | def __init__(self): |
|
7 | def __init__(self): |
@@ -7,7 +7,7 Module implementing MainWindow. | |||||
7 | from PyQt4.QtGui import QMainWindow |
|
7 | from PyQt4.QtGui import QMainWindow | |
8 | from PyQt4.QtCore import pyqtSignature |
|
8 | from PyQt4.QtCore import pyqtSignature | |
9 |
|
9 | |||
10 | from viewer.ui_unitprocess import Ui_UnitProcess |
|
10 | from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess | |
11 |
|
11 | |||
12 | class UnitProcess(QMainWindow, Ui_UnitProcess): |
|
12 | class UnitProcess(QMainWindow, Ui_UnitProcess): | |
13 | """ |
|
13 | """ |
@@ -10,13 +10,13 from PyQt4 import QtCore | |||||
10 | from PyQt4 import QtGui |
|
10 | from PyQt4 import QtGui | |
11 | from timeconversions import Doy2Date |
|
11 | from timeconversions import Doy2Date | |
12 | from modelProperties import treeModel |
|
12 | from modelProperties import treeModel | |
13 | from viewer.ui_unitprocess import Ui_UnitProcess |
|
13 | from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess | |
14 | from viewer.ui_window import Ui_window |
|
14 | from schainpy.gui.viewer.ui_window import Ui_window | |
15 | from viewer.ui_mainwindow import Ui_MainWindow |
|
15 | from schainpy.gui.viewer.ui_mainwindow import Ui_MainWindow | |
16 | from viewer.ui_workspace import Ui_Workspace |
|
16 | from schainpy.gui.viewer.ui_workspace import Ui_Workspace | |
17 | from viewer.ui_initwindow import Ui_InitWindow |
|
17 | from schainpy.gui.viewer.ui_initwindow import Ui_InitWindow | |
18 |
|
18 | |||
19 | from controller import Project,ReadUnitConf,ProcUnitConf,OperationConf,ParameterConf |
|
19 | from schainpy.controller import Project,ReadUnitConf,ProcUnitConf,OperationConf,ParameterConf | |
20 | import os |
|
20 | import os | |
21 |
|
21 | |||
22 | HORIZONTAL_HEADERS = ("ITEM :"," DATOS : " ) |
|
22 | HORIZONTAL_HEADERS = ("ITEM :"," DATOS : " ) |
@@ -1,11 +1,13 | |||||
1 | # -*- coding: utf-8 -*- |
|
1 | # -*- coding: utf-8 -*- | |
2 | import os |
|
2 | import os | |
|
3 | from os.path import expanduser | |||
|
4 | ||||
3 | from PyQt4.QtGui import QDialog |
|
5 | from PyQt4.QtGui import QDialog | |
4 | from PyQt4.QtCore import pyqtSignature |
|
6 | from PyQt4.QtCore import pyqtSignature | |
5 | from PyQt4.QtCore import pyqtSignal |
|
7 | from PyQt4.QtCore import pyqtSignal | |
6 | from PyQt4 import QtGui, QtCore |
|
8 | from PyQt4 import QtGui, QtCore | |
7 | from viewer.ui_workspace import Ui_Workspace |
|
9 | ||
8 | from os.path import expanduser |
|
10 | from schainpy.gui.viewer.ui_workspace import Ui_Workspace | |
9 |
|
11 | |||
10 | class Workspace(QDialog, Ui_Workspace): |
|
12 | class Workspace(QDialog, Ui_Workspace): | |
11 | """ |
|
13 | """ | |
@@ -20,7 +22,7 class Workspace(QDialog, Ui_Workspace): | |||||
20 | self.dirList=[] |
|
22 | self.dirList=[] | |
21 | self.setupUi(self) |
|
23 | self.setupUi(self) | |
22 | self.setWindowTitle("ROJ-Signal Chain") |
|
24 | self.setWindowTitle("ROJ-Signal Chain") | |
23 | self.setWindowIcon(QtGui.QIcon("figure/adn.jpg")) |
|
25 | self.setWindowIcon(QtGui.QIcon("schainpy/gui/figure/adn.jpg")) | |
24 | #*####### DIRECTORIO DE TRABAJO #########*# |
|
26 | #*####### DIRECTORIO DE TRABAJO #########*# | |
25 | #self.dirCmbBox.setItemText(0, QtGui.QApplication.translate("MainWindow", "C:\WorkSpaceGui", None, QtGui.QApplication.UnicodeUTF8)) |
|
27 | #self.dirCmbBox.setItemText(0, QtGui.QApplication.translate("MainWindow", "C:\WorkSpaceGui", None, QtGui.QApplication.UnicodeUTF8)) | |
26 | home=expanduser("~") |
|
28 | home=expanduser("~") |
@@ -1,4 +1,5 | |||||
1 | import ui_initwindow |
|
1 | import ui_initwindow | |
2 | import ui_workspace |
|
2 | import ui_workspace | |
3 | import ui_mainwindow |
|
3 | import ui_mainwindow | |
4 | import ui_window No newline at end of file |
|
4 | import ui_window | |
|
5 | import ui_ftp No newline at end of file |
@@ -42,7 +42,7 class Ui_InitWindow(object): | |||||
42 | self.verticalLayout_4.addWidget(self.line_2) |
|
42 | self.verticalLayout_4.addWidget(self.line_2) | |
43 | self.label_4 = QtGui.QLabel(Dialog) |
|
43 | self.label_4 = QtGui.QLabel(Dialog) | |
44 | self.label_4.setText(_fromUtf8("")) |
|
44 | self.label_4.setText(_fromUtf8("")) | |
45 | self.label_4.setPixmap(QtGui.QPixmap(_fromUtf8("figure/w.jpg"))) |
|
45 | self.label_4.setPixmap(QtGui.QPixmap(_fromUtf8("schainpy/gui/figure/w.jpg"))) | |
46 | self.label_4.setScaledContents(True) |
|
46 | self.label_4.setScaledContents(True) | |
47 | self.label_4.setObjectName(_fromUtf8("label_4")) |
|
47 | self.label_4.setObjectName(_fromUtf8("label_4")) | |
48 | self.verticalLayout_4.addWidget(self.label_4) |
|
48 | self.verticalLayout_4.addWidget(self.label_4) |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: file was removed, binary diff hidden |
|
NO CONTENT: file was removed, binary diff hidden |
1 | NO CONTENT: file was removed, binary diff hidden |
|
NO CONTENT: file was removed, binary diff hidden |
1 | NO CONTENT: file was removed, binary diff hidden |
|
NO CONTENT: file was removed, binary diff hidden |
General Comments 0
You need to be logged in to leave comments.
Login now