From 8eedfb38dc530919ad14e313105d9717c8e7d6a0 2020-05-25 03:23:32 From: Juan C. Espinoza Date: 2020-05-25 03:23:32 Subject: [PATCH] New GUI added (kivy framework), clean code, delete unused files --- diff --git a/schainpy/CHANGELOG.md b/CHANGELOG.md similarity index 96% rename from schainpy/CHANGELOG.md rename to CHANGELOG.md index c54d3f0..0a386d7 100644 --- a/schainpy/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ ## CHANGELOG: ### 3.0 -* Python 3.x compatible -* New architecture with multiprocessing and IPC communication -* Add @MPDecorator for multiprocessing Units and Operations +* Python 3.x & 2.X compatible +* New architecture with multiprocessing support +* Add @MPDecorator for multiprocessing Operations (Plots, Writers and Publishers) * Added new type of operation `external` for non-locking operations * New plotting architecture with buffering/throttle capabilities to speed up plots +* Clean controller to optimize scripts (format & optype are no longer required) +* New GUI with dinamic load of Units and operations (use Kivy framework) ### 2.3 * Added support for Madrigal formats (reading/writing). diff --git a/link_PyQt4.sh b/link_PyQt4.sh deleted file mode 100755 index bc9f852..0000000 --- a/link_PyQt4.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# This hook is run after a new virtualenv is activated. - -python_version=python$(python -c "import sys; print (str(sys.version_info[0])+'.'+str(sys.version_info[1]))") -var=( $(which -a $python_version) ) - -get_python_lib_cmd="from distutils.sysconfig import get_python_lib; print (get_python_lib())" -lib_virtualenv_path=$(python -c "$get_python_lib_cmd") -lib_system_path=$(${var[-1]} -c "$get_python_lib_cmd") -sip_path=$(ls $lib_system_path/sip*.so) - -echo "Linking Qt4..." -ln -s $lib_system_path/PyQt4 $lib_virtualenv_path/PyQt4 -echo "Linking SIP..." -ln -s $sip_path $lib_virtualenv_path/sip.so diff --git a/schainpy/ROADMAP.md b/schainpy/ROADMAP.md deleted file mode 100644 index 80b3de6..0000000 --- a/schainpy/ROADMAP.md +++ /dev/null @@ -1,10 +0,0 @@ -ROADMAP FOR SCHAIN BRANCHES -=============================== - -### BRANCH - SCHAIN_MP -* Revisar si funciona con varios publishers. -* Revisar xRange y reinicialización de gráfico. -* Grabar cada spectra independientemente. -* Agregar kwargs al init -* Agregar gráficos restantes -* Presentación diff --git a/schainpy/cli/README.md b/schainpy/cli/README.md deleted file mode 100644 index 1cc9847..0000000 --- a/schainpy/cli/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# schain - -Command Line Interface for SIGNAL CHAIN - jro - -# Usage - -To use it: - - $ schain-cli --help diff --git a/schainpy/controller_api.py b/schainpy/controller_api.py deleted file mode 100644 index 1d07f11..0000000 --- a/schainpy/controller_api.py +++ /dev/null @@ -1,179 +0,0 @@ -import threading -from queue import Queue - -from schainpy.controller import Project -from schainpy.model.graphics.jroplotter import PlotManager - -class ControllerThread(threading.Thread, Project): - - def __init__(self, plotter_queue=None): - - threading.Thread.__init__(self) - Project.__init__(self, plotter_queue) - - self.setDaemon(True) - - self.lock = threading.Lock() - self.control = { 'stop':False, 'pause':False } - - def __del__(self): - - self.control['stop'] = True - - def stop(self): - - self.lock.acquire() - - self.control['stop'] = True - - self.lock.release() - - def pause(self): - - self.lock.acquire() - - self.control['pause'] = not(self.control['pause']) - paused = self.control['pause'] - - self.lock.release() - - return paused - - def isPaused(self): - - self.lock.acquire() - paused = self.control['pause'] - self.lock.release() - - return paused - - def isStopped(self): - - self.lock.acquire() - stopped = self.control['stop'] - self.lock.release() - - return stopped - - def run(self): - self.control['stop'] = False - self.control['pause'] = False - - self.writeXml() - - self.createObjects() - self.connectObjects() - Project.run(self) - - def isRunning(self): - - return self.is_alive() - - def isFinished(self): - - return not self.is_alive() - - def setPlotters(self): - - plotterList = PlotManager.plotterList - - for thisPUConfObj in list(self.procUnitConfObjDict.values()): - - inputId = thisPUConfObj.getInputId() - - if int(inputId) == 0: - continue - - for thisOpObj in thisPUConfObj.getOperationObjList(): - - if thisOpObj.type == "self": - continue - - if thisOpObj.name in plotterList: - thisOpObj.type = "other" - - def setPlotterQueue(self, plotter_queue): - - self.plotterQueue = plotter_queue - - def getPlotterQueue(self): - - return self.plotterQueue - - def useExternalPlotter(self): - - self.plotterQueue = Queue(10) - self.setPlotters() - - plotManagerObj = PlotManager(self.plotterQueue) - plotManagerObj.setController(self) - - return plotManagerObj - -# from PyQt4 import QtCore -# from PyQt4.QtCore import SIGNAL -# -# class ControllerQThread(QtCore.QThread, Project): -# -# def __init__(self, filename): -# -# QtCore.QThread.__init__(self) -# Project.__init__(self) -# -# self.filename = filename -# -# self.lock = threading.Lock() -# self.control = {'stop':False, 'pause':False} -# -# def __del__(self): -# -# self.control['stop'] = True -# self.wait() -# -# def stop(self): -# -# self.lock.acquire() -# -# self.control['stop'] = True -# -# self.lock.release() -# -# def pause(self): -# -# self.lock.acquire() -# -# self.control['pause'] = not(self.control['pause']) -# paused = self.control['pause'] -# -# self.lock.release() -# -# return paused -# -# def isPaused(self): -# -# self.lock.acquire() -# paused = self.control['pause'] -# self.lock.release() -# -# return paused -# -# def isStopped(self): -# -# self.lock.acquire() -# stopped = self.control['stop'] -# self.lock.release() -# -# return stopped -# -# def run(self): -# -# self.control['stop'] = False -# self.control['pause'] = False -# -# self.readXml(self.filename) -# self.createObjects() -# self.connectObjects() -# self.emit( SIGNAL( "jobStarted( PyQt_PyObject )" ), 1) -# Project.run(self) -# self.emit( SIGNAL( "jobFinished( PyQt_PyObject )" ), 1) -# \ No newline at end of file diff --git a/schainpy/gui/__init__.py b/schainpy/gui/__init__.py index 6eac6ef..e69de29 100644 --- a/schainpy/gui/__init__.py +++ b/schainpy/gui/__init__.py @@ -1 +0,0 @@ -from viewcontroller import * \ No newline at end of file diff --git a/schainpy/gui/figures/.bash_logout b/schainpy/gui/figures/.bash_logout deleted file mode 100644 index de4f5f7..0000000 --- a/schainpy/gui/figures/.bash_logout +++ /dev/null @@ -1,7 +0,0 @@ -# ~/.bash_logout: executed by bash(1) when login shell exits. - -# when leaving the console clear the screen to increase privacy - -if [ "$SHLVL" = 1 ]; then - [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q -fi diff --git a/schainpy/gui/figures/__init__.py b/schainpy/gui/figures/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/schainpy/gui/figures/__init__.py +++ /dev/null diff --git a/schainpy/gui/figures/branch.png b/schainpy/gui/figures/branch.png deleted file mode 100644 index f7a68f1ef9a7616c9068b0611842780e91f01c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@8?tx|+>e7D!cXTANSS^LR>~GoGN9-mSG3ymbG_RZ&VGOR>NNhS`_5Gh13s;|ab`|@+ClXdFY3H= zYtMCBrMo?@DayMyxwu(-hhMf{tj5-_oQu8xow;fK;_`xk2WQtDc3k(dsqs3;mam=m zzU52KD$ecXn0F{T+&?-#;mR+YjOAO+Ura83EBrxI$HMuy;ImV=ez_=}eCS*hXZGJa z;NzV`f1(bs7@Vv0EBz>-GJk#KpT)O6F#g{8Sg|S2(&nXF0r$K%!P@5Bsp4Xp%M^<{ zPnE{`-pSonlzR4V*_^ zF{#3Qnm_+u=`-`ym#vDszQX2<aX40H^Q=#@$p^i*dfa~WtANJ?^<_AE83e~43w)qUHx3v IIVCg!0EM8%#sB~S diff --git a/schainpy/gui/figures/close.png b/schainpy/gui/figures/close.png deleted file mode 100644 index 49a888419aec1337de0d806ebdd8938ba2bdec70..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@jZo;Ptn zCXmHIkf|&R4IyB#0V{?TVB}i{jYrlKFhZGJi~tAw6M>QMSHeh`-k%WOQ5?*h=%Q!K z;?VSVAj}ac7#^&rr-$WGgD@mJ`=4~Vhl3sA@z@w7lF#QO_}dXIPB0Q}Wo3m#nIX;0 zOyvkuu8_$i3rv|@gC9wL<*}o2137dykIrK1t@vaL>lhCQgZ;$(u%Gv2u>Vtt$^EHH zt`8|7vyo^73i)>=9z7`N?^!D+KWO;>^04wE7+VgF%wuufS*%d}o)x?vfk6(Yk!WP9 z5R3dP;(y31DKQ5)bedf2iXuE3i~PUXFZIa3$p6t>~f!SYJK9tsaOLbT%m03eZI zx5wQZ^hhL2>h)OD+&MM4;U4?^C+|R>D?uEVO-Gr*GB$yqh<2}ze-UBir0!)@ApO_OAn~svf<_J9f;&DX&|-yuAD!HCH2F(F&f+?K+Z4Q|b-*{7x!$rCFiQ z1U$*=Xnlz(^HG_(WWg|g|FYI!GI-0Q5F-p#ozJt$MIF!~m=iYnrjNe+{B@OusyJHk zX) zbAmHr4Thq}lEkMv+2_ANkDu_^xD@eZW3_$Vs;e++8ZhpAX0}P-ntRf9U{I2NrkJv^ z!F#+xZJ*J>2RzmAH<=>KY)nDU#{;`j>#VLpPu}FoM$4aQG1~C+(zJ0FA84k z3tBW8uPU}XLs#q$9h^m%)22vlFW*L~*_2Jq*g$Du3?)WZ%6Z+oSU-^P(%G@rJ;iti zs=akQv14HLU_B?>ihI))A+ipt?MuH;L)z}pT@{_Pz~#->B&|pKZJ#NlJ)X?U$zh_1 z>MhrbO4>(9M+5Rm3*coS>RBMva|nYrc5`!^MINqXw+xWgu_4;2lmJVk!t^MGIc((o zjo_+^iZ8^`qmJz6mX;P)aeKxa91eGuQm$0XBFu9~H7POLMH*E4uAt%V#?sfTiNwmw z%F~ecKqye;&tk{&%lVPHrUT2Nw+HqEo$D`(sn!g=qLIuG+@WGuW)tC?EP=UH>Q?_YYlA+2b$mcMzYPq zFzym1O1|2wx$q{n3-+$kg%S-daq_`))bW$T=~*{V`j$;QHgt$Ge1eP`T7?Nt|8kS0 z{9eETZKZT1p|OlxaFx;JDCRJ_J<*3tom;4A&mEJ3F+bRp)0`?9eWoDWZ0ZD>g}0zVi5d zYj}b;D7`?P2ui*muK>|D4mBLR6jf-YU$-mcv%=^LcCo_;Gsu_Z6Nt;HY0CAtCzR%x zXjtEy(~Pnvvx2zl&1pN^>eQM1h<&D151D!VcQ__uweQ|Z*IDDq5!}a9qldFF?;ol( zsH!fVm3Qpsz@5p8iVw-9vo)bEx|O9k%NnZ7#plko0hNyz6=MFGmh90^o-Ces$AnlE zaA|KV{bYAcNLiYdr}4vk`wTM0tF&gLUM=klJoWU|qoe~c0iq+x{4QviIPNN*czw}#~S&b>{I$+&2XV4O^8&WSoO@rHz{Xy_T9j=XvTi!yvGT;7Vh zKlsqx(`9Jnk5X9!VQAvDyM46ELOGLmCXbaLtK|@S^TBL$qjGh4d+J!_l@1H_!nsbz zN&{4BR`;}rE-;=Qx%Z?+y@Nlx5xSk?bNNkWfg<7JH}jUoM{Oe=%T`3fbhSZD=Xa&5 W64}fGO~+{ES3ub7Y*%6v5dUvWeYQ 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 DB~=*Y diff --git a/schainpy/gui/figures/open.png b/schainpy/gui/figures/open.png deleted file mode 100644 index 04030f97175183f8e2aeea4b8e62c1a4a7786277..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!CBxDSY3;nDA{o-C@9zzrKDK}xwt{K19`Se86_nJR{Hwo z<>h+i#(Mch>H3D2mX`VkM*2oZx=P7{r ziAnjTCALaRP&E($v8W_74PjGWG1OZ?59)(t^bPe4^x#An4GAd< zJOkrpQ^)r7Yl7+XZsda>VlpHzYajE0N+lz9!Yj=H}x+~^oSgDoTzLcw# z@Asa!TmI_a!3X>Q6|%Lhei45=JAw0&dgFWc(iF+o!^CJ)_3^X69jM7 zUAs81`Su6*oeQ+3vsR01@}>wGf1Q(Py=m9_h>haj?GKE%{GHJlUck;~rlj8^{@5U< zLH|OWNAc03xhwmNbJw@#Z(uFa>#fz6cAVSlnW=rVeDNn2hLa7)dc$HHKYtLN#j&z{ z;_I!oY<`V)cV1Mln8L8_q80n=hr)Z9kH_2zm3tnxgJp99gIueZW!A@%MdFK7W+i7! z?XFH(nEKzS)YL@CP&M3frrPEE;`$pMWmxo|F#qsfc9X&9`sAuBw`VP0x!X#dZG-f; zgSr-s$(MFc4pG{&eoD>TD}p;Buhvzjd@q~b$bW(F)IYmZ(I%}EZ(NTvvn`X3H~4TS z@QROwskQyx9xJZAcMEy1+&G`7yVs;&)^%x}*4c(_WsTnx*seq{l&M_$ZN{ZN`=eaU z`rPLkQpY=A1lk@nUpVDa4p;NZf;z+53_?rApX%<=a14CAH065rgYawHbAxr#49>+F zeb^%B6aTDCck|4-5+CGzoa=tf;>ozPWp?Kh&B($v>p$6A^exPOARVYFxnbhwUDi^o z=A|uU*;p%7o%X}@MfJ+RC(riHH(s!cb8*(j=NoUWvokwfqjb5sw0yU$-}T(CN1y&5 zya>RXmR-vAH z;6G!&g5<&|m%M^~+qMXFPY%i{nfz<>GXIwwv*M?o`*7mbeY<*wuK4S(PX6AZ0m|W? Lu6{1-oD!M<4c5`* diff --git a/schainpy/gui/figures/pause.png b/schainpy/gui/figures/pause.png deleted file mode 100644 index 366bb9423145e19ae0974c2a5660d5e8e675d2e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)CWx~Gd{h=pKksJC~rr^vc! z^N+bT3l}M6x^pZNbS!!3mf2LOZQRk(&1l}c_8-H+R_nwAXEV%MuJ03YpLx$iDzoJ3 z4ndQSW3G>zJ37|?Fx&b4-1pGsmoAq$-gUoQyzlee^?q}+JLC_)c=>Xox3{<0^kvJI zWzCy6&q}z{<-#VN{f{lC#+dUcr_D+`^0usf^XAR={XIQ3kF9Eaf844l`H}abDY2)& zzxdV+ISbysd-m*MUh)0w*HD$oC*OyyTz&efkffv}QQ#H7_H>;Pk0eE?id{WSAP~K7XEGSXrt0?fdt&YuD;> zJ`*~l{Nvy8BS&1O%<$rJ`N;4_eu=yTTj#oUdcq5g%+13aIvbW{Eo)#63ZKl#$It(^ zz#^w{f;7vug}>h)=-#a%&9fr2!DsjG-DjUYOPe`)vhsl@t4l5pa;514e6Q-t%hf#^ zgx0QEbK?X5gG!G1>Ss1?+&Js^@8A2^uUp4;`}Xa%+qRia-c@L0XV=x<&c0N)d4g>Y zYmTRz=Mjeu>CeJcgc>{7@Uk`k_i}mJ@^SX0NkSK|Tv6GX$dYKfX6@R}lP5hlZr;3@ z>Eouodv)2^*a}aP0^^N$nvnYOpFejp zwQsC?-YU6f-MUo?H$0ZwzU}Vr=AC~&-B>uuE93QY#lkdtbo+cl}l znz6Y+Wz3E8FZ6EVr_wL2X zOVqWry(wWj$Wql18ydQ_OP*0ALr1LmMnPG5`Ba|?*|H1Xi;Iibn^avo=F$B9`}gVq zRp%F+?{_RL2sn3TT65{CI)_e%3Km~ypZc=0Z`0!^7ae%IeE!P=2M**HyhvHjB=NiR w*G#1h9!I4=6PZkGY;FJcGOV-@{FVMoeg)SRg_^J@pu(QP)78&qol`;+0PD(~e*gdg diff --git a/schainpy/gui/figures/pause_blue.png b/schainpy/gui/figures/pause_blue.png deleted file mode 100644 index 2221e854815f2e0f55c19d3b831a6557592b09e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@DDLE!tv_-i{e2@^D|>;5SdIs0zhPBq+aAPJv=cGFhC#>fIbX> z!F2fuT@nRH_KDKPk<@lczVev)lYEK61adGQ2NC2x7x3X^V<>bFvunGJ$iV^scEXYN zWbp+8f)l_%PapWkEua@vk+#HOe|~2HKiU8V{IB+P7T`a_>?#HJq@pEIz_({ZOIWvR zxq(0;ZkA>yjz+SfPM$%^PV(CU5hrpUmT8E?1F$Jdv0j^|mnB^19rCEM>Uq_+pPo^j z+ka7-Go`jOse_%=qx9y-G8hvNY-LRbLswT5o~)hhU1P)E#5KHr(Yw&A+(HTrc#;bK z+}lLD(!4QtZ1zEQh1+^N1`x^6i0{U<*~!V6A53zXl8@sK)y8QB^yJ3Gz<)?UKbH)5 zuG1&YzLLGnt-=oLwv8^j7koEbGP-Km0dA=s#$Eq2k3cWC_8+4GiYb|CJv#~UcU9va zId304FSc;!G-Ydi$VGMQEoZV12=s&MR?YQZx{lQ% z`!RR2Qq5Rv#t(_DK%rBV6Xa+z*P2Vb7%(Va$}4i<=W&OQm*iHI@X+K^e7+(voqHGw zF0@-Ncpu%Wu`g|{KT=w)Jpvb&Gd{tlZdWeAjLbGsstxOB`j+YsFd;qRw>NK|Vc|s1 zYw)%?_U0?sYw&Tk_eL2AsT;NoCdiJlUqK}_i{nxQSQhZ)=A`{ z^#jo>HoRnXfAwlt`SeFyPAOY1#Z{q{`%0xTOgrTdhNLU2E^4{==v!GytB+tbPc218 zYnf;8?oC=k>U2g?I#X$?qGqP?zE<`${bI=9DtK(u&$*a|n@KOGS>+A9nE1OczG|s* z((?6zhbp`l7ne||7{zICp^ES6^j% zKXt_Yh)iebxT5bh+=#nxZZf=I!GWe4#F$BVQ@>t31_vi;GI^ZE+j1Rk4zcO1Fk+I= z=i|3&hSagag0yQQvTqMo%}r%62QlfIh=C%uWFfKJFjnYsf4pkE)flTTTcroS?p|3` zI3w&@^6n%qC=s{W)swxJ9|Edt7~G!^dq3x$01u;s@m;}wD+`adq;u^sA)fk-w0xvv zF%9ft6!F_if1$EZwu05KrC16_HQNIpWSZsQ!qyKT616(i747QIB_wMobm(l55GM5K z>2tU4H8`+X>oo*oC81{`({qkh?Np7)Qkx31HI)Yp&HFPd79&XC8#*;(Rdfn!5%d~& z$xB9Bwb^~`9B*-%&>a|BCZfqiH2+>1ew{qms(yq%4w>I4>bycMSC?$0U}>q(OG~Vu z-KEUA40~#`T{eu4 zy)nO{)X)*J=BM-2W9NPD_{-pd#8bH?b>`03BaRu+z!o}) zR~phA5;Ib$`Int=qEcg4sgToE@PvMuNSS)dnZ>JWeHSy4(E%pqEDG%DOb?P<+=S?) zByto3QHPBTXJ?sMbt80^m{F}u?T>9cs2Vi+1k=|dyp!9wvAUGKjByhk&K&;G_mg%3 o{VFdgUKJZTuI!a17F)C<+%n+Bv>bi-yWqdJG(T%re#)Er58YPAXaE2J diff --git a/schainpy/gui/figures/pause_green.png b/schainpy/gui/figures/pause_green.png deleted file mode 100644 index 1da39df10109da36ef37d7099df24913182b5176..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)CWil>WXh=pKn=-q6YP?7&< z-?&dY+wK`H9NGLL_<)w1XFx!9^CH13EJw1s5*!8oH)XlLI@Z48in`zz$DDYRjnm8) zdTDNq$~d@Xp=svDRVad!{p)@3KIv@~wtAhIvrNK*EM!sJHzS6e?Sm;iIjbJ#*&RACcSkzz+3MIRl{I8lAHJT=m6o2=2x8}H{|x?uQ*cjJ#)9#4P1%>Q`m#TiCE-$tv({s;G? zR+Vi#`|{VLJ9XbT9)8h(;Gnpw-)j1`WHK+Fo1FOcMA=!XlKDE@mwZvJcE0&D z=X}z7tMJVK{D0GTILx}zYWtrpuD0^`hu5*WdxMe;^-SNs|Fhm=zU<*g&s;_3zP>SS zm$ad6wLQAsF@eFI>KE4U`f~nl@j-A6p0ZUw87}SNq9AVt(>& z#h8nsb6*^unvfPq-cfrejmqj!#?Or+EvG{hc61xeNu7~5Z|c>K3ca0{A`$r(k?X|F8J_V* zYMc+9qFY<!YH6*?UAV6_b))K3w`ynpaF+AEw-wK*P3l?t-$`|~jqG3NTxrn$b1ujb40Sx%cS3 z{0+{or`O2eJ@Bq@kFt(x%b`afKFl!w^FP)6+G#8P-EXA7Tz$jw)~d_AS)}E^=@XqR z>N;Cr>1^m1D%@xJM_|g6A3`s?w=OU}cu%4F-kXbtHrhI0?@ravT=+pc_txt(1!6nr z9WI_}w#Iapx!&cA-t!Cn^Bx`~PkV&p4tO!R4T|wl3g5E2B$B!n!|Ye4wJ+)78&qol`;+0G+PH Ay8r+H diff --git a/schainpy/gui/figures/pause_red.png b/schainpy/gui/figures/pause_red.png deleted file mode 100644 index 04f578e59069a9b7e6344e7a9dbfa252bb0582a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)DBho_5Uh=pKnXl#Z|sK~!( z=khMi3ea4e?J2SsnauY_p7D?RRBo&FXKT{dXj#EbZOLImX7fds+GK%-s3>&gZ$s=kHtm z;1^7o;mWr@B4r=@u9yYJmZvsl*$4Q1V~=?5d(Ys$n$5p`evt?6vbG$u#lQc)dmH=uPKngD&nNZ=&G>Bh^V4QUAoq5`QQ9_Po1sDEGR;brM&|S2D zIm_u!pDJ1R9Ga$D{ZRO6QOVD(3qP1_&}Y0}aLh3Dp8kQ`Px>~MxN~5AUWr7 z>C36%e}xY?2*(JSZd_V#vu|I8*Q6y0Wz+sV3gyxk{TikyX%iEXP&ct@XXU1%#U~c1 z|J-q*_`Sw)%T)^d4t1+~hKL03l>2L3*7QvNw&T)$b*uRJgCm}{7_u%E3jMacd(7qF|?d8JuJ!!Ugs{dm%m)Y*}qx}0j|JvP|C8+EtRDAi~vbm4G*|8K~ zm(8)$tGs?7=N3zO@%n4a4{u%D)ptrZ{V>~>x3@MQ^>Fw6xH$OmBL%Ai`vRtfu0OOO zNAK3g8T~u%B*d9A^+-?IE1GhAXC?2_yw~r%I9}mRs5;+_7LObuT^)W}&fo{5zP}%E!FlbH8qRVTv0c)9NSp zqz)L)+iSCQ4UdSLe%@uZ8Fhc|uSrl>i@y<_KIiN!UFOsB&YjV}OJ@ds{4>>2-V^gTe~DWM4flGv?F diff --git a/schainpy/gui/figures/pause_yellow.png b/schainpy/gui/figures/pause_yellow.png deleted file mode 100644 index 5e6d7384ab1bb05d76b6d40410d9eb8b5f0f103f..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)DBtfz}(h=pKmsBcb4sK~!} zvo&QCGc+VjV;j6Xx$i0(9+dFakY0UIs8>7usH?E=1cAkw$vukiLYjOH|23@MWw2E7 zn1ai#BO;;~(NfSAX}jIP=5Zb_}VT`C#;On6P%uh;jwo6=r?V2Rt7 zUKT&`zJJ%1b)6oq%Ifddd3-gWxLRGs>hB5v-a?z{Kc5xWEU8jxZf^Y`(s$~OwbI4- zt|t~c?vs_z@!nk>r?N+{>{suNc}FIS?U;7?y2;g+_=mMWza~dr-_yP0#?CYsk0gtK z?q((O(aRTIcy!I>+5O2MxMj{AP-KdKULd1?^3ClntF<$pBwr1kt>M?MqSX|Bnek ztzLh_C;D0+zj5Scy4`uYe8wZaiLK?F^WqYItUs~!uu`#q$L!nM@Ai8~a_wQ>b*^6J zY~dUJ9}&%m{@&<*yZftslE*KR)iukma@WL(H{SYg^N=|#^V&}Pqm^Q5f2|knoATo5 z#wEuRkINm|TVa>5^LNVU3&|R`E7+p)RjpE~oHUOK(_yTqd2lE-+PXj;ZM42bQ->G&y)?xC-jb&1_pMmv4MEVaYMU z!X*aadV?W+|gO@Yj>_bUgE#DHf>en7C(Kx%f)3}UiSh*)26>m zcrW3?ZQk6Q9Py-G9>-Vt`J6hPm(vEfgcgy9J6EA4L`H*^T%`8(#qv#^%-dOQX%(17GUxn}0x@c~3 z`h?f_9Z5XQXJ1~Qt1iNSuW#y`n&55n6>>@$dz8NYS^fG+m#ya(ufmlr@sD&RdaRSLeUi{<;E(*5-V#FP4015u6qCo_N-NJG3Fx$IOD{@;P?Tc+C8s$WvL zU6r0B(8?UY{Ju?4{1={`rP6F$zHjxt8Q9hz-}K^`Z}?2B<=gMq3Z!!`;=f#PvWfrI Z|6TcAS7*EIy$C9EJzf1=);T3K0RSM(j+_7h diff --git a/schainpy/gui/figures/pausered.png b/schainpy/gui/figures/pausered.png deleted file mode 100644 index 1fbf3428438f6fa5f5c39d0f969645c074feca5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 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 LS3j3^P6GK4GQ<#=IWDQi$wiq3 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 diff --git a/schainpy/gui/figures/start.png b/schainpy/gui/figures/start.png deleted file mode 100644 index 2820368e8596875c15fe786090cbcf7690d489b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@MzCV_|S* zE^l&Yo9;Xs0007CNklTJ^-NtaC6FHZ?MqQLnc#`bzHl-0uUx?E;eD6A=A4EMr4#!e*wIqo4I{U@WYAkU9nMX9MZcO%5JaVx zX^-3&hx-=H5h@=|mEU!}Wn4?2Jr^XPR5)?uC(GK>w?AJ=_ge9X!!wsn>i3MghaS76 zE)ir>iMGFV)Ly^;RZ>ix4DyD4b$wE7`OGE~shWnScW^RTOeDSW+;c9d$)pmw1Aq9! zf&-*#>Y6Uf^~RGpc4|PblnBTj+SB#Ghkis*)8~>?aV&|Wg&}nW0Z%;fuc!X8>r;!4 zq*5;_#L+B@2m;_YTmE+9yz}}*5Cl<_#f>oZyGjK}W$F@{bLL$^Pi0#WHI&( zi!YtZmhR3GD$KO2&ED{_SIs!1Pb#RCj@|Q6L$(`6?sN$im~K}KaW>cRycfMJ_|>)@ zN9vNLaQ$umjP9QGB$3^sv#I6A>F zp>zsN521_Df}4V2Fc_NdAAoYkT5nw!W+w1JCNm5L04x>@!O}s5(oX~0Mn*<}77{=r zHH8RGMkI~t8=*;KsBV&c6Xm{sp=X#TaQGHx(>5D1g985TL}P5p z5()%FCxA9W3;510q8C+BczO^;*jdDHs*MKzSNk>#@SkBel>%E*O~Gj3`?HyX9ctAH zAdmzLhqZ7ul%cqJIS}3Ut#=Fxx_ThCyqI41nCN-+l!BW6f&3ACy?kb-zUiH#j)jeJ zaVby=S#l=ULZExsn(U|hJ~puUUPY-{PC0nTn7XXHM!7lorWfR96>DiIe4JC+nj^lH zrSqvaTLZfL{dAIjyK8U07hzo59x`I#s_Pl}%djnwy)=YE}FzU6N|5 z&Krw5^wx_V@usQ!X~Fulsx}%5P}}82p0NtsrLIRzUP`kDC1Lgh#&j(86 zBqbuG3DXCfeqAogP(oSX>aCetEsS$9i+<&6o?K)vT}3y=<;wO?UoA*5R9tWQ1lq&v$A`l&T?$5B1fsy zht?wplREa9e!+$?f2gujwm`~+oc*Z!ZUvkvphD$|a&1r2A2erd&xkt!B}2-%A4dez z-pf=u!O52%EeCZ=A)b&5P3wppG`G((TI*=qhCAjr|J=cYI`P*!+*IoLg8dZ_f>YyN z6l+}^_*2y-K0ZSiN0YI@av?gWpyY&;sw+%kPx?N+fyT5UpCVADLn-{~A-|G3rDkIn zqv^j*Vl&D$+>JD(EiLk5K5GP>>*iXe>^(c*8)T=L z@iwUq{NZs`5@{hf`$0e5!_GL>b7%6xk@UNYD|a>wv6r54ye(e!)Amz?SW{4w-j*sA z3h$-sV;mli9CSo+CTZwIn@Oif7oJ6}?ig<8*O_i#cN*Y4S;VEKB#bQSDfZR{H1v7R z0h3d<_7?WBRvOFv;if$MMI!M|O(c8Vo%j=jh>>DHEGA_v7X1C1J6ulf$KMuT3}5qf zmW>=XV0#`OIG!11Q@(;L`BM3(Ltc*3IOoG;&xaK|-=lq(A48VOGwnZ1B)!A~$%s+F($;AKw diff --git a/schainpy/gui/figures/start_green.png b/schainpy/gui/figures/start_green.png deleted file mode 100644 index a3b4e7ed408ab6ee04c8191df2ae23d16cd0263c..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)D>1Wy;o5DUTF(6`yqsUrXH zR!?4*y;*H;^hJ}&yi-rPgr&b`Dcz=VtMS&Uf+#^5jz{qZb5HpE4VYRd?C4nd+sOKP zOms<4pmrdybMC^%jq7UC?eBd&c<^P*lPmERwG4NkFYo)z>3#0Re1_nA zr#}~*{A^>Ia_;>m^}~}oe*OC~#p-v#jpL89m8L#V-*;4d@BXhFvbnBIJM4E)?efm4 zZ2k<~+kQwaHrghUvQg*MrRmfAtor9WMRUs31Wvk~^kW)B*P4{)883c`o9z73&A;H< zQ3pebRF63c8^zvcTK!7C%^~g)5qslv{-dqax@FvvTUnO*QC_Mes7rY zS9V#lVoFP3s37BXCHJTg-uGO8tPGV7)J?Z8KVQil&a`Kl`8B(*Z`MUje$$=ltgrQY zSEI)Yxpmw7RN4GzUtY2PX7k&NcXJf9eogXn3-v$vO|Hj&mA%Q`3xWsKJFbSCzVBn( z-ZgK9NX!Ju?sJ>H7E8@;5;WV;IP;3@oin~la+MNaC&qHT5cTTk`n$xnxwNA_I*OS` zH0G7Cq}6z+a%X=tMPN(L1hny7P|a{L(7BX4jPaQ1-&th84-d z3C6j6*N%p)Wc|vuRYQ6^cl+@;X@eUL2P@6LC`hjeJfD&!5&q0iIaya*{mGgq$}8F< zW*`0bCaC}Po*0#Ox&NP@eA=|o#_X=?)Z5kD-=z1?7F>B}*|SG2A>DJ$1s%8~U)D*3pz>`D!ur)}xkY_RsR z?H}EiOE}f*Z2_om^=oxc+AMvE6(R=B=$3?!CAA%UhSW1VpqLh-h|9EGi3T<9eg^ds@RhiTBHz(?3jO()~Mi;^u()8>R@< z1d8mi*R*TZtGuhs8E<17z!&xGjqaxO?Ebk&>JnGVud8)Ec_!2=(%kanvPFTXZ!Rz` z?p$_BxFqe7@wu16%}YQ0T=W0pkMiT4&;ObCuUx;BF}He~$(G}*qoS7jE?vCiN9Su3 sO;yul+v^|7uocQI>x#3{tqb_icsQr%@67#Hb)aJ2)78&qol`;+07t#acmMzZ diff --git a/schainpy/gui/figures/start_red.png b/schainpy/gui/figures/start_red.png deleted file mode 100644 index 3d8f9c1fda5fc7222d144413026f42b427cec38d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)CWs;7%%h=pKmXlzbMsKCE> zd*5z55ViKISCqlUUnw;P3p+2ea~dj&Zb;bDVyAJ?MX=UzqDilvhsoM$F7rc74t`K@ zye!dSfAPvOb;qS#OC7j!xBXw6+4%O_yGw8P?*86)f6ngjyGl20u0A(s=KC{eX3pID z!CvUVG7p`imnZ%SW)w7}EIGCL>DvSMFaG1mz4x%~lftCJzw%$1&cz)F_mmHaXMPhG z|3AU|>*w8arDo<=ET>N8hzaMqY;1n_{Qi9f(lh6aHNG!rl-#Ph{rX--QMcEh9e!WU zz1@CE-M_P^w=<=9Q`^5tF-gg(t@?f^ran_=JIAzkVy`U|W-pER6U6XzSViOKuHZy}LR zQIZk!rkWEokp-(4cpon@VV%BMf<8}fr}c^z$;57hiR9eI?`laW(q;>C;H zqBgUqUNpa_^M`HAkq5s5W?c^Yk@ukT*tNOyrX4*jyXn&R%`Xa^w?aB-}v5?ahM|#Z-6}zp=Jghi9&7F*Nqo00TIXNh1MtH09 zNIk}QE1iGGs=x2Q5V?K%R21@NrN7R3tD#$`;v1zCs+8k%Z5PX$tXpBx8)nNjT)xwk zkiziu`mKp?-?f=na0Y2?2<6?CdN)#8bhecAmfFN{wMTqC;(}Y8JwruzPP+H;)Ys4r zv*g&!Y+2T?=HA)7ezAqM__S$^n{}-xZqO>xeV29T@zZ-!IrD|CD__<&TfXLrV2m_N zm{wrv7mZcX<%=KvJDb2IsWUfWU+r~QR^Lsxen*_U*E-9(MT$-T*QC&_3ZL^@vJ(6G zcABz1UpYNs>vG;s-Lr{(p)=nv&+|?@`AI!pt@p1$*8WTP)LTOZuc@w13c6%n?ltSz zORHONs>8zeSu5A21(x!e%NQ9f`^PNq8S(wrLQqO;HEa&nXW`sO< zb8z>r4sTn3QsC8Ze}=0c*H|3Cd0JC+irbRar*7SHw6JyxU^N$Pk6tVs_rgm}S$Vz8 zDZ%HSk9FstnldNv#;yF9Q!X_+U20sIH_Puz<$_ETnYe_aQ^m|ycYkj4+aAuF@#W~k zK)WZ_C0?Fgx^h+N2RH-#6j%89wb_6Av@pgpW9R0N8?K-J(f?tKpQfzFt=~smrGrwu zYL>axcYpr;C|1UV-?XLr*W(YF(v~}yT?~=<`@C>&&Xb(G2kxkU+m>&fd#W$#W4FDj x@zc5Q{;KlVRLj1wXV`Em(#mJ`wvKiGS#Jh%dp+Ce5C$r{Jzf1=);T3K0RR$Lq_F@1 diff --git a/schainpy/gui/figures/startred.png b/schainpy/gui/figures/startred.png deleted file mode 100644 index 3d8f9c1fda5fc7222d144413026f42b427cec38d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)CWs;7%%h=pKmXlzbMsKCE> zd*5z55ViKISCqlUUnw;P3p+2ea~dj&Zb;bDVyAJ?MX=UzqDilvhsoM$F7rc74t`K@ zye!dSfAPvOb;qS#OC7j!xBXw6+4%O_yGw8P?*86)f6ngjyGl20u0A(s=KC{eX3pID z!CvUVG7p`imnZ%SW)w7}EIGCL>DvSMFaG1mz4x%~lftCJzw%$1&cz)F_mmHaXMPhG z|3AU|>*w8arDo<=ET>N8hzaMqY;1n_{Qi9f(lh6aHNG!rl-#Ph{rX--QMcEh9e!WU zz1@CE-M_P^w=<=9Q`^5tF-gg(t@?f^ran_=JIAzkVy`U|W-pER6U6XzSViOKuHZy}LR zQIZk!rkWEokp-(4cpon@VV%BMf<8}fr}c^z$;57hiR9eI?`laW(q;>C;H zqBgUqUNpa_^M`HAkq5s5W?c^Yk@ukT*tNOyrX4*jyXn&R%`Xa^w?aB-}v5?ahM|#Z-6}zp=Jghi9&7F*Nqo00TIXNh1MtH09 zNIk}QE1iGGs=x2Q5V?K%R21@NrN7R3tD#$`;v1zCs+8k%Z5PX$tXpBx8)nNjT)xwk zkiziu`mKp?-?f=na0Y2?2<6?CdN)#8bhecAmfFN{wMTqC;(}Y8JwruzPP+H;)Ys4r zv*g&!Y+2T?=HA)7ezAqM__S$^n{}-xZqO>xeV29T@zZ-!IrD|CD__<&TfXLrV2m_N zm{wrv7mZcX<%=KvJDb2IsWUfWU+r~QR^Lsxen*_U*E-9(MT$-T*QC&_3ZL^@vJ(6G zcABz1UpYNs>vG;s-Lr{(p)=nv&+|?@`AI!pt@p1$*8WTP)LTOZuc@w13c6%n?ltSz zORHONs>8zeSu5A21(x!e%NQ9f`^PNq8S(wrLQqO;HEa&nXW`sO< zb8z>r4sTn3QsC8Ze}=0c*H|3Cd0JC+irbRar*7SHw6JyxU^N$Pk6tVs_rgm}S$Vz8 zDZ%HSk9FstnldNv#;yF9Q!X_+U20sIH_Puz<$_ETnYe_aQ^m|ycYkj4+aAuF@#W~k zK)WZ_C0?Fgx^h+N2RH-#6j%89wb_6Av@pgpW9R0N8?K-J(f?tKpQfzFt=~smrGrwu zYL>axcYpr;C|1UV-?XLr*W(YF(v~}yT?~=<`@C>&&Xb(G2kxkU+m>&fd#W$#W4FDj x@zc5Q{;KlVRLj1wXV`Em(#mJ`wvKiGS#Jh%dp+Ce5C$r{Jzf1=);T3K0RR$Lq_F@1 diff --git a/schainpy/gui/figures/stop.png b/schainpy/gui/figures/stop.png deleted file mode 100644 index 4ecbdf6edaf819a5f1f7d1a850f6fe0c0662d252..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@MzCV_|S* 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 diff --git a/schainpy/gui/figures/stop_red.png b/schainpy/gui/figures/stop_red.png deleted file mode 100644 index 0bda47e2902052c0dc258c3b0cc73b177ee5a2ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@h?X&sHg; zq@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGMsb3~lr=#9(gGM{^9sr}|K@+Hu+F!-LI^%jb}KBm)DBkEe@ch=pKlXmmzQs7UPh zGiMi{-D0-U_mWCf>6U;A8e*)jEx#_hCFi(G-{N1WWEb=&U`oK3!;jke1z0~eF8Jac zc+%Zb#I;GoOf)*zAU7a5=*;08K9dZS(`J1+SDSO)&bZvj)75;A<@Yz6zuWzOv-!Fd z`)U^k=cyJlOLaf9UYNu%X`|+Mu`;ImW3LZ?shr3CYH`Hz_o*+Lh3-16n6zy2y0JzI9$kB{N|v3*ku-+1o2xV=38k^6(E z9}nwy{4rd*QHgK9@&gX-wsoQUpMKBivAZlikA?5(!CXsk)2+MaH;6yKU*(>X=^1O& zxky7tMCH@pM;uL0^Y1@jI8pA6r=9-G>2ZShwwUv+(@%N*hj~N3kFhSBuFFETum6QU z8gwmxYW4fc<$vED+%0$5UHQ;A*Lmsd>c9ih#xo6Oi~j$!h2`ZJRp+k@uSI?4+v>$* zXQh=MbX`7q?&NiD_ZjYN|M`&lZANZjvzB_|fdwb_{$pG8zVBen-qyX3Hm|(VDQJBv zwY+DJbCSRKwXZg8!QsmjW0nMERJ?ldHr%eTV7k_sm&>jM{{B@Xa4qzwso9%;V70GR#$QN$e*A?lJ=sb+;Q?pzDFQeM`%f0Z`Za<;A7 z_cpt0d7tHxxqp4fSF7uVvAW&KKW4mZWEbS)`S8_TT;3}_E`P~PKfi^q-to;a)!ApY zW8J-LbN)Yz)?u6<_4K*J-w)rS{WTT_bnH=@<6P8`CX!+_o$u9Q?(VGpJ$vHorYf3z zlV{929aA{xj`y@KmFeNp>sf;T{`1#7Tv-?ACinKF@i|$u=s2JMhHECwofkSy>tlYS zptEbp%)3d`w9koUZu!{asLp4*{LQxtnbYS~dc7vS51kg|q}gfI(^|PkW3BV)S$qDS zP`3SfYQfZ#(@w_uOEJ6)nl`KIb8g@p_Lq{J9?MUiwPL?~IY>fg%E$2dWMA`d)7Sgo zw>T+!AuzT4rG5YXlVL^LmD$^q;uF1GEOY8OkEkc)I$ztaD0e0svZ1r=$P? diff --git a/schainpy/gui/figures/stopred.png b/schainpy/gui/figures/stopred.png deleted file mode 100644 index 845e10b56b0782150701c1857dc236a95fcf4e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z~m3YjNd0( zOkiMOjLZy)D2ed(u}aR*)k{ptPfFFR$Sq(10hlpi<;HsXMd|v6mX?DWr0I{efGYw%=UNO{LKo9DJWb_U74D{hTKN}crUGpSnQv!k zqmLm5bBjKjV<0}&hkDhH%SIm_Y<65ehtwm1k+#m$#WBP}us8H?_mohPx_kYR*CW&K zh@PIQqskv=!pAH_Fy6^UVx%c}R=Tu0Z=-@Yu`StlY-|y0tK(pJ8FV-K( zetEb09Iw3XvMWpLl8+th4LlXGGNeaR)^zGUJL4OrDjxg)9eY`PVB1@V*sJjchZ?dM z^lbWQb7A7|4w@xU&+;UQ`#{PW5tz8XljMKNY$ougz7uPfM z@s-!5ov~0hS*D|~D=1KgX;G=7GEX^q2d;>nbQcFh1lFzjb2U z0#&P!_kM5hDV3>CK0o`+Kj!~m7@}FPOzs!SI{D64UZ?W+*`*#TOnN^9PK7>x9Pm?c z#!Al@osZTSGKOkwC>Oc2%ZgnuTda50k43Hcn}4l)TzTQBXGm4mf_;{JI?+tQNvGW;+*@_y%=urff4$~Z%nV(9 zE~cJq*Vb=*y7AY=uhQ`!B$JzJZ@sabFeQV>d2=p%|8s+&H4$9jJH_68$h;zGp|IhK zd+38>$%)US{F9^4c&o%bT3ePWR4(*g*P+L4GtVlkIS=@*GWgjVO2z#1@``9P%1?L` zy=fVb#+$p9yz9Ov7`^nKbl1b>k^-A?r--(@-h=7_71pmYo#!^PHW(GyeEhTC!lmT3 zQlG!d;?s@OxDJ0l6rBFXGPK8Qo&DOxj;*G``KxH!S9Ozw*ukzI8Enueraj zRrkJImFbOmlE#eJuWe z#w?4=f1B4H;0=m@bLHf`Ba^k~yJhX1k*RNYfA02T^)q4n0u&EREqLSATRB0x_twFg z%UT!z{vG(^<#XdB)~RQoC|{XgyFS^4|4)i8v3uCHNm9zp{MNU-D(Bp|vo!mn ztWP_Z-BQ<4ZE@OoX6e*TZ_Ezo94a_e_GJ4iUss3Cvh7_<&XseB+8H=L4}G(wyGHBE z^t<&5H@@&sFgf~NPO1IR&Fs8wd#i&T>=~b(IVOBJbA1!{{BIL}{faK1EAi(~cc-*Ik{rx=l$$E&-ruzy}hkIe(yfsb#1}A8xsyEM%}q3|58w4 zCX?CmYx!08yqAVmpL7X|o1!^2XFl7@)9KymyXyDw%~^6@mvO>u;S2jd*E6QuFeX3n RG;RY`0-mmZF6*2UngHrL<6Qs% diff --git a/schainpy/gui/figures/tools.py b/schainpy/gui/figures/tools.py deleted file mode 100644 index 0b5e891..0000000 --- a/schainpy/gui/figures/tools.py +++ /dev/null @@ -1,15 +0,0 @@ -import os, sys - -def get_path (): - """Borrowed from wxglade.py""" - try: - root = __file__ - if os.path.islink (root): - root = os.path.realpath (root) - - return os.path.dirname (os.path.abspath (root)) - except: - print "I'm sorry, but something is wrong." - print "There is no __file__ variable. Please contact the author." - return "" - \ No newline at end of file diff --git a/schainpy/gui/figures/w.jpg b/schainpy/gui/figures/w.jpg deleted file mode 100644 index aa878552f0e19afc59e86847265981d09d4c34e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@W+$BJ8w_rgg7A(O-a0?#X-Tjia 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%0DT-OvSZ!fG? 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 0: - self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex - 1) - else: - self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1) - - @pyqtSignature("int") - def on_proComEndDate_activated(self, index): - """ - SELECCION DEL RANGO DE FECHAS-END DATE - """ - pass - - @pyqtSignature("") - def on_proOk_clicked(self): - """ - Añade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml. - Prepara la configuración del diágrama del Arbol del treeView numero 2 - """ - - self._disable_play_button() - self._disable_save_button() - - self.console.clear() - - if self.create: - - projectId = self.__getNewProjectId() - - if not projectId: - return 0 - - projectObjView = self.createProjectView(projectId) - - if not projectObjView: - return 0 - - self.create = False - - readUnitObj = self.createReadUnitView(projectObjView) - - if not readUnitObj: - return 0 - - else: - projectObjView = self.updateProjectView() - - if not projectObjView: - return 0 - - projectId = projectObjView.getId() - idReadUnit = projectObjView.getReadUnitId() - readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit) - - if not readUnitObj: - return 0 - - self.__itemTreeDict[projectId].setText(projectObjView.name) - # Project Properties - self.refreshProjectProperties(projectObjView) - # Disable tabProject after finish the creation - - self._enable_play_button() - self._enable_save_button() - - self.console.clear() - self.console.append("The project parameters were validated") - - return 1 - - @pyqtSignature("") - def on_proClear_clicked(self): - - self.console.clear() - - @pyqtSignature("int") - def on_volOpCebChannels_stateChanged(self, p0): - """ - Check Box habilita operaciones de Selecci�n de Canales - """ - if p0 == 2: - self.volOpComChannels.setEnabled(True) - self.volOpChannel.setEnabled(True) - - if p0 == 0: - self.volOpComChannels.setEnabled(False) - self.volOpChannel.setEnabled(False) -# self.volOpChannel.clear() - - @pyqtSignature("int") - def on_volOpCebHeights_stateChanged(self, p0): - """ - Check Box habilita operaciones de Selecci�n de Alturas - """ - if p0 == 2: - self.volOpHeights.setEnabled(True) - self.volOpComHeights.setEnabled(True) - - if p0 == 0: - self.volOpHeights.setEnabled(False) -# self.volOpHeights.clear() - self.volOpComHeights.setEnabled(False) - - @pyqtSignature("int") - def on_volOpCebSplitter_stateChanged(self, p0): - """ - Name='Splitter', optype='other' - """ - if p0 == 2: - self.volOpSplitter.setEnabled(True) - - if p0 == 0: - self.volOpSplitter.setEnabled(False) - - @pyqtSignature("int") - def on_volOpCebCombiner_stateChanged(self, p0): - """ - Name='Combiner', optype='other' - """ - if p0 == 2: - self.volOpCombiner.setEnabled(True) - - if p0 == 0: - self.volOpCombiner.setEnabled(False) - - @pyqtSignature("int") - def on_volOpCebFilter_stateChanged(self, p0): - """ - Name='Decoder', optype='other' - """ - if p0 == 2: - self.volOpFilter.setEnabled(True) - - if p0 == 0: - self.volOpFilter.setEnabled(False) -# self.volOpFilter.clear() - - @pyqtSignature("int") - def on_volOpCebProfile_stateChanged(self, p0): - """ - Check Box habilita ingreso del rango de Perfiles - """ - if p0 == 2: - self.volOpComProfile.setEnabled(True) - self.volOpProfile.setEnabled(True) - - if p0 == 0: - self.volOpComProfile.setEnabled(False) - self.volOpProfile.setEnabled(False) -# self.volOpProfile.clear() - - @pyqtSignature("int") - def on_volOpComProfile_activated(self, index): - """ - Check Box habilita ingreso del rango de Perfiles - """ - #Profile List - if index == 0: - self.volOpProfile.setToolTip('List of selected profiles. Example: 0, 1, 2, 3, 4, 5, 6, 7') - - #Profile Range - if index == 1: - self.volOpProfile.setToolTip('Minimum and maximum profile index. Example: 0, 7') - - #Profile Range List - if index == 2: - self.volOpProfile.setToolTip('List of profile ranges. Example: (0, 7), (12, 19), (100, 200)') - - @pyqtSignature("int") - def on_volOpCebDecodification_stateChanged(self, p0): - """ - Check Box habilita - """ - if p0 == 2: - self.volOpComCode.setEnabled(True) - self.volOpComMode.setEnabled(True) - if p0 == 0: - self.volOpComCode.setEnabled(False) - self.volOpComMode.setEnabled(False) - - @pyqtSignature("int") - def on_volOpComCode_activated(self, index): - """ - Check Box habilita ingreso - """ - if index == 13: - self.volOpCode.setEnabled(True) - else: - self.volOpCode.setEnabled(False) - - if index == 0: -# code = '' -# self.volOpCode.setText(str(code)) - return - - if index == 1: - code = '(1,1,-1)' - nCode = '1' - nBaud = '3' - if index == 2: - code = '(1,1,-1,1)' - nCode = '1' - nBaud = '4' - if index == 3: - code = '(1,1,1,-1,1)' - nCode = '1' - nBaud = '5' - if index == 4: - code = '(1,1,1,-1,-1,1,-1)' - nCode = '1' - nBaud = '7' - if index == 5: - code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1)' - nCode = '1' - nBaud = '11' - if index == 6: - code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1)' - nCode = '1' - nBaud = '13' - if index == 7: - code = '(1,1,-1,-1,-1,1)' - nCode = '2' - nBaud = '3' - if index == 8: - code = '(1,1,-1,1,-1,-1,1,-1)' - nCode = '2' - nBaud = '4' - if index == 9: - code = '(1,1,1,-1,1,-1,-1,-1,1,-1)' - nCode = '2' - nBaud = '5' - if index == 10: - code = '(1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1)' - nCode = '2' - nBaud = '7' - if index == 11: - code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1)' - nCode = '2' - nBaud = '11' - if index == 12: - code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1)' - nCode = '2' - nBaud = '13' - - code = ast.literal_eval(code) - nCode = int(nCode) - nBaud = int(nBaud) - - code = numpy.asarray(code).reshape((nCode, nBaud)).tolist() - - self.volOpCode.setText(str(code)) - - @pyqtSignature("int") - def on_volOpCebFlip_stateChanged(self, p0): - """ - Check Box habilita ingresode del numero de Integraciones a realizar - """ - if p0 == 2: - self.volOpFlip.setEnabled(True) - if p0 == 0: - self.volOpFlip.setEnabled(False) -# self.volOpFlip.clear() - - @pyqtSignature("int") - def on_volOpCebCohInt_stateChanged(self, p0): - """ - Check Box habilita ingresode del numero de Integraciones a realizar - """ - if p0 == 2: - self.volOpCohInt.setEnabled(True) - if p0 == 0: - self.volOpCohInt.setEnabled(False) -# self.volOpCohInt.clear() - - @pyqtSignature("int") - def on_volOpCebRadarfrequency_stateChanged(self, p0): - """ - Check Box habilita ingresode del numero de Integraciones a realizar - """ - if p0 == 2: - self.volOpRadarfrequency.setEnabled(True) - if p0 == 0: - self.volOpRadarfrequency.clear() - self.volOpRadarfrequency.setEnabled(False) - - @pyqtSignature("") - def on_volOutputToolPath_clicked(self): - dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.volOutputPath.setText(dirOutPath) - - @pyqtSignature("") - def on_specOutputToolPath_clicked(self): - dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.specOutputPath.setText(dirOutPath) - - @pyqtSignature("") - def on_specHeisOutputToolPath_clicked(self): - dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.specHeisOutputPath.setText(dirOutPath) - - @pyqtSignature("") - def on_specHeisOutputMetadaToolPath_clicked(self): - - filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)"))) - self.specHeisOutputMetada.setText(filename) - - @pyqtSignature("") - def on_volOpOk_clicked(self): - """ - BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES A�ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO - PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML - """ - - checkPath = False - - self._disable_play_button() - self._disable_save_button() - - self.console.clear() - self.console.append("Checking input parameters:\n") - - puObj = self.getSelectedItemObj() - puObj.removeOperations() - - if self.volOpCebRadarfrequency.isChecked(): - value = str(self.volOpRadarfrequency.text()) - format = 'float' - name_operation = 'setRadarFrequency' - name_parameter = 'frequency' - - if not isFloat(value): - self.console.append("Invalid value '%s' for Radar Frequency" %value) - return 0 - - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter, value=radarfreq, format=format) - - if self.volOpCebChannels.isChecked(): - - format = 'intlist' - if self.volOpComChannels.currentIndex() == 0: - name_operation = "selectChannels" - name_parameter = 'channelList' - else: - name_operation = "selectChannelsByIndex" - name_parameter = 'channelIndexList' - - value = str(self.volOpChannel.text()) - - if not isIntList(value): - self.console.append("Invalid value '%s' for %s" %(value,name_parameter)) - return 0 - - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.volOpCebHeights.isChecked(): - value = str(self.volOpHeights.text()) - - if not isFloatRange(value): - self.console.append("Invalid value '%s' for Height range" %value) - return 0 - - valueList = value.split(',') - - if self.volOpComHeights.currentIndex() == 0: - format = 'float' - name_operation = 'selectHeights' - name_parameter1 = 'minHei' - name_parameter2 = 'maxHei' - else: - format = 'int' - name_operation = 'selectHeightsByIndex' - name_parameter1 = 'minIndex' - name_parameter2 = 'maxIndex' - - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter1, value=valueList[0], format=format) - opObj.addParameter(name=name_parameter2, value=valueList[1], format=format) - - if self.volOpCebSplitter.isChecked(): - value = str(self.volOpSplitter.text()) - - if not isInt(value): - self.console.append("Invalid value '%s' for Profile Splitter" %value) - return 0 - - opObj = puObj.addOperation(name="SplitProfiles", optype='external') - opObj.addParameter(name='n', value=value, format='int') - - if self.volOpCebProfile.isChecked(): - value = str(self.volOpProfile.text()) - - format = 'intlist' - optype = 'other' - name_operation = 'ProfileSelector' - - if self.volOpComProfile.currentIndex() == 0: - name_parameter = 'profileList' - if self.volOpComProfile.currentIndex() == 1: - name_parameter = 'profileRangeList' - if self.volOpComProfile.currentIndex() == 2: - name_parameter = 'rangeList' - - if not isIntList(value): - self.console.append("Invalid value '%s' for %s" %(value, name_parameter) ) - return 0 - - opObj = puObj.addOperation(name='ProfileSelector', optype='other') - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.volOpCebCombiner.isChecked(): - value = str(self.volOpCombiner.text()) - - if not isInt(value): - self.console.append("Invalid value '%s' for Profile Combiner" %value) - return 0 - - opObj = puObj.addOperation(name="CombineProfiles", optype='external') - opObj.addParameter(name='n', value=value, format='int') - - if self.volOpCebFilter.isChecked(): - value = str(self.volOpFilter.text()) - - if not isInt(value): - self.console.append("Invalid value '%s' for Filter" %value) - return 0 - - format = 'int' - name_operation = 'filterByHeights' - name_parameter = 'window' - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.volOpCebDecodification.isChecked(): - name_operation = 'Decoder' - opObj = puObj.addOperation(name=name_operation, optype='other') - - if self.volOpComCode.currentIndex() != 0: - - code = str(self.volOpCode.text()) - - if not isMultiList(code): - self.console.append("Please write a valid Code (Example: [1,1,-1], [1,-1,1])") - return 0 - - real_code = getCode(code) - nCode = len(real_code) - nBaud = len(real_code[0]) - - opObj.addParameter(name='code', value=code, format='intlist') - opObj.addParameter(name='nCode', value=nCode, format='int') - opObj.addParameter(name='nBaud', value=nBaud, format='int') - - name_parameter = 'mode' - format = 'int' - value = str(self.volOpComMode.currentIndex()) - - opObj.addParameter(name=name_parameter, value=value, format=format) - - - if self.volOpCebFlip.isChecked(): - name_operation = 'deFlip' - optype = 'self' - - opObj = puObj.addOperation(name=name_operation, optype=optype) - - value = str(self.volOpFlip.text()) - - if value: - - name_parameter = 'channelList' - format = 'intlist' - - if not isIntList(value): - self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter)) - return 0 - - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.volOpCebCohInt.isChecked(): - name_operation = 'CohInt' - optype = 'other' - value = str(self.volOpCohInt.text()) - - if not isInt(value): - self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter)) - return 0 - - name_parameter = 'n' - format = 'int' - - opObj = puObj.addOperation(name=name_operation, optype=optype) - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.volGraphCebshow.isChecked(): - name_operation = 'Scope' - optype = 'other' - - name_parameter1 = 'id' - format1 = 'int' - - opObj = puObj.addOperation(name=name_operation, optype=optype) - opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1) - - channelList = str(self.volGraphChannelList.text()).strip() - xvalue = str(self.volGraphHeightrange.text()).strip() - yvalue = str(self.volGraphIntensityRange.text()).strip() - figpath = str(self.volGraphPath.text()).strip() - figfile = str(self.volGraphPrefix.text()).strip() - - if channelList != "": - if not isIntList(channelList): - self.console.append("Invalid value '%s' for 'Graphics:ChannelList'" %(channelList)) - return 0 - - if xvalue != "": - if not isFloatRange(xvalue): - self.console.append("Invalid value '%s' for 'Graphics:Height-Range'" %(xvalue)) - return 0 - - if yvalue != "": - if not isFloatRange(yvalue): - self.console.append("Invalid value '%s' for 'Graphics:Amplitude-Range'" %(yvalue)) - return 0 - - - if channelList: - opObj.addParameter(name='channelList', value=channelList, format='intlist') - - if xvalue: - xvalueList = xvalue.split(',') - - opObj.addParameter(name='xmin', value=xvalueList[0], format='float') - opObj.addParameter(name='xmax', value=xvalueList[1], format='float') - - if yvalue: - yvalueList = yvalue.split(",") - - opObj.addParameter(name='ymin', value=yvalueList[0], format='int') - opObj.addParameter(name='ymax', value=yvalueList[1], format='int') - - plot_type = self.volComScopeType.currentIndex() - - if plot_type == 0: - opObj.addParameter(name='type', value="iq") - if plot_type == 1: - opObj.addParameter(name='type', value="power") - - if self.volGraphCebSave.isChecked(): - checkPath = True - - opObj.addParameter(name='save', value='1', format='int') - opObj.addParameter(name='figpath', value=figpath, format='str') - - if figfile: - opObj.addParameter(name='figfile', value=value, format='str') - - if checkPath: - - if not figpath: - self.console.clear() - self.console.append("Graphic path should be defined") - return 0 - -# if os.path.isdir(figpath): -# self.console.clear() -# self.console.append("Graphic path does not exist, it has to be created") -# return 0 - - self.console.clear() - - # if something happend - parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage') - if parms_ok: - name_operation = 'VoltageWriter' - optype = 'other' - name_parameter1 = 'path' - name_parameter2 = 'blocksPerFile' - name_parameter3 = 'profilesPerBlock' - value1 = output_path - value2 = blocksperfile - value3 = profilesperblock - format = "int" - opObj = puObj.addOperation(name=name_operation, optype=optype) - opObj.addParameter(name=name_parameter1, value=value1) - opObj.addParameter(name=name_parameter2, value=value2, format=format) - opObj.addParameter(name=name_parameter3, value=value3, format=format) - - try: - self.refreshPUProperties(puObj) - except: - self.console.append("An error reading input parameters was found ...Check them!") - return 0 - - self.console.append("Save your project and press Play button to start signal processing") - - self._enable_play_button() - self._enable_save_button() - - return 1 - - @pyqtSignature("") - def on_volGraphClear_clicked(self): - - self.console.clear() - - """ - Voltage Graph - """ - @pyqtSignature("int") - def on_volGraphCebSave_stateChanged(self, p0): - """ - Check Box habilita ingresode del numero de Integraciones a realizar - """ - if p0 == 2: - self.volGraphPath.setEnabled(True) - self.volGraphPrefix.setEnabled(True) - self.volGraphToolPath.setEnabled(True) - - if p0 == 0: - self.volGraphPath.setEnabled(False) - self.volGraphPrefix.setEnabled(False) - self.volGraphToolPath.setEnabled(False) - - @pyqtSignature("") - def on_volGraphToolPath_clicked(self): - """ - Donde se guardan los DATOS - """ - save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.volGraphPath.setText(save_path) - - if not os.path.exists(save_path): - self.console.clear() - self.console.append("Set a valid path") - self.volGraphOk.setEnabled(False) - return - - @pyqtSignature("int") - def on_volGraphCebshow_stateChanged(self, p0): - """ - Check Box habilita ingresode del numero de Integraciones a realizar - """ - if p0 == 0: - - self.volGraphChannelList.setEnabled(False) - self.volGraphIntensityRange.setEnabled(False) - self.volGraphHeightrange.setEnabled(False) - if p0 == 2: - - self.volGraphChannelList.setEnabled(True) - self.volGraphIntensityRange.setEnabled(True) - self.volGraphHeightrange.setEnabled(True) - - """ - Spectra operation - """ - @pyqtSignature("int") - def on_specOpCebRadarfrequency_stateChanged(self, p0): - """ - Check Box habilita ingresode del numero de Integraciones a realizar - """ - if p0 == 2: - self.specOpRadarfrequency.setEnabled(True) - if p0 == 0: -# self.specOpRadarfrequency.clear() - self.specOpRadarfrequency.setEnabled(False) - - - @pyqtSignature("int") - def on_specOpCebCrossSpectra_stateChanged(self, p0): - """ - Habilita la opcion de a�adir el par�metro CrossSpectra a la Unidad de Procesamiento . - """ - if p0 == 2: - # self.specOpnFFTpoints.setEnabled(True) - self.specOpComCrossSpectra.setEnabled(True) - self.specOppairsList.setEnabled(True) - - if p0 == 0: - # self.specOpnFFTpoints.setEnabled(False) - self.specOpComCrossSpectra.setEnabled(False) - self.specOppairsList.setEnabled(False) - - @pyqtSignature("int") - def on_specOpCebChannel_stateChanged(self, p0): - """ - Habilita la opcion de a�adir el par�metro numero de Canales a la Unidad de Procesamiento . - """ - if p0 == 2: - self.specOpChannel.setEnabled(True) - self.specOpComChannel.setEnabled(True) - if p0 == 0: - self.specOpChannel.setEnabled(False) - self.specOpComChannel.setEnabled(False) - - @pyqtSignature("int") - def on_specOpCebHeights_stateChanged(self, p0): - """ - Habilita la opcion de a�adir el par�metro de alturas a la Unidad de Procesamiento . - """ - if p0 == 2: - self.specOpComHeights.setEnabled(True) - self.specOpHeights.setEnabled(True) - if p0 == 0: - self.specOpComHeights.setEnabled(False) - self.specOpHeights.setEnabled(False) - - - @pyqtSignature("int") - def on_specOpCebIncoherent_stateChanged(self, p0): - """ - Habilita la opcion de a�adir el par�metro integraciones incoherentes a la Unidad de Procesamiento . - """ - if p0 == 2: - self.specOpIncoherent.setEnabled(True) - if p0 == 0: - self.specOpIncoherent.setEnabled(False) - - @pyqtSignature("int") - def on_specOpCebRemoveDC_stateChanged(self, p0): - """ - Habilita la opcion de a�adir el par�metro remover DC a la Unidad de Procesamiento . - """ - if p0 == 2: - self.specOpComRemoveDC.setEnabled(True) - if p0 == 0: - self.specOpComRemoveDC.setEnabled(False) - - @pyqtSignature("int") - def on_specOpCebgetNoise_stateChanged(self, p0): - """ - Habilita la opcion de a�adir la estimacion de ruido a la Unidad de Procesamiento . - """ - if p0 == 2: - self.specOpgetNoise.setEnabled(True) - - if p0 == 0: - self.specOpgetNoise.setEnabled(False) - - @pyqtSignature("") - def on_specOpOk_clicked(self): - """ - AÑADE OPERACION SPECTRA - """ - - addFTP = False - checkPath = False - - self._disable_play_button() - self._disable_save_button() - - self.console.clear() - self.console.append("Checking input parameters:\n") - - projectObj = self.getSelectedProjectObj() - - if not projectObj: - self.console.append("Please select a project before update it") - return - - puObj = self.getSelectedItemObj() - - puObj.removeOperations() - - if self.specOpCebRadarfrequency.isChecked(): - value = str(self.specOpRadarfrequency.text()) - format = 'float' - name_operation = 'setRadarFrequency' - name_parameter = 'frequency' - - if not isFloat(value): - self.console.clear() - self.console.append("Invalid value [%s] for '%s'" %(value, name_parameter)) - return 0 - - radarfreq = float(value)*1e6 - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter, value=radarfreq, format=format) - - inputId = puObj.getInputId() - inputPuObj = projectObj.getProcUnitObj(inputId) - - if inputPuObj.datatype == 'Voltage' or inputPuObj.datatype == 'USRP': - - value = str(self.specOpnFFTpoints.text()) - - if not isInt(value): - self.console.append("Invalid value [%s] for '%s'" %(value, 'nFFTPoints')) - return 0 - - puObj.addParameter(name='nFFTPoints', value=value, format='int') - - value = str(self.specOpProfiles.text()) - if not isInt(value): - self.console.append("Please write a value on Profiles field") - else: - puObj.addParameter(name='nProfiles', value=value, format='int') - - value = str(self.specOpippFactor.text()) - if not isInt(value): - self.console.append("Please write a value on IppFactor field") - else: - puObj.addParameter(name='ippFactor' , value=value , format='int') - - if self.specOpCebCrossSpectra.isChecked(): - name_parameter = 'pairsList' - format = 'pairslist' - value = str(self.specOppairsList.text()) - - if not isPairList(value): - self.console.append("Invalid value [%s] for '%s'" %(value, name_parameter)) - return 0 - - puObj.addParameter(name=name_parameter, value=value, format=format) - - if self.specOpCebHeights.isChecked(): - value = str(self.specOpHeights.text()) - - if not isFloatRange(value): - self.console.append("Invalid value [%s] for Height range" %value) - return 0 - - valueList = value.split(',') - value0 = valueList[0] - value1 = valueList[1] - - if self.specOpComHeights.currentIndex() == 0: - name_operation = 'selectHeights' - name_parameter1 = 'minHei' - name_parameter2 = 'maxHei' - else: - name_operation = 'selectHeightsByIndex' - name_parameter1 = 'minIndex' - name_parameter2 = 'maxIndex' - - format = 'float' - - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter1, value=value0, format=format) - opObj.addParameter(name=name_parameter2, value=value1, format=format) - - if self.specOpCebChannel.isChecked(): - - if self.specOpComChannel.currentIndex() == 0: - name_operation = "selectChannels" - name_parameter = 'channelList' - else: - name_operation = "selectChannelsByIndex" - name_parameter = 'channelIndexList' - - format = 'intlist' - value = str(self.specOpChannel.text()) - - if not isIntList(value): - self.console.append("Invalid value [%s] for '%s'" %(value, name_parameter)) - return 0 - - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.specOpCebIncoherent.isChecked(): - - name_operation = 'IncohInt' - optype = 'other' - - if self.specOpCobIncInt.currentIndex() == 0: - name_parameter = 'timeInterval' - format = 'float' - else: - name_parameter = 'n' - format = 'int' - - value = str(self.specOpIncoherent.text()) - - if not isFloat(value): - self.console.append("Invalid value [%s] for '%s'" %(value, name_parameter)) - return 0 - - opObj = puObj.addOperation(name=name_operation, optype=optype) - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.specOpCebRemoveDC.isChecked(): - name_operation = 'removeDC' - name_parameter = 'mode' - format = 'int' - - if self.specOpComRemoveDC.currentIndex() == 0: - value = 1 - else: - value = 2 - - opObj = puObj.addOperation(name=name_operation) - opObj.addParameter(name=name_parameter, value=value, format=format) - - if self.specOpCebRemoveInt.isChecked(): - name_operation = 'removeInterference' - opObj = puObj.addOperation(name=name_operation) - - - if self.specOpCebgetNoise.isChecked(): - value = str(self.specOpgetNoise.text()) - valueList = value.split(',') - format = 'float' - name_operation = "getNoise" - opObj = puObj.addOperation(name=name_operation) - - if not value == '': - valueList = value.split(',') - length = len(valueList) - if length == 1: - try: - value1 = float(valueList[0]) - except: - self.console.clear() - self.console.append("Please Write correct parameter Get Noise") - return 0 - name1 = 'minHei' - opObj.addParameter(name=name1, value=value1, format=format) - elif length == 2: - try: - value1 = float(valueList[0]) - value2 = float(valueList[1]) - except: - self.console.clear() - self.console.append("Please Write corrects parameter Get Noise") - return 0 - name1 = 'minHei' - name2 = 'maxHei' - opObj.addParameter(name=name1, value=value1, format=format) - opObj.addParameter(name=name2, value=value2, format=format) - - elif length == 3: - try: - value1 = float(valueList[0]) - value2 = float(valueList[1]) - value3 = float(valueList[2]) - except: - self.console.clear() - self.console.append("Please Write corrects parameter Get Noise") - return 0 - name1 = 'minHei' - name2 = 'maxHei' - name3 = 'minVel' - opObj.addParameter(name=name1, value=value1, format=format) - opObj.addParameter(name=name2, value=value2, format=format) - opObj.addParameter(name=name3, value=value3, format=format) - - elif length == 4: - try: - value1 = float(valueList[0]) - value2 = float(valueList[1]) - value3 = float(valueList[2]) - value4 = float(valueList[3]) - except: - self.console.clear() - self.console.append("Please Write corrects parameter Get Noise") - return 0 - name1 = 'minHei' - name2 = 'maxHei' - name3 = 'minVel' - name4 = 'maxVel' - opObj.addParameter(name=name1, value=value1, format=format) - opObj.addParameter(name=name2, value=value2, format=format) - opObj.addParameter(name=name3, value=value3, format=format) - opObj.addParameter(name=name4, value=value4, format=format) - - elif length > 4: - self.console.clear() - self.console.append("Get Noise Operation only accepts 4 parameters") - return 0 - - channelList = str(self.specGgraphChannelList.text()).strip() - vel_range = str(self.specGgraphFreq.text()).strip() - hei_range = str(self.specGgraphHeight.text()).strip() - db_range = str(self.specGgraphDbsrange.text()).strip() - - trange = str(self.specGgraphTminTmax.text()).strip() - magrange = str(self.specGgraphmagnitud.text()).strip() - phaserange = str(self.specGgraphPhase.text()).strip() - timerange = str(self.specGgraphTimeRange.text()).strip() - - figpath = str(self.specGraphPath.text()).strip() - figfile = str(self.specGraphPrefix.text()).strip() - - try: - wrperiod = int(str(self.specGgraphftpratio.text()).strip()) - except: - wrperiod = None - - #-----Spectra Plot----- - if self.specGraphCebSpectraplot.isChecked() or self.specGraphSaveSpectra.isChecked(): - - opObj = puObj.addOperation(name='SpectraPlot', optype='other') - opObj.addParameter(name='id', value=opObj.id, format='int') - - if channelList: - - if not isList(channelList): - self.console.append("Invalid value [%s] for 'Graphic:ChannelList" %(channelList)) - return 0 - - opObj.addParameter(name='channelList', value=channelList, format='intlist') - - if vel_range: - - if not isFloatRange(vel_range): - self.console.append("Invalid value [%s] for 'Graphic:Velocity-Range" %(vel_range)) - return 0 - - xvalueList = vel_range.split(',') - value1 = float(xvalueList[0]) - value2 = float(xvalueList[1]) - - opObj.addParameter(name='xmin', value=value1, format='float') - opObj.addParameter(name='xmax', value=value2, format='float') - - if hei_range: - - if not isFloatRange(hei_range): - self.console.append("Invalid value [%s] for 'Graphic:Height-Range" %(hei_range)) - return 0 - - yvalueList = hei_range.split(",") - value1 = float(yvalueList[0]) - value2 = float(yvalueList[1]) - - opObj.addParameter(name='ymin', value=value1, format='float') - opObj.addParameter(name='ymax', value=value2, format='float') - - if db_range: - - if not isFloatRange(db_range): - self.console.append("Invalid value [%s] for 'Graphic:dB-Range" %(db_range)) - return 0 - - zvalueList = db_range.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='zmin', value=value1, format='float') - opObj.addParameter(name='zmax', value=value2, format='float') - - if not self.specGraphCebSpectraplot.isChecked(): - - opObj.addParameter(name='show', value=0 , format='bool') - - if self.specGraphSaveSpectra.isChecked(): - - checkPath = True - opObj.addParameter(name='save', value=1 , format='bool') - opObj.addParameter(name='figpath', value=figpath, format='str') - if figfile: - opObj.addParameter(name='figfile', value=figfile, format='str') - if wrperiod: - opObj.addParameter(name='wr_period', value=wrperiod,format='int') - - if self.specGraphftpSpectra.isChecked(): - - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - if self.specGraphCebCrossSpectraplot.isChecked() or self.specGraphSaveCross.isChecked(): - - opObj = puObj.addOperation(name='CrossSpectraPlot', optype='other') - opObj.addParameter(name='id', value=opObj.id, format='int') - - if vel_range: - - if not isFloatRange(vel_range): - self.console.append("Invalid value [%s] for 'Graphic:Velocity-Range" %(vel_range)) - return 0 - - xvalueList = vel_range.split(',') - value1 = float(xvalueList[0]) - value2 = float(xvalueList[1]) - - opObj.addParameter(name='xmin', value=value1, format='float') - opObj.addParameter(name='xmax', value=value2, format='float') - - if hei_range: - - if not isFloatRange(hei_range): - self.console.append("Invalid value [%s] for 'Graphic:Height-Range" %(hei_range)) - return 0 - - yvalueList = hei_range.split(",") - value1 = float(yvalueList[0]) - value2 = float(yvalueList[1]) - - opObj.addParameter(name='ymin', value=value1, format='float') - opObj.addParameter(name='ymax', value=value2, format='float') - - if db_range: - - if not isFloatRange(db_range): - self.console.append("Invalid value [%s] for 'Graphic:dB-Range" %(db_range)) - return 0 - - zvalueList = db_range.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='zmin', value=value1, format='float') - opObj.addParameter(name='zmax', value=value2, format='float') - - if magrange: - - if not isFloatRange(magrange): - self.console.append("Invalid value [%s] for 'Graphic:Magnitud-Range" %(magrange)) - return 0 - - zvalueList = magrange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='coh_min', value=value1, format='float') - opObj.addParameter(name='coh_max', value=value2, format='float') - - if phaserange: - - if not isFloatRange(phaserange): - self.console.append("Invalid value [%s] for 'Graphic:Phase-Range" %(phaserange)) - return 0 - - zvalueList = phaserange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='phase_min', value=value1, format='float') - opObj.addParameter(name='phase_max', value=value2, format='float') - - if not self.specGraphCebCrossSpectraplot.isChecked(): - - opObj.addParameter(name='show', value=0 , format='bool') - - if self.specGraphSaveCross.isChecked(): - - checkPath = True - opObj.addParameter(name='save', value='1', format='bool') - opObj.addParameter(name='figpath', value=figpath, format='str') - if figfile: - opObj.addParameter(name='figfile', value=figfile, format='str') - if wrperiod: - opObj.addParameter(name='wr_period', value=wrperiod,format='int') - - if self.specGraphftpCross.isChecked(): - - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - if self.specGraphCebRTIplot.isChecked() or self.specGraphSaveRTIplot.isChecked(): - - opObj = puObj.addOperation(name='RTIPlot', optype='other') - opObj.addParameter(name='id', value=opObj.id, format='int') - - if channelList: - - if not isIntList(channelList): - self.console.append("Invalid value [%s] for 'Graphic:ChannelList" %(channelList)) - return 0 - - opObj.addParameter(name='channelList', value=channelList, format='intlist') - - if trange: - - if not isFloatRange(trange): - self.console.append("Invalid value [%s] for 'Graphic:Time-Range" %(trange)) - return 0 - - zvalueList = trange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='xmin', value=value1, format='float') - opObj.addParameter(name='xmax', value=value2, format='float') - - if timerange: - try: - timerange = int(timerange) - except: - return 0 - opObj.addParameter(name='timerange', value=timerange, format='int') - - if hei_range: - - if not isFloatRange(hei_range): - self.console.append("Invalid value [%s] for 'Graphic:Height-Range" %(hei_range)) - return 0 - - yvalueList = hei_range.split(",") - value1 = float(yvalueList[0]) - value2 = float(yvalueList[1]) - - opObj.addParameter(name='ymin', value=value1, format='float') - opObj.addParameter(name='ymax', value=value2, format='float') - - if db_range: - - if not isFloatRange(db_range): - self.console.append("Invalid value [%s] for 'Graphic:dB-Range" %(db_range)) - return 0 - - zvalueList = db_range.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='zmin', value=value1, format='float') - opObj.addParameter(name='zmax', value=value2, format='float') - - if not self.specGraphCebRTIplot.isChecked(): - - opObj.addParameter(name='show', value=0 , format='bool') - - if self.specGraphSaveRTIplot.isChecked(): - - checkPath = True - opObj.addParameter(name='save', value='1', format='bool') - opObj.addParameter(name='figpath', value=figpath, format='str') - if figfile: - opObj.addParameter(name='figfile', value=value, format='str') - if wrperiod: - opObj.addParameter(name='wr_period', value=wrperiod,format='int') - - if self.specGraphftpRTIplot.isChecked(): - - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - if self.specGraphCebCoherencmap.isChecked() or self.specGraphSaveCoherencemap.isChecked(): - - opObj = puObj.addOperation(name='CoherenceMap', optype='other') - opObj.addParameter(name='id', value=opObj.id, format='int') - - if trange: - - if not isFloatRange(trange): - self.console.append("Invalid value [%s] for 'Graphic:Time-Range" %(trange)) - return 0 - - zvalueList = trange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='xmin', value=value1, format='float') - opObj.addParameter(name='xmax', value=value2, format='float') - - if hei_range: - - if not isFloatRange(hei_range): - self.console.append("Invalid value [%s] for 'Graphic:Height-Range" %(hei_range)) - return 0 - - yvalueList = hei_range.split(",") - value1 = float(yvalueList[0]) - value2 = float(yvalueList[1]) - - opObj.addParameter(name='ymin', value=value1, format='float') - opObj.addParameter(name='ymax', value=value2, format='float') - - if magrange: - - if not isFloatRange(magrange): - self.console.append("Invalid value [%s] for 'Graphic:Magnitud-Range" %(magrange)) - return 0 - - zvalueList = magrange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='zmin', value=value1, format='float') - opObj.addParameter(name='zmax', value=value2, format='float') - - if phaserange: - - if not isFloatRange(phaserange): - self.console.append("Invalid value [%s] for 'Graphic:Phase-Range" %(phaserange)) - return 0 - - zvalueList = phaserange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='phase_min', value=value1, format='float') - opObj.addParameter(name='phase_max', value=value2, format='float') - - if not self.specGraphCebCoherencmap.isChecked(): - opObj.addParameter(name='show', value=0 , format='bool') - - if self.specGraphSaveCoherencemap.isChecked(): - checkPath = True - opObj.addParameter(name='save', value='1', format='bool') - opObj.addParameter(name='figpath', value=figpath, format='str') - if figfile: - opObj.addParameter(name='figfile', value=value, format='str') - if wrperiod: - opObj.addParameter(name='wr_period', value=wrperiod,format='int') - - if self.specGraphftpCoherencemap.isChecked(): - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - if self.specGraphPowerprofile.isChecked() or self.specGraphSavePowerprofile.isChecked(): - - opObj = puObj.addOperation(name='PowerProfilePlot', optype='other') - opObj.addParameter(name='id', value=opObj.id, format='int') - - if channelList: - - if not isList(channelList): - self.console.append("Invalid value [%s] for 'Graphic:ChannelList" %(channelList)) - return 0 - - opObj.addParameter(name='channelList', value=channelList, format='intlist') - - if hei_range: - - if not isFloatRange(hei_range): - self.console.append("Invalid value [%s] for 'Graphic:Height-Range" %(hei_range)) - return 0 - - yvalueList = hei_range.split(",") - value1 = float(yvalueList[0]) - value2 = float(yvalueList[1]) - - opObj.addParameter(name='ymin', value=value1, format='float') - opObj.addParameter(name='ymax', value=value2, format='float') - - if db_range: - - if not isFloatRange(db_range): - self.console.append("Invalid value [%s] for 'Graphic:dB-Range" %(db_range)) - return 0 - - zvalueList = db_range.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='xmin', value=value1, format='float') - opObj.addParameter(name='xmax', value=value2, format='float') - - if not self.specGraphPowerprofile.isChecked(): - opObj.addParameter(name='show', value=0 , format='bool') - - if self.specGraphSavePowerprofile.isChecked(): - checkPath = True - opObj.addParameter(name='save', value='1', format='bool') - opObj.addParameter(name='figpath', value=figpath, format='str') - if figfile: - opObj.addParameter(name='figfile', value=value, format='str') - if wrperiod: - opObj.addParameter(name='wr_period', value=wrperiod,format='int') - - if self.specGraphftpPowerprofile.isChecked(): - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - # rti noise - - if self.specGraphCebRTInoise.isChecked() or self.specGraphSaveRTInoise.isChecked(): - - opObj = puObj.addOperation(name='Noise', optype='other') - opObj.addParameter(name='id', value=opObj.id, format='int') - - if channelList: - - if not isList(channelList): - self.console.append("Invalid value [%s] for 'Graphic:ChannelList" %(channelList)) - return 0 - - opObj.addParameter(name='channelList', value=channelList, format='intlist') - - if trange: - - if not isFloatRange(trange): - self.console.append("Invalid value [%s] for 'Graphic:Time-Range" %(trange)) - return 0 - - zvalueList = trange.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='xmin', value=value1, format='float') - opObj.addParameter(name='xmax', value=value2, format='float') - - if db_range: - - if not isFloatRange(db_range): - self.console.append("Invalid value [%s] for 'Graphic:dB-Range" %(db_range)) - return 0 - - zvalueList = db_range.split(",") - value1 = float(zvalueList[0]) - value2 = float(zvalueList[1]) - - opObj.addParameter(name='ymin', value=value1, format='float') - opObj.addParameter(name='ymax', value=value2, format='float') - - if not self.specGraphCebRTInoise.isChecked(): - opObj.addParameter(name='show', value=0 , format='bool') - - if self.specGraphSaveRTInoise.isChecked(): - checkPath = True - opObj.addParameter(name='save', value='1', format='bool') - opObj.addParameter(name='figpath', value=figpath, format='str') - if figfile: - opObj.addParameter(name='figfile', value=value, format='str') - if wrperiod: - opObj.addParameter(name='wr_period', value=wrperiod,format='int') - - # test_ftp - if self.specGraphftpRTInoise.isChecked(): - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - if checkPath: - if not figpath: - self.console.clear() - self.console.append("Graphic path should be defined") - return 0 - - if addFTP and not figpath: - self.console.clear() - self.console.append("You have to save the plots before sending them to FTP Server") - return 0 - - self.console.clear() - -# if something happend - parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra') - if parms_ok: - opObj = puObj.addOperation(name='SpectraWriter', optype='other') - opObj.addParameter(name='path', value=output_path) - opObj.addParameter(name='blocksPerFile', value=blocksperfile, format='int') - - try: - self.refreshPUProperties(puObj) - except: - self.console.append("An error reading input parameters was found ... Check them!") - return 0 - - self.console.append("Save your project and press Play button to start signal processing") - - self._enable_play_button() - self._enable_save_button() - - return 1 - - - @pyqtSignature("") - def on_specGraphClear_clicked(self): - - self.console.clear() - - """ - Spectra Graph - """ - @pyqtSignature("int") - def on_specGraphCebSpectraplot_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - - @pyqtSignature("int") - def on_specGraphCebCrossSpectraplot_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - @pyqtSignature("int") - def on_specGraphCebRTIplot_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - - @pyqtSignature("int") - def on_specGraphCebRTInoise_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - - @pyqtSignature("int") - def on_specGraphCebCoherencmap_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - @pyqtSignature("int") - def on_specGraphPowerprofile_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - @pyqtSignature("int") - def on_specGraphPhase_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - - @pyqtSignature("int") - def on_specGraphSaveSpectra_stateChanged(self, p0): - """ - """ - self.__checkSpecGraphFilters() - self.__checkSpecGraphSaving() - - @pyqtSignature("int") - def on_specGraphSaveCross_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - self.__checkSpecGraphSaving() - - @pyqtSignature("int") - def on_specGraphSaveRTIplot_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - self.__checkSpecGraphSaving() - - @pyqtSignature("int") - def on_specGraphSaveRTInoise_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - self.__checkSpecGraphSaving() - - @pyqtSignature("int") - def on_specGraphSaveCoherencemap_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - self.__checkSpecGraphSaving() - - @pyqtSignature("int") - def on_specGraphSavePowerprofile_stateChanged(self, p0): - - self.__checkSpecGraphFilters() - self.__checkSpecGraphSaving() - - @pyqtSignature("int") - def on_specGraphftpSpectra_stateChanged(self, p0): - """ - """ - self.__checkSpecGraphFTP() - - - @pyqtSignature("int") - def on_specGraphftpCross_stateChanged(self, p0): - - self.__checkSpecGraphFTP() - - @pyqtSignature("int") - def on_specGraphftpRTIplot_stateChanged(self, p0): - - self.__checkSpecGraphFTP() - - @pyqtSignature("int") - def on_specGraphftpRTInoise_stateChanged(self, p0): - - self.__checkSpecGraphFTP() - - @pyqtSignature("int") - def on_specGraphftpCoherencemap_stateChanged(self, p0): - - self.__checkSpecGraphFTP() - - @pyqtSignature("int") - def on_specGraphftpPowerprofile_stateChanged(self, p0): - - self.__checkSpecGraphFTP() - - @pyqtSignature("") - def on_specGraphToolPath_clicked(self): - """ - """ - save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.specGraphPath.setText(save_path) - if not os.path.exists(save_path): - self.console.clear() - self.console.append("Write a valid path") - return - - @pyqtSignature("") - def on_specHeisGraphToolPath_clicked(self): - """ - """ - save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.specHeisGraphPath.setText(save_path) - if not os.path.exists(save_path): - self.console.clear() - self.console.append("Write a valid path") - return - - @pyqtSignature("int") - def on_specHeisOpCebIncoherent_stateChanged(self, p0): - """ - Habilita la opcion de a�adir el par�metro integraciones incoherentes a la Unidad de Procesamiento . - """ - if p0 == 2: - self.specHeisOpIncoherent.setEnabled(True) - self.specHeisOpCobIncInt.setEnabled(True) - if p0 == 0: - self.specHeisOpIncoherent.setEnabled(False) - self.specHeisOpCobIncInt.setEnabled(False) - - @pyqtSignature("") - def on_specHeisOpOk_clicked(self): - """ - AÑADE OPERACION SPECTRAHEIS - """ - addFTP = False - checkPath = False - - self._disable_play_button() - self._disable_save_button() - - self.console.clear() - self.console.append("Checking input parameters ...") - - puObj = self.getSelectedItemObj() - puObj.removeOperations() - - if self.specHeisOpCebIncoherent.isChecked(): - value = str(self.specHeisOpIncoherent.text()) - name_operation = 'IncohInt4SpectraHeis' - optype = 'other' - - name_parameter = 'timeInterval' - format = 'float' - - if self.specOpCobIncInt.currentIndex() == 0: - name_parameter = 'timeInterval' - format = 'float' - - if not isFloat(value): - self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter)) - return 0 - - opObj = puObj.addOperation(name=name_operation, optype=optype) - - if not opObj.addParameter(name=name_parameter, value=value, format=format): - self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter)) - return 0 - - channelList = str(self.specHeisGgraphChannelList.text()) - freq_range = str(self.specHeisGgraphXminXmax.text()) - power_range = str(self.specHeisGgraphYminYmax.text()) - time_range = str(self.specHeisGgraphTminTmax.text()) - timerange = str(self.specHeisGgraphTimeRange.text()) - - if self.specHeisGraphCebSpectraplot.isChecked(): - - name_operation = 'SpectraHeisScope' - optype = 'other' - opObj = puObj.addOperation(name=name_operation, optype=optype) - - name_parameter = 'id' - format = 'int' - value = opObj.id - - if not opObj.addParameter(name=name_parameter, value=value, format=format): - self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter)) - return 0 - - if not (channelList == ''): - name_parameter = 'channelList' - format = 'intlist' - - if not isList(channelList): - self.console.append("Invalid value '%s' for '%s'" %(channelList, name_parameter)) - return 0 - - opObj.addParameter(name=name_parameter, value=channelList, format=format) - - if not freq_range == '': - xvalueList = freq_range.split(',') - - if len(xvalueList) != 2: - self.console.append("Invalid value '%s' for '%s'" %(freq_range, "xrange")) - return 0 - - value1 = xvalueList[0] - value2 = xvalueList[1] - - if not isFloat(value1) or not isFloat(value2): - self.console.append("Invalid value '%s' for '%s'" %(freq_range, "xrange")) - return 0 - - name1 = 'xmin' - name2 = 'xmax' - format = 'float' - - opObj.addParameter(name=name1, value=value1, format=format) - opObj.addParameter(name=name2, value=value2, format=format) - - if not power_range == '': - yvalueList = power_range.split(",") - - if len(yvalueList) != 2: - self.console.append("Invalid value '%s' for '%s'" %(power_range, "xrange")) - return 0 - - value1 = yvalueList[0] - value2 = yvalueList[1] - - if not isFloat(value1) or not isFloat(value2): - self.console.append("Invalid value '%s' for '%s'" %(power_range, "yrange")) - return 0 - - name1 = 'ymin' - name2 = 'ymax' - format = 'float' - opObj.addParameter(name=name1, value=value1, format=format) - opObj.addParameter(name=name2, value=value2, format=format) - - if self.specHeisGraphSaveSpectra.isChecked(): - checkPath = True - name_parameter1 = 'save' - name_parameter2 = 'figpath' - name_parameter3 = 'figfile' - value1 = '1' - value2 = str(self.specHeisGraphPath.text()) - value3 = str(self.specHeisGraphPrefix.text()) - format1 = 'bool' - format2 = 'str' - opObj.addParameter(name=name_parameter1, value=value1 , format=format1) - opObj.addParameter(name=name_parameter2, value=value2, format=format2) - if not value3 == "": - try: - value3 = str(self.specHeisGraphPrefix.text()) - except: - self.console.clear() - self.console.append("Please Write prefix") - return 0 - opObj.addParameter(name='figfile', value=str(self.specHeisGraphPrefix.text()), format='str') - - # opObj.addParameter(name=name_parameter3, value=value3, format=format2) - # opObj.addParameter(name='wr_period', value='5',format='int') - - if self.specHeisGraphftpSpectra.isChecked(): - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - if self.specHeisGraphCebRTIplot.isChecked(): - name_operation = 'RTIfromSpectraHeis' - optype = 'other' - - name_parameter = 'id' - format = 'int' - - opObj = puObj.addOperation(name=name_operation, optype=optype) - value = opObj.id - opObj.addParameter(name=name_parameter, value=value, format=format) - - if not channelList == '': - opObj.addParameter(name='channelList', value=channelList, format='intlist') - - if not time_range == '': - xvalueList = time_range.split(',') - try: - value = float(xvalueList[0]) - value = float(xvalueList[1]) - except: - return 0 - format = 'float' - opObj.addParameter(name='xmin', value=xvalueList[0], format=format) - opObj.addParameter(name='xmax', value=xvalueList[1], format=format) - - if not timerange == '': - format = 'int' - try: - timerange = int(timerange) - except: - return 0 - opObj.addParameter(name='timerange', value=timerange, format=format) - - - if not power_range == '': - yvalueList = power_range.split(",") - try: - value = float(yvalueList[0]) - value = float(yvalueList[1]) - except: - return 0 - - format = 'float' - opObj.addParameter(name='ymin', value=yvalueList[0], format=format) - opObj.addParameter(name='ymax', value=yvalueList[1], format=format) - - if self.specHeisGraphSaveRTIplot.isChecked(): - checkPath = True - opObj.addParameter(name='save', value='1', format='bool') - opObj.addParameter(name='figpath', value=str(self.specHeisGraphPath.text()), format='str') - value = str(self.specHeisGraphPrefix.text()) - if not value == "": - try: - value = str(self.specHeisGraphPrefix.text()) - except: - self.console.clear() - self.console.append("Please Write prefix") - return 0 - opObj.addParameter(name='figfile', value=value, format='str') - - # test_ftp - if self.specHeisGraphftpRTIplot.isChecked(): - opObj.addParameter(name='ftp', value='1', format='int') - self.addFTPConf2Operation(puObj, opObj) - addFTP = True - - localfolder = None - if checkPath: - localfolder = str(self.specHeisGraphPath.text()) - if localfolder == '': - self.console.clear() - self.console.append("Graphic path should be defined") - return 0 - - if addFTP and not localfolder: - self.console.clear() - self.console.append("You should save plots before send them to FTP Server") - return 0 - - # if something happened - parms_ok, output_path, blocksperfile, metadata_file = self.checkInputsPUSave(datatype='SpectraHeis') - if parms_ok: - name_operation = 'FitsWriter' - optype = 'other' - name_parameter1 = 'path' - name_parameter2 = 'dataBlocksPerFile' - name_parameter3 = 'metadatafile' - value1 = output_path - value2 = blocksperfile - value3 = metadata_file - format2 = "int" - format3 = "str" - opObj = puObj.addOperation(name=name_operation, optype=optype) - - opObj.addParameter(name=name_parameter1, value=value1) - - if blocksperfile: - opObj.addParameter(name=name_parameter2, value=value2, format=format2) - - if metadata_file: - opObj.addParameter(name=name_parameter3, value=value3, format=format3) - - self.console.clear() - try: - self.refreshPUProperties(puObj) - except: - self.console.append("An error reading input parameters was found ... Check them!") - return 0 - - self.console.append("Save your project and press Play button to start signal processing") - - self._enable_save_button() - self._enable_play_button() - - return 1 - - @pyqtSignature("") - def on_specHeisGraphClear_clicked(self): - - self.console.clear() - - @pyqtSignature("int") - def on_specHeisGraphCebSpectraplot_stateChanged(self, p0): - - if p0 == 2: - self.specHeisGgraphChannelList.setEnabled(True) - self.specHeisGgraphXminXmax.setEnabled(True) - self.specHeisGgraphYminYmax.setEnabled(True) - if p0 == 0: - self.specHeisGgraphXminXmax.setEnabled(False) - self.specHeisGgraphYminYmax.setEnabled(False) - - @pyqtSignature("int") - def on_specHeisGraphCebRTIplot_stateChanged(self, p0): - - if p0 == 2: - self.specHeisGgraphChannelList.setEnabled(True) - self.specHeisGgraphTminTmax.setEnabled(True) - self.specHeisGgraphYminYmax.setEnabled(True) - self.specHeisGgraphTimeRange.setEnabled(True) - - if p0 == 0: - self.specHeisGgraphTminTmax.setEnabled(False) - self.specHeisGgraphYminYmax.setEnabled(False) - self.specHeisGgraphTimeRange.setEnabled(False) - - @pyqtSignature("int") - def on_specHeisGraphSaveSpectra_stateChanged(self, p0): - """ - """ - if p0 == 2: - self.specHeisGraphPath.setEnabled(True) - self.specHeisGraphPrefix.setEnabled(True) - self.specHeisGraphToolPath.setEnabled(True) - if p0 == 0: - self.specHeisGraphPath.setEnabled(False) - self.specHeisGraphPrefix.setEnabled(False) - self.specHeisGraphToolPath.setEnabled(False) - - @pyqtSignature("int") - def on_specHeisGraphSaveRTIplot_stateChanged(self, p0): - if p0 == 2: - self.specHeisGraphPath.setEnabled(True) - self.specHeisGraphPrefix.setEnabled(True) - self.specHeisGraphToolPath.setEnabled(True) - - @pyqtSignature("int") - def on_specHeisGraphftpSpectra_stateChanged(self, p0): - """ - """ - if p0 == 2: - self.specHeisGgraphftpratio.setEnabled(True) - - if p0 == 0: - self.specHeisGgraphftpratio.setEnabled(False) - - @pyqtSignature("int") - def on_specHeisGraphftpRTIplot_stateChanged(self, p0): - if p0 == 2: - self.specHeisGgraphftpratio.setEnabled(True) - - def __checkSpecGraphSaving(self): - - enable = False - - if self.specGraphSaveSpectra.checkState(): - enable = True - - if self.specGraphSaveCross.checkState(): - enable = True - - if self.specGraphSaveRTIplot.checkState(): - enable = True - - if self.specGraphSaveCoherencemap.checkState(): - enable = True - - if self.specGraphSavePowerprofile.checkState(): - enable = True - - if self.specGraphSaveRTInoise.checkState(): - enable = True - - self.specGraphPath.setEnabled(enable) - self.specGraphPrefix.setEnabled(enable) - self.specGraphToolPath.setEnabled(enable) - - self.specGgraphftpratio.setEnabled(enable) - - def __checkSpecGraphFTP(self): - - enable = False - - if self.specGraphftpSpectra.checkState(): - enable = True - - if self.specGraphftpCross.checkState(): - enable = True - - if self.specGraphftpRTIplot.checkState(): - enable = True - - if self.specGraphftpCoherencemap.checkState(): - enable = True - - if self.specGraphftpPowerprofile.checkState(): - enable = True - - if self.specGraphftpRTInoise.checkState(): - enable = True - -# self.specGgraphftpratio.setEnabled(enable) - - def __checkSpecGraphFilters(self): - - freq = False - height = False - db = False - timerange = False - magnitud = False - phase = False - channelList = False - - if self.specGraphCebSpectraplot.checkState() or self.specGraphSaveSpectra.checkState(): - freq = True - height = True - db = True - channelList = True - - if self.specGraphCebCrossSpectraplot.checkState() or self.specGraphSaveCross.checkState(): - freq = True - height = True - db = True - magnitud = True - phase = True - - if self.specGraphCebRTIplot.checkState() or self.specGraphSaveRTIplot.checkState(): - height = True - db = True - timerange = True - channelList = True - - if self.specGraphCebCoherencmap.checkState() or self.specGraphSaveCoherencemap.checkState(): - height = True - timerange = True - magnitud = True - phase = True - - if self.specGraphPowerprofile.checkState() or self.specGraphSavePowerprofile.checkState(): - height = True - db = True - channelList = True - - if self.specGraphCebRTInoise.checkState() or self.specGraphSaveRTInoise.checkState(): - db = True - timerange = True - channelList = True - - - self.specGgraphFreq.setEnabled(freq) - self.specGgraphHeight.setEnabled(height) - self.specGgraphDbsrange.setEnabled(db) - self.specGgraphTminTmax.setEnabled(timerange) - self.specGgraphTimeRange.setEnabled(timerange) - - self.specGgraphmagnitud.setEnabled(magnitud) - self.specGgraphPhase.setEnabled(phase) - self.specGgraphChannelList.setEnabled(channelList) - - def __getParmsFromProjectWindow(self): - """ - Check Inputs Project: - - project_name - - datatype - - ext - - data_path - - readmode - - delay - - set - - walk - """ - parms_ok = True - - project_name = str(self.proName.text()) - - if project_name == '' or project_name == None: - outputstr = "Enter a project Name" - self.console.append(outputstr) - parms_ok = False - project_name = None - - description = str(self.proDescription.toPlainText()) - - datatype = str(self.proComDataType.currentText()) - - ext = str(self.proDataType.text()) - - dpath = str(self.proDataPath.text()) - - if dpath == '': - outputstr = 'Datapath is empty' - self.console.append(outputstr) - parms_ok = False - dpath = None - - if dpath != None: - if not os.path.isdir(dpath): - outputstr = 'Datapath (%s) does not exist' % dpath - self.console.append(outputstr) - parms_ok = False - dpath = None - - online = int(self.proComReadMode.currentIndex()) - - delay = None - if online==1: - try: - delay = int(str(self.proDelay.text())) - except: - outputstr = 'Delay value (%s) must be a integer number' %str(self.proDelay.text()) - self.console.append(outputstr) - parms_ok = False - - - set = None - value = str(self.proSet.text()) - try: - set = int(value) - except: - pass - - ippKm = None - - value = str(self.proIPPKm.text()) - - try: - ippKm = float(value) - except: - if datatype=="USRP": - outputstr = 'IPP value "%s" must be a float number' % str(self.proIPPKm.text()) - self.console.append(outputstr) - parms_ok = False - - walk = int(self.proComWalk.currentIndex()) - expLabel = str(self.proExpLabel.text()) - - startDate = str(self.proComStartDate.currentText()).strip() - endDate = str(self.proComEndDate.currentText()).strip() - - if not startDate: - parms_ok = False - - if not endDate: - parms_ok = False - -# startDateList = startDate.split("/") -# endDateList = endDate.split("/") -# -# startDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2])) -# endDate = datetime.date(int(endDateList[0]), int(endDateList[1]), int(endDateList[2])) - - startTime = self.proStartTime.time() - endTime = self.proEndTime.time() - - startTime = str(startTime.toString("H:m:s")) - endTime = str(endTime.toString("H:m:s")) - - projectParms = ProjectParms() - - projectParms.name = project_name - projectParms.description = description - projectParms.datatype = datatype - projectParms.ext = ext - projectParms.dpath = dpath - projectParms.online = online - projectParms.startDate = startDate - projectParms.endDate = endDate - projectParms.startTime = startTime - projectParms.endTime = endTime - projectParms.delay = delay - projectParms.walk = walk - projectParms.expLabel = expLabel - projectParms.set = set - projectParms.ippKm = ippKm - projectParms.parmsOk = parms_ok - - return projectParms - - - def __getParmsFromProjectObj(self, projectObjView): - - parms_ok = True - - project_name, description = projectObjView.name, projectObjView.description - - readUnitObj = projectObjView.getReadUnitObj() - datatype = readUnitObj.datatype - - operationObj = readUnitObj.getOperationObj(name='run') - - dpath = operationObj.getParameterValue(parameterName='path') - startDate = operationObj.getParameterValue(parameterName='startDate') - endDate = operationObj.getParameterValue(parameterName='endDate') - - startDate = startDate.strftime("%Y/%m/%d") - endDate = endDate.strftime("%Y/%m/%d") - - startTime = operationObj.getParameterValue(parameterName='startTime') - endTime = operationObj.getParameterValue(parameterName='endTime') - - startTime = startTime.strftime("%H:%M:%S") - endTime = endTime.strftime("%H:%M:%S") - - online = 0 - try: - online = operationObj.getParameterValue(parameterName='online') - except: - pass - - delay = '' - try: - delay = operationObj.getParameterValue(parameterName='delay') - except: - pass - - walk = 0 - try: - walk = operationObj.getParameterValue(parameterName='walk') - except: - pass - - set = '' - try: - set = operationObj.getParameterValue(parameterName='set') - except: - pass - - expLabel = '' - try: - expLabel = operationObj.getParameterValue(parameterName='expLabel') - except: - pass - - ippKm = '' - if datatype.lower() == 'usrp': - try: - ippKm = operationObj.getParameterValue(parameterName='ippKm') - except: - pass - - projectParms = ProjectParms() - - projectParms.name = project_name - projectParms.description = description - projectParms.datatype = datatype - projectParms.ext = None - projectParms.dpath = dpath - projectParms.online = online - projectParms.startDate = startDate - projectParms.endDate = endDate - projectParms.startTime = startTime - projectParms.endTime = endTime - projectParms.delay=delay - projectParms.walk=walk - projectParms.set=set - projectParms.ippKm=ippKm - projectParms.expLabel = expLabel - projectParms.parmsOk=parms_ok - - return projectParms - - def refreshProjectWindow(self, projectObjView): - - self.proOk.setEnabled(False) - - projectParms = self.__getParmsFromProjectObj(projectObjView) - - index = projectParms.getDatatypeIndex() - - self.proName.setText(projectParms.name) - self.proDescription.clear() - self.proDescription.append(projectParms.description) - - self.on_proComDataType_activated(index=index) - self.proDataPath.setText(projectParms.dpath) - self.proComDataType.setCurrentIndex(index) - self.proComReadMode.setCurrentIndex(projectParms.online) - self.proDelay.setText(str(projectParms.delay)) - self.proSet.setText(str(projectParms.set)) - self.proIPPKm.setText(str(projectParms.ippKm)) - self.proComWalk.setCurrentIndex(projectParms.walk) - self.proExpLabel.setText(str(projectParms.expLabel).strip()) - - self.on_proComReadMode_activated(projectParms.online) - self.on_proComWalk_activated(projectParms.walk) - - dateList = self.loadDays(data_path = projectParms.dpath, - ext = projectParms.getExt(), - walk = projectParms.walk, - expLabel = projectParms.expLabel) - - if not dateList: - return 0 - - try: - startDateIndex = dateList.index(projectParms.startDate) - except: - startDateIndex = 0 - - try: - endDateIndex = dateList.index(projectParms.endDate) - except: - endDateIndex = int(self.proComEndDate.count()-1) - - self.proComStartDate.setCurrentIndex(startDateIndex) - self.proComEndDate.setCurrentIndex(endDateIndex) - - startlist = projectParms.startTime.split(":") - endlist = projectParms.endTime.split(":") - - self.time.setHMS(int(startlist[0]), int(startlist[1]), int(startlist[2])) - self.proStartTime.setTime(self.time) - - self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2])) - self.proEndTime.setTime(self.time) - - self.proOk.setEnabled(True) - - return 1 - - def __refreshVoltageWindow(self, puObj): - - opObj = puObj.getOperationObj(name='setRadarFrequency') - if opObj == None: - self.volOpRadarfrequency.clear() - self.volOpCebRadarfrequency.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='frequency') - value = str(float(value)/1e6) - self.volOpRadarfrequency.setText(value) - self.volOpRadarfrequency.setEnabled(True) - self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="selectChannels") - - if opObj == None: - opObj = puObj.getOperationObj(name="selectChannelsByIndex") - - if opObj == None: - self.volOpChannel.clear() - self.volOpCebChannels.setCheckState(0) - else: - channelEnabled = False - try: - value = opObj.getParameterValue(parameterName='channelList') - value = str(value)[1:-1] - channelEnabled = True - channelMode = 0 - except: - pass - try: - value = opObj.getParameterValue(parameterName='channelIndexList') - value = str(value)[1:-1] - channelEnabled = True - channelMode = 1 - except: - pass - - if channelEnabled: - self.volOpChannel.setText(value) - self.volOpChannel.setEnabled(True) - self.volOpCebChannels.setCheckState(QtCore.Qt.Checked) - self.volOpComChannels.setCurrentIndex(channelMode) - - opObj = puObj.getOperationObj(name="selectHeights") - if opObj == None: - self.volOpHeights.clear() - self.volOpCebHeights.setCheckState(0) - else: - value1 = str(opObj.getParameterValue(parameterName='minHei')) - value2 = str(opObj.getParameterValue(parameterName='maxHei')) - value = value1 + "," + value2 - self.volOpHeights.setText(value) - self.volOpHeights.setEnabled(True) - self.volOpCebHeights.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="SplitProfiles") - if opObj == None: - self.volOpSplitter.clear() - self.volOpCebSplitter.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='n') - value = str(value) - self.volOpSplitter.setText(value) - self.volOpSplitter.setEnabled(True) - self.volOpCebSplitter.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="CombineProfiles") - if opObj == None: - self.volOpCombiner.clear() - self.volOpCebCombiner.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='n') - value = str(value) - self.volOpCombiner.setText(value) - self.volOpCombiner.setEnabled(True) - self.volOpCebCombiner.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="filterByHeights") - if opObj == None: - self.volOpFilter.clear() - self.volOpCebFilter.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='window') - value = str(value) - self.volOpFilter.setText(value) - self.volOpFilter.setEnabled(True) - self.volOpCebFilter.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="ProfileSelector") - if opObj == None: - self.volOpProfile.clear() - self.volOpCebProfile.setCheckState(0) - else: - for parmObj in opObj.getParameterObjList(): - - if parmObj.name == "profileList": - value = parmObj.getValue() - value = str(value)[1:-1] - self.volOpProfile.setText(value) - self.volOpProfile.setEnabled(True) - self.volOpCebProfile.setCheckState(QtCore.Qt.Checked) - self.volOpComProfile.setCurrentIndex(0) - - if parmObj.name == "profileRangeList": - value = parmObj.getValue() - value = str(value)[1:-1] - self.volOpProfile.setText(value) - self.volOpProfile.setEnabled(True) - self.volOpCebProfile.setCheckState(QtCore.Qt.Checked) - self.volOpComProfile.setCurrentIndex(1) - - if parmObj.name == "rangeList": - value = parmObj.getValue() - value = str(value)[1:-1] - self.volOpProfile.setText(value) - self.volOpProfile.setEnabled(True) - self.volOpCebProfile.setCheckState(QtCore.Qt.Checked) - self.volOpComProfile.setCurrentIndex(2) - - opObj = puObj.getOperationObj(name="Decoder") - self.volOpCode.setText("") - if opObj == None: - self.volOpCebDecodification.setCheckState(0) - else: - self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj('code') - - if parmObj == None: - self.volOpComCode.setCurrentIndex(0) - else: - - parmObj1 = opObj.getParameterObj('nCode') - parmObj2 = opObj.getParameterObj('nBaud') - - if parmObj1 == None or parmObj2 == None: - self.volOpComCode.setCurrentIndex(0) - else: - code = ast.literal_eval(str(parmObj.getValue())) - nCode = parmObj1.getValue() - nBaud = parmObj2.getValue() - - code = numpy.asarray(code).reshape((nCode, nBaud)).tolist() - - #User defined by default - self.volOpComCode.setCurrentIndex(13) - self.volOpCode.setText(str(code)) - - if nCode == 1: - if nBaud == 3: - self.volOpComCode.setCurrentIndex(1) - if nBaud == 4: - self.volOpComCode.setCurrentIndex(2) - if nBaud == 5: - self.volOpComCode.setCurrentIndex(3) - if nBaud == 7: - self.volOpComCode.setCurrentIndex(4) - if nBaud == 11: - self.volOpComCode.setCurrentIndex(5) - if nBaud == 13: - self.volOpComCode.setCurrentIndex(6) - - if nCode == 2: - if nBaud == 3: - self.volOpComCode.setCurrentIndex(7) - if nBaud == 4: - self.volOpComCode.setCurrentIndex(8) - if nBaud == 5: - self.volOpComCode.setCurrentIndex(9) - if nBaud == 7: - self.volOpComCode.setCurrentIndex(10) - if nBaud == 11: - self.volOpComCode.setCurrentIndex(11) - if nBaud == 13: - self.volOpComCode.setCurrentIndex(12) - - - opObj = puObj.getOperationObj(name="deFlip") - if opObj == None: - self.volOpFlip.clear() - self.volOpFlip.setEnabled(False) - self.volOpCebFlip.setCheckState(0) - else: - try: - value = opObj.getParameterValue(parameterName='channelList') - value = str(value)[1:-1] - except: - value = "" - - self.volOpFlip.setText(value) - self.volOpFlip.setEnabled(True) - self.volOpCebFlip.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="CohInt") - if opObj == None: - self.volOpCohInt.clear() - self.volOpCebCohInt.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='n') - self.volOpCohInt.setText(str(value)) - self.volOpCohInt.setEnabled(True) - self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name='Scope') - if opObj == None: - self.volGraphCebshow.setCheckState(0) - else: - self.volGraphCebshow.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='channelList') - - if parmObj == None: - self.volGraphChannelList.clear() - else: - value = parmObj.getValue() - value = str(value) - self.volGraphChannelList.setText(value) -# self.volOpChannel.setEnabled(True) - - parmObj1 = opObj.getParameterObj(parameterName='ymin') - parmObj2 = opObj.getParameterObj(parameterName='ymax') - - if parmObj1 == None or parmObj2 ==None: - self.volGraphIntensityRange.clear() - else: - value1 = parmObj1.getValue() - value1 = str(value1) - value2 = parmObj2.getValue() - value2 = str(value2) - value = value1 + "," + value2 - self.volGraphIntensityRange.setText(value) - - parmObj1 = opObj.getParameterObj(parameterName='xmin') - parmObj2 = opObj.getParameterObj(parameterName='xmax') - - if parmObj1 == None or parmObj2 ==None: - self.volGraphHeightrange.clear() - else: - value1 = parmObj1.getValue() - value1 = str(value1) - value2 = parmObj2.getValue() - value2 = str(value2) - value = value1 + "," + value2 - value2 = str(value2) - self.volGraphHeightrange.setText(value) - - parmObj = opObj.getParameterObj(parameterName='type') - - if parmObj == None: - self.volComScopeType.setCurrentIndex(0) - else: - value = parmObj.getValue() - if value == "iq": - self.volComScopeType.setCurrentIndex(0) - if value == "power": - self.volComScopeType.setCurrentIndex(1) - - parmObj = opObj.getParameterObj(parameterName='save') - - if parmObj == None: - self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked) - else: - value = parmObj.getValue() - if value: - self.volGraphCebSave.setCheckState(QtCore.Qt.Checked) - else: - self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked) - - parmObj = opObj.getParameterObj(parameterName='figpath') - if parmObj == None: - self.volGraphPath.clear() - else: - value = parmObj.getValue() - path = str(value) - self.volGraphPath.setText(path) - - parmObj = opObj.getParameterObj(parameterName='figfile') - if parmObj == None: - self.volGraphPrefix.clear() - else: - value = parmObj.getValue() - figfile = str(value) - self.volGraphPrefix.setText(figfile) - - # outputVoltageWrite - opObj = puObj.getOperationObj(name='VoltageWriter') - - if opObj == None: - self.volOutputPath.clear() - self.volOutputblocksperfile.clear() - self.volOutputprofilesperblock.clear() - else: - parmObj = opObj.getParameterObj(parameterName='path') - if parmObj == None: - self.volOutputPath.clear() - else: - value = parmObj.getValue() - path = str(value) - self.volOutputPath.setText(path) - - parmObj = opObj.getParameterObj(parameterName='blocksPerFile') - if parmObj == None: - self.volOutputblocksperfile.clear() - else: - value = parmObj.getValue() - blocksperfile = str(value) - self.volOutputblocksperfile.setText(blocksperfile) - - parmObj = opObj.getParameterObj(parameterName='profilesPerBlock') - if parmObj == None: - self.volOutputprofilesperblock.clear() - else: - value = parmObj.getValue() - profilesPerBlock = str(value) - self.volOutputprofilesperblock.setText(profilesPerBlock) - - return - - def __refreshSpectraWindow(self, puObj): - - inputId = puObj.getInputId() - inputPUObj = self.__puObjDict[inputId] - - if inputPUObj.datatype == 'Voltage': - self.specOpnFFTpoints.setEnabled(True) - self.specOpProfiles.setEnabled(True) - self.specOpippFactor.setEnabled(True) - else: - self.specOpnFFTpoints.setEnabled(False) - self.specOpProfiles.setEnabled(False) - self.specOpippFactor.setEnabled(False) - - opObj = puObj.getOperationObj(name='setRadarFrequency') - if opObj == None: - self.specOpRadarfrequency.clear() - self.specOpCebRadarfrequency.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='frequency') - value = str(float(value)/1e6) - self.specOpRadarfrequency.setText(value) - self.specOpRadarfrequency.setEnabled(True) - self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="run") - if opObj == None: - self.specOpnFFTpoints.clear() - self.specOpProfiles.clear() - self.specOpippFactor.clear() - else: - parmObj = opObj.getParameterObj(parameterName='nFFTPoints') - if parmObj == None: - self.specOpnFFTpoints.clear() - else: - self.specOpnFFTpoints.setEnabled(True) - value = opObj.getParameterValue(parameterName='nFFTPoints') - self.specOpnFFTpoints.setText(str(value)) - - parmObj = opObj.getParameterObj(parameterName='nProfiles') - if parmObj == None: - self.specOpProfiles.clear() - else: - self.specOpProfiles.setEnabled(True) - value = opObj.getParameterValue(parameterName='nProfiles') - self.specOpProfiles.setText(str(value)) - - parmObj = opObj.getParameterObj(parameterName='ippFactor') - if parmObj == None: - self.specOpippFactor.clear() - else: - self.specOpippFactor.setEnabled(True) - value = opObj.getParameterValue(parameterName='ippFactor') - self.specOpippFactor.setText(str(value)) - - opObj = puObj.getOperationObj(name="run") - if opObj == None: - self.specOppairsList.clear() - self.specOpCebCrossSpectra.setCheckState(0) - else: - parmObj = opObj.getParameterObj(parameterName='pairsList') - if parmObj == None: - self.specOppairsList.clear() - self.specOpCebCrossSpectra.setCheckState(0) - else: - value = opObj.getParameterValue(parameterName='pairsList') - value = str(value)[1:-1] - self.specOppairsList.setText(str(value)) - self.specOppairsList.setEnabled(True) - self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="selectChannels") - - if opObj == None: - opObj = puObj.getOperationObj(name="selectChannelsByIndex") - - if opObj == None: - self.specOpChannel.clear() - self.specOpCebChannel.setCheckState(0) - else: - channelEnabled = False - try: - value = opObj.getParameterValue(parameterName='channelList') - value = str(value)[1:-1] - channelEnabled = True - channelMode = 0 - except: - pass - try: - value = opObj.getParameterValue(parameterName='channelIndexList') - value = str(value)[1:-1] - channelEnabled = True - channelMode = 1 - except: - pass - - if channelEnabled: - self.specOpChannel.setText(value) - self.specOpChannel.setEnabled(True) - self.specOpCebChannel.setCheckState(QtCore.Qt.Checked) - self.specOpComChannel.setCurrentIndex(channelMode) - - opObj = puObj.getOperationObj(name="selectHeights") - if opObj == None: - self.specOpHeights.clear() - self.specOpCebHeights.setCheckState(0) - else: - value1 = int(opObj.getParameterValue(parameterName='minHei')) - value1 = str(value1) - value2 = int(opObj.getParameterValue(parameterName='maxHei')) - value2 = str(value2) - value = value1 + "," + value2 - self.specOpHeights.setText(value) - self.specOpHeights.setEnabled(True) - self.specOpCebHeights.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name="IncohInt") - if opObj == None: - self.specOpIncoherent.clear() - self.specOpCebIncoherent.setCheckState(0) - else: - for parmObj in opObj.getParameterObjList(): - if parmObj.name == 'timeInterval': - value = opObj.getParameterValue(parameterName='timeInterval') - self.specOpIncoherent.setText(str(value)) - self.specOpIncoherent.setEnabled(True) - self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked) - self.specOpCobIncInt.setCurrentIndex(0) - - if parmObj.name == 'n': - value = opObj.getParameterValue(parameterName='n') - self.specOpIncoherent.setText(str(value)) - self.specOpIncoherent.setEnabled(True) - self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked) - self.specOpCobIncInt.setCurrentIndex(1) - - opObj = puObj.getOperationObj(name="removeDC") - if opObj == None: - self.specOpCebRemoveDC.setCheckState(0) - else: - self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='mode') - - value = 1 - if parmObj: - value = parmObj.getValue() - - if value == 1: - self.specOpComRemoveDC.setCurrentIndex(0) - elif value == 2: - self.specOpComRemoveDC.setCurrentIndex(1) - - opObj = puObj.getOperationObj(name="removeInterference") - if opObj == None: - self.specOpCebRemoveInt.setCheckState(0) - else: - self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked) - - opObj = puObj.getOperationObj(name='getNoise') - if opObj == None: - self.specOpCebgetNoise.setCheckState(0) - self.specOpgetNoise.clear() - else: - self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked) - parmObj = opObj.getParameterObj(parameterName='minHei') - if parmObj == None: - self.specOpgetNoise.clear() - value1 = None - else: - value1 = opObj.getParameterValue(parameterName='minHei') - value1 = str(value1) - parmObj = opObj.getParameterObj(parameterName='maxHei') - if parmObj == None: - value2 = None - value = value1 - self.specOpgetNoise.setText(value) - self.specOpgetNoise.setEnabled(True) - else: - value2 = opObj.getParameterValue(parameterName='maxHei') - value2 = str(value2) - parmObj = opObj.getParameterObj(parameterName='minVel') - if parmObj == None: - value3 = None - value = value1 + "," + value2 - self.specOpgetNoise.setText(value) - self.specOpgetNoise.setEnabled(True) - else: - value3 = opObj.getParameterValue(parameterName='minVel') - value3 = str(value3) - parmObj = opObj.getParameterObj(parameterName='maxVel') - if parmObj == None: - value4 = None - value = value1 + "," + value2 + "," + value3 - self.specOpgetNoise.setText(value) - self.specOpgetNoise.setEnabled(True) - else: - value4 = opObj.getParameterValue(parameterName='maxVel') - value4 = str(value4) - value = value1 + "," + value2 + "," + value3 + ',' + value4 - self.specOpgetNoise.setText(value) - self.specOpgetNoise.setEnabled(True) - - self.specGraphPath.clear() - self.specGraphPrefix.clear() - self.specGgraphFreq.clear() - self.specGgraphHeight.clear() - self.specGgraphDbsrange.clear() - self.specGgraphmagnitud.clear() - self.specGgraphPhase.clear() - self.specGgraphChannelList.clear() - self.specGgraphTminTmax.clear() - self.specGgraphTimeRange.clear() - self.specGgraphftpratio.clear() - - opObj = puObj.getOperationObj(name='SpectraPlot') - - if opObj == None: - self.specGraphCebSpectraplot.setCheckState(0) - self.specGraphSaveSpectra.setCheckState(0) - self.specGraphftpSpectra.setCheckState(0) - else: -# operationSpectraPlot = "Enable" - self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='show') - if parmObj: - if not parmObj.getValue(): - self.specGraphCebSpectraplot.setCheckState(0) - - parmObj = opObj.getParameterObj(parameterName='channelList') - if parmObj == None: - self.specGgraphChannelList.clear() - else: - value = opObj.getParameterValue(parameterName='channelList') - channelListSpectraPlot = str(value)[1:-1] - self.specGgraphChannelList.setText(channelListSpectraPlot) - self.specGgraphChannelList.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specGgraphFreq.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphFreq.setText(value) - self.specGgraphFreq.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specGgraphHeight.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphHeight.setText(value) - self.specGgraphHeight.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='zmin') - if parmObj == None: - self.specGgraphDbsrange.clear() - else: - value1 = opObj.getParameterValue(parameterName='zmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='zmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphDbsrange.setText(value) - self.specGgraphDbsrange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specGraphSaveSpectra.setCheckState(0) - else: - self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specGraphftpSpectra.setCheckState(0) - else: - self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='CrossSpectraPlot') - - if opObj == None: - self.specGraphCebCrossSpectraplot.setCheckState(0) - self.specGraphSaveCross.setCheckState(0) - self.specGraphftpCross.setCheckState(0) - else: -# operationCrossSpectraPlot = "Enable" - self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='show') - if parmObj: - if not parmObj.getValue(): - self.specGraphCebCrossSpectraplot.setCheckState(0) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specGgraphFreq.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphFreq.setText(value) - self.specGgraphFreq.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specGgraphHeight.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphHeight.setText(value) - self.specGgraphHeight.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='zmin') - if parmObj == None: - self.specGgraphDbsrange.clear() - else: - value1 = opObj.getParameterValue(parameterName='zmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='zmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphDbsrange.setText(value) - self.specGgraphDbsrange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='coh_min') - if parmObj == None: - self.specGgraphmagnitud.clear() - else: - value1 = opObj.getParameterValue(parameterName='coh_min') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='coh_max') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphmagnitud.setText(value) - self.specGgraphmagnitud.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='phase_min') - if parmObj == None: - self.specGgraphPhase.clear() - else: - value1 = opObj.getParameterValue(parameterName='phase_min') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='phase_max') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphPhase.setText(value) - self.specGgraphPhase.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specGraphSaveCross.setCheckState(0) - else: - self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specGraphftpCross.setCheckState(0) - else: - self.specGraphftpCross.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='RTIPlot') - - if opObj == None: - self.specGraphCebRTIplot.setCheckState(0) - self.specGraphSaveRTIplot.setCheckState(0) - self.specGraphftpRTIplot.setCheckState(0) - else: - self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='show') - if parmObj: - if not parmObj.getValue(): - self.specGraphCebRTIplot.setCheckState(0) - - parmObj = opObj.getParameterObj(parameterName='channelList') - if parmObj == None: - self.specGgraphChannelList.clear() - else: - value = opObj.getParameterValue(parameterName='channelList') - channelListRTIPlot = str(value)[1:-1] - self.specGgraphChannelList.setText(channelListRTIPlot) - self.specGgraphChannelList.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specGgraphTminTmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphTminTmax.setText(value) - self.specGgraphTminTmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='timerange') - if parmObj == None: - self.specGgraphTimeRange.clear() - else: - value1 = opObj.getParameterValue(parameterName='timerange') - value1 = str(value1) - self.specGgraphTimeRange.setText(value1) - self.specGgraphTimeRange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specGgraphHeight.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphHeight.setText(value) - self.specGgraphHeight.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='zmin') - if parmObj == None: - self.specGgraphDbsrange.clear() - else: - value1 = opObj.getParameterValue(parameterName='zmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='zmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphDbsrange.setText(value) - self.specGgraphDbsrange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specGraphSaveRTIplot.setCheckState(0) - else: - self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specGraphftpRTIplot.setCheckState(0) - else: - self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='CoherenceMap') - - if opObj == None: - self.specGraphCebCoherencmap.setCheckState(0) - self.specGraphSaveCoherencemap.setCheckState(0) - self.specGraphftpCoherencemap.setCheckState(0) - else: -# operationCoherenceMap = "Enable" - self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='show') - if parmObj: - if not parmObj.getValue(): - self.specGraphCebCoherencmap.setCheckState(0) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specGgraphTminTmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphTminTmax.setText(value) - self.specGgraphTminTmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='timerange') - if parmObj == None: - self.specGgraphTimeRange.clear() - else: - value1 = opObj.getParameterValue(parameterName='timerange') - value1 = str(value1) - self.specGgraphTimeRange.setText(value1) - self.specGgraphTimeRange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specGgraphHeight.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphHeight.setText(value) - self.specGgraphHeight.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='zmin') - if parmObj == None: - self.specGgraphmagnitud.clear() - else: - value1 = opObj.getParameterValue(parameterName='zmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='zmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphmagnitud.setText(value) - self.specGgraphmagnitud.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='coh_min') - if parmObj == None: - self.specGgraphmagnitud.clear() - else: - value1 = opObj.getParameterValue(parameterName='coh_min') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='coh_max') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphmagnitud.setText(value) - self.specGgraphmagnitud.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='phase_min') - if parmObj == None: - self.specGgraphPhase.clear() - else: - value1 = opObj.getParameterValue(parameterName='phase_min') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='phase_max') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphPhase.setText(value) - self.specGgraphPhase.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specGraphSaveCoherencemap.setCheckState(0) - else: - self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specGraphftpCoherencemap.setCheckState(0) - else: - self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='PowerProfilePlot') - - if opObj == None: - self.specGraphPowerprofile.setCheckState(0) - self.specGraphSavePowerprofile.setCheckState(0) - self.specGraphftpPowerprofile.setCheckState(0) - operationPowerProfilePlot = "Disabled" - channelList = None - freq_vel = None - heightsrange = None - else: -# operationPowerProfilePlot = "Enable" - self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='show') - if parmObj: - if not parmObj.getValue(): - self.specGraphPowerprofile.setCheckState(0) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specGgraphDbsrange.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphDbsrange.setText(value) - self.specGgraphDbsrange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specGgraphHeight.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphHeight.setText(value) - self.specGgraphHeight.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specGraphSavePowerprofile.setCheckState(0) - else: - self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specGraphftpPowerprofile.setCheckState(0) - else: - self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='Noise') - - if opObj == None: - self.specGraphCebRTInoise.setCheckState(0) - self.specGraphSaveRTInoise.setCheckState(0) - self.specGraphftpRTInoise.setCheckState(0) - else: - self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='show') - if parmObj: - if not parmObj.getValue(): - self.specGraphCebRTInoise.setCheckState(0) - - parmObj = opObj.getParameterObj(parameterName='channelList') - if parmObj == None: - self.specGgraphChannelList.clear() - else: - value = opObj.getParameterValue(parameterName='channelList') - channelListRTINoise = str(value)[1:-1] - self.specGgraphChannelList.setText(channelListRTINoise) - self.specGgraphChannelList.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specGgraphTminTmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphTminTmax.setText(value) - self.specGgraphTminTmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='timerange') - if parmObj == None: - self.specGgraphTimeRange.clear() - else: - value1 = opObj.getParameterValue(parameterName='timerange') - value1 = str(value1) - self.specGgraphTimeRange.setText(value1) - self.specGgraphTimeRange.setEnabled(True) - - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specGgraphDbsrange.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specGgraphDbsrange.setText(value) - self.specGgraphDbsrange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specGraphSaveRTInoise.setCheckState(0) - else: - self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specGraphftpRTInoise.setCheckState(0) - else: - self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='SpectraWriter') - if opObj == None: - self.specOutputPath.clear() - self.specOutputblocksperfile.clear() - else: - value = opObj.getParameterObj(parameterName='path') - if value == None: - self.specOutputPath.clear() - else: - value = opObj.getParameterValue(parameterName='path') - path = str(value) - self.specOutputPath.setText(path) - value = opObj.getParameterObj(parameterName='blocksPerFile') - if value == None: - self.specOutputblocksperfile.clear() - else: - value = opObj.getParameterValue(parameterName='blocksPerFile') - blocksperfile = str(value) - self.specOutputblocksperfile.setText(blocksperfile) - - return - - def __refreshSpectraHeisWindow(self, puObj): - - opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis") - if opObj == None: - self.specHeisOpIncoherent.clear() - self.specHeisOpCebIncoherent.setCheckState(0) - else: - for parmObj in opObj.getParameterObjList(): - if parmObj.name == 'timeInterval': - value = opObj.getParameterValue(parameterName='timeInterval') - self.specHeisOpIncoherent.setText(str(value)) - self.specHeisOpIncoherent.setEnabled(True) - self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked) - self.specHeisOpCobIncInt.setCurrentIndex(0) - - # SpectraHeis Graph - - self.specHeisGgraphXminXmax.clear() - self.specHeisGgraphYminYmax.clear() - - self.specHeisGgraphChannelList.clear() - self.specHeisGgraphTminTmax.clear() - self.specHeisGgraphTimeRange.clear() - self.specHeisGgraphftpratio.clear() - - opObj = puObj.getOperationObj(name='SpectraHeisScope') - if opObj == None: - self.specHeisGraphCebSpectraplot.setCheckState(0) - self.specHeisGraphSaveSpectra.setCheckState(0) - self.specHeisGraphftpSpectra.setCheckState(0) - else: - operationSpectraHeisScope = "Enable" - self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName='channelList') - if parmObj == None: - self.specHeisGgraphChannelList.clear() - else: - value = opObj.getParameterValue(parameterName='channelList') - channelListSpectraHeisScope = str(value)[1:-1] - self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope) - self.specHeisGgraphChannelList.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specHeisGgraphXminXmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specHeisGgraphXminXmax.setText(value) - self.specHeisGgraphXminXmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specHeisGgraphYminYmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specHeisGgraphYminYmax.setText(value) - self.specHeisGgraphYminYmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specHeisGraphSaveSpectra.setCheckState(0) - else: - self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specHeisGraphftpSpectra.setCheckState(0) - else: - self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specHeisGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specHeisGgraphftpratio.setText(str(value)) - - opObj = puObj.getOperationObj(name='RTIfromSpectraHeis') - - if opObj == None: - self.specHeisGraphCebRTIplot.setCheckState(0) - self.specHeisGraphSaveRTIplot.setCheckState(0) - self.specHeisGraphftpRTIplot.setCheckState(0) - else: - self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked) - parmObj = opObj.getParameterObj(parameterName='channelList') - if parmObj == None: - self.specHeisGgraphChannelList.clear() - else: - value = opObj.getParameterValue(parameterName='channelList') - channelListRTIPlot = str(value)[1:-1] - self.specGgraphChannelList.setText(channelListRTIPlot) - self.specGgraphChannelList.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='xmin') - if parmObj == None: - self.specHeisGgraphTminTmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='xmin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='xmax') - value2 = str(value2) - value = value1 + "," + value2 - self.specHeisGgraphTminTmax.setText(value) - self.specHeisGgraphTminTmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='timerange') - if parmObj == None: - self.specGgraphTimeRange.clear() - else: - value1 = opObj.getParameterValue(parameterName='timerange') - value1 = str(value1) - self.specHeisGgraphTimeRange.setText(value1) - self.specHeisGgraphTimeRange.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName='ymin') - if parmObj == None: - self.specHeisGgraphYminYmax.clear() - else: - value1 = opObj.getParameterValue(parameterName='ymin') - value1 = str(value1) - value2 = opObj.getParameterValue(parameterName='ymax') - value2 = str(value2) - value = value1 + "," + value2 - self.specHeisGgraphYminYmax.setText(value) - self.specHeisGgraphYminYmax.setEnabled(True) - - parmObj = opObj.getParameterObj(parameterName="save") - if parmObj == None: - self.specHeisGraphSaveRTIplot.setCheckState(0) - else: - self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="ftp") - if parmObj == None: - self.specHeisGraphftpRTIplot.setCheckState(0) - else: - self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked) - - parmObj = opObj.getParameterObj(parameterName="figpath") - if parmObj: - value = parmObj.getValue() - self.specHeisGraphPath.setText(value) - - parmObj = opObj.getParameterObj(parameterName="wr_period") - if parmObj: - value = parmObj.getValue() - self.specHeisGgraphftpratio.setText(str(value)) - - # outputSpectraHeisWrite - opObj = puObj.getOperationObj(name='FitsWriter') - if opObj == None: - self.specHeisOutputPath.clear() - self.specHeisOutputblocksperfile.clear() - self.specHeisOutputMetada.clear() - else: - value = opObj.getParameterObj(parameterName='path') - if value == None: - self.specHeisOutputPath.clear() - else: - value = opObj.getParameterValue(parameterName='path') - path = str(value) - self.specHeisOutputPath.setText(path) - value = opObj.getParameterObj(parameterName='dataBlocksPerFile') - if value == None: - self.specHeisOutputblocksperfile.clear() - else: - value = opObj.getParameterValue(parameterName='dataBlocksPerFile') - blocksperfile = str(value) - self.specHeisOutputblocksperfile.setText(blocksperfile) - value = opObj.getParameterObj(parameterName='metadatafile') - if value == None: - self.specHeisOutputMetada.clear() - else: - value = opObj.getParameterValue(parameterName='metadatafile') - metadata_file = str(value) - self.specHeisOutputMetada.setText(metadata_file) - - return - - def __refreshCorrelationWindow(self, puObj): - pass - - def refreshPUWindow(self, puObj): - - if puObj.datatype == 'Voltage': - self.__refreshVoltageWindow(puObj) - - if puObj.datatype == 'Spectra': - self.__refreshSpectraWindow(puObj) - - if puObj.datatype == 'SpectraHeis': - self.__refreshSpectraHeisWindow(puObj) - - def refreshProjectProperties(self, projectObjView): - - propertyBuffObj = PropertyBuffer() - name = projectObjView.name - - propertyBuffObj.append("Properties", "Name", projectObjView.name), - propertyBuffObj.append("Properties", "Description", projectObjView.description) - propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace) - - readUnitObj = projectObjView.getReadUnitObj() - runOperationObj = readUnitObj.getOperationObj(name='run') - - for thisParmObj in runOperationObj.getParameterObjList(): - propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue())) - - propertiesModel = propertyBuffObj.getPropertyModel() - - self.treeProjectProperties.setModel(propertiesModel) - self.treeProjectProperties.expandAll() - self.treeProjectProperties.resizeColumnToContents(0) - self.treeProjectProperties.resizeColumnToContents(1) - - def refreshPUProperties(self, puObjView): - - ############ FTP CONFIG ################################ - #Deleting FTP Conf. This processing unit have not got any - #FTP configuration by default - if puObjView.id in self.__puLocalFolder2FTP.keys(): - self.__puLocalFolder2FTP.pop(puObjView.id) - ######################################################## - - propertyBuffObj = PropertyBuffer() - - for thisOp in puObjView.getOperationObjList(): - - operationName = thisOp.name - - if operationName == 'run': - operationName = 'Properties' - - else: - if not thisOp.getParameterObjList(): - propertyBuffObj.append(operationName, '--', '--') - continue - - for thisParmObj in thisOp.getParameterObjList(): - propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue())) - - ############ FTP CONFIG ################################ - if thisParmObj.name == "ftp_wei" and thisParmObj.getValue(): - value = thisParmObj.getValue() - self.temporalFTP.ftp_wei = value - - if thisParmObj.name == "exp_code" and thisParmObj.getValue(): - value = thisParmObj.getValue() - self.temporalFTP.exp_code = value - - if thisParmObj.name == "sub_exp_code" and thisParmObj.getValue(): - value = thisParmObj.getValue() - self.temporalFTP.sub_exp_code = value - - if thisParmObj.name == "plot_pos" and thisParmObj.getValue(): - value = thisParmObj.getValue() - self.temporalFTP.plot_pos = value - - if thisParmObj.name == 'ftp' and thisParmObj.getValue(): - figpathObj = thisOp.getParameterObj('figpath') - if figpathObj: - self.__puLocalFolder2FTP[puObjView.id] = figpathObj.getValue() - - ######################################################## - - propertiesModel = propertyBuffObj.getPropertyModel() - - self.treeProjectProperties.setModel(propertiesModel) - self.treeProjectProperties.expandAll() - self.treeProjectProperties.resizeColumnToContents(0) - self.treeProjectProperties.resizeColumnToContents(1) - - def refreshGraphicsId(self): - - projectObj = self.getSelectedProjectObj() - - if not projectObj: - return - - for idPU, puObj in projectObj.procUnitConfObjDict.items(): - - for opObj in puObj.getOperationObjList(): - - if opObj.name not in ('Scope', 'SpectraPlot', 'CrossSpectraPlot', 'RTIPlot', 'CoherenceMap', 'PowerProfilePlot', 'Noise', 'SpectraHeisScope', 'RTIfromSpectraHeis'): - continue - - opObj.changeParameter(name='id', value=opObj.id, format='int') - - def on_click(self, index): - - self._disable_save_button() - self._disable_play_button() - - self.console.clear() - - self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index) - - projectObjView = self.getSelectedProjectObj() - - if not projectObjView: - return - - self.create = False - selectedObjView = self.getSelectedItemObj() - - self.refreshProjectWindow(projectObjView) - self.refreshProjectProperties(projectObjView) - - #A project has been selected - if projectObjView == selectedObjView: - - self.tabProject.setEnabled(True) - self.tabVoltage.setEnabled(False) - self.tabSpectra.setEnabled(False) - self.tabCorrelation.setEnabled(False) - self.tabSpectraHeis.setEnabled(False) - self.tabWidgetProject.setCurrentWidget(self.tabProject) - - if self.dateList: - self._enable_save_button() - self._enable_play_button() - - return - - #A processing unit has been selected - voltEnable = False - specEnable = False - corrEnable = False - specHeisEnable = False - tabSelected = self.tabProject - - puObj = selectedObjView - - self.refreshPUWindow(puObj) - self.refreshPUProperties(puObj) - self.showtabPUCreated(puObj.datatype) - - if self.dateList: - self._enable_save_button() - self._enable_play_button() - - def on_right_click(self, pos): - - self.menu = QtGui.QMenu() - quitAction0 = self.menu.addAction("Create a New Project") - quitAction1 = self.menu.addAction("Create a New Processing Unit") - quitAction2 = self.menu.addAction("Delete Item") - quitAction3 = self.menu.addAction("Quit") - - if len(self.__itemTreeDict) == 0: - quitAction2.setEnabled(False) - else: - quitAction2.setEnabled(True) - - action = self.menu.exec_(self.mapToGlobal(pos)) - - if action == quitAction0: - self. setInputsProject_View() - self.create = True - - if action == quitAction1: - if len(self.__projectObjDict) == 0: - outputstr = "You need to create a Project before adding a Processing Unit" - self.console.clear() - self.console.append(outputstr) - return 0 - else: - self.addPUWindow() - self.console.clear() - self.console.append("Please, Choose the type of Processing Unit") -# self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage") -# self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation") -# self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis") - - if action == quitAction2: - index = self.selectedItemTree - try: - index.parent() - except: - self.console.append('Please, first at all select a Project or Processing Unit') - return 0 - # print index.parent(),index - if index.parent() == None: - self.projectExplorerModel.removeRow(index.row()) - else: - index.parent().removeRow(index.row()) - self.removeItemTreeFromProject() - self.console.clear() - # for i in self.projectExplorerTree.selectionModel().selection().indexes(): - # print i.row() - - if action == quitAction3: - self.close() - return 0 - - def createProjectView(self, id): - -# project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow() - id = str(id) - projectParms = self.__getParmsFromProjectWindow() - - if not projectParms.isValid(): - return None - - projectObjView = Project() - projectObjView.setup(id=id, name=projectParms.name, description=projectParms.description) - - self.__projectObjDict[id] = projectObjView - self.addProject2ProjectExplorer(id=id, name=projectObjView.name) - - return projectObjView - - def updateProjectView(self): - -# project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow() - - projectParms = self.__getParmsFromProjectWindow() - - if not projectParms.isValid(): - return None - - projectObjView = self.getSelectedProjectObj() - - if not projectObjView: - self.console.append("Please select a project before update it") - return None - - projectObjView.update(name=projectParms.name, description=projectParms.description) - - return projectObjView - - def createReadUnitView(self, projectObjView, idReadUnit=None): - - projectParms = self.__getParmsFromProjectWindow() - - if not projectParms.isValid(): - return None - - if projectParms.datatype in ("Voltage", "Spectra", "Fits"): - readUnitConfObj = projectObjView.addReadUnit(id=idReadUnit, - datatype=projectParms.datatype, - path=projectParms.dpath, - startDate=projectParms.startDate, - endDate=projectParms.endDate, - startTime=projectParms.startTime, - endTime=projectParms.endTime, - online=projectParms.online, - walk=projectParms.walk - ) - - if projectParms.set: - readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int") - - if projectParms.delay: - readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int") - - if projectParms.expLabel: - readUnitConfObj.addParameter(name="expLabel", value=projectParms.expLabel) - - readUnitConfObj.addOperation(name="printInfo") - - if projectParms.datatype == "USRP": - readUnitConfObj = projectObjView.addReadUnit(id=idReadUnit, - datatype=projectParms.datatype, - path=projectParms.dpath, - startDate=projectParms.startDate, - endDate=projectParms.endDate, - startTime=projectParms.startTime, - endTime=projectParms.endTime, - online=projectParms.online, - ippKm=projectParms.ippKm - ) - - if projectParms.delay: - readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int") - - return readUnitConfObj - - def updateReadUnitView(self, projectObjView, idReadUnit): - - projectObjView.removeProcUnit(idReadUnit) - - readUnitConfObj = self.createReadUnitView(projectObjView, idReadUnit) - - return readUnitConfObj - - def createProcUnitView(self, projectObjView, datatype, inputId): - - procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId) - - self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj - - return procUnitConfObj - - def updateProcUnitView(self, id): - - pass - - def addPUWindow(self): - - self.configUPWindowObj = UnitProcessWindow(self) - fatherObj = self.getSelectedItemObj() - try: - fatherObj.getElementName() - except: - self.console.append("First left click on Project or Processing Unit") - return 0 - - if fatherObj.getElementName() == 'Project': - readUnitConfObj = fatherObj.getReadUnitObj() - self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype) - - self.configUPWindowObj.getfromWindowList.append(fatherObj) - self.configUPWindowObj.loadTotalList() - self.configUPWindowObj.show() - self.configUPWindowObj.closed.connect(self.createPUWindow) - - def createPUWindow(self): - - if not self.configUPWindowObj.create: - return - - fatherObj = self.configUPWindowObj.getFromWindow - datatype = self.configUPWindowObj.typeofUP - - if fatherObj.getElementName() == 'Project': - inputId = fatherObj.getReadUnitId() - projectObjView = fatherObj - else: - inputId = fatherObj.getId() - projectObjView = self.getSelectedProjectObj() - - if not projectObjView: - return - - puObj = self.createProcUnitView(projectObjView, datatype, inputId) - - self.addPU2ProjectExplorer(puObj) - - self.showtabPUCreated(datatype) - - self.clearPUWindow(datatype) - - self.showPUinitView() - - def addFTPConf2Operation(self, puObj, opObj): - - if not self.temporalFTP.create: - self.temporalFTP.setwithoutconfiguration() - -# opObj.addParameter(name='server', value=self.temporalFTP.server, format='str') -# opObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str') -# opObj.addParameter(name='username', value=self.temporalFTP.username, format='str') -# opObj.addParameter(name='password', value=self.temporalFTP.password, format='str') - - if self.temporalFTP.ftp_wei: - opObj.addParameter(name='ftp_wei', value=int(self.temporalFTP.ftp_wei), format='int') - if self.temporalFTP.exp_code: - opObj.addParameter(name='exp_code', value=int(self.temporalFTP.exp_code), format='int') - if self.temporalFTP.sub_exp_code: - opObj.addParameter(name='sub_exp_code', value=int(self.temporalFTP.sub_exp_code), format='int') - if self.temporalFTP.plot_pos: - opObj.addParameter(name='plot_pos', value=int(self.temporalFTP.plot_pos), format='int') - -# def __checkFTPProcUnit(self, projectObj, localfolder): -# -# puId = None -# puObj = None -# -# for thisPuId, thisPuObj in projectObj.procUnitItems(): -# -# if not thisPuObj.name == "SendToServer": -# continue -# -# opObj = thisPuObj.getOperationObj(name='run') -# -# parmObj = opObj.getParameterObj('localfolder') -# -# #localfolder parameter should always be set, if it is not set then ProcUnit should be removed -# if not parmObj: -# projectObj.removeProcUnit(thisPuId) -# continue -# -# thisLocalfolder = parmObj.getValue() -# -# if localfolder != thisLocalfolder: -# continue -# -# puId = thisPuId -# puObj = thisPuObj -# break -# -# return puObj - - def createFTPProcUnitView(self): - - if not self.temporalFTP.create: - self.temporalFTP.setwithoutconfiguration() - - projectObj = self.getSelectedProjectObj() - - if not projectObj: - return - - self.removeAllFTPProcUnitView(projectObj) - - if not self.__puLocalFolder2FTP: - return - - folderList = ",".join(self.__puLocalFolder2FTP.values()) - - procUnitConfObj = projectObj.addProcUnit(name="SendToServer") - - procUnitConfObj.addParameter(name='server', value=self.temporalFTP.server, format='str') - procUnitConfObj.addParameter(name='username', value=self.temporalFTP.username, format='str') - procUnitConfObj.addParameter(name='password', value=self.temporalFTP.password, format='str') - procUnitConfObj.addParameter(name='localfolder', value=folderList, format='list') - procUnitConfObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str') - procUnitConfObj.addParameter(name='ext', value=self.temporalFTP.extension, format='str') - procUnitConfObj.addParameter(name='period', value=self.temporalFTP.period, format='int') - procUnitConfObj.addParameter(name='protocol', value=self.temporalFTP.protocol, format='str') - - procUnitConfObj.addParameter(name='ftp_wei', value=self.temporalFTP.ftp_wei, format='int') - procUnitConfObj.addParameter(name='exp_code', value=self.temporalFTP.exp_code, format='int') - procUnitConfObj.addParameter(name='sub_exp_code', value=self.temporalFTP.sub_exp_code, format='int') - procUnitConfObj.addParameter(name='plot_pos', value=self.temporalFTP.plot_pos, format='int') - - self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj - - def removeAllFTPProcUnitView(self, projectObj): - - for thisPuId, thisPuObj in projectObj.procUnitItems(): - - if not thisPuObj.name == "SendToServer": - continue - - projectObj.removeProcUnit(thisPuId) - - if thisPuId not in self.__puObjDict.keys(): - continue - - self.__puObjDict.pop(thisPuId) - - def showPUinitView(self): - - self.propertiesModel = TreeModel() - self.propertiesModel.initPUVoltageView() - self.treeProjectProperties.setModel(self.propertiesModel) - self.treeProjectProperties.expandAll() - self.treeProjectProperties.allColumnsShowFocus() - self.treeProjectProperties.resizeColumnToContents(1) - - def saveFTPFromOpObj(self, operationObj): - - if operationObj.name != "SendByFTP": - return - - server = operationObj.getParameterValue("server") - username = operationObj.getParameterValue("username") - password = operationObj.getParameterValue("password") - localfolder = operationObj.getParameterValue("localfolder") - remotefolder = operationObj.getParameterValue("remotefolder") - ext = operationObj.getParameterValue("ext") - period = operationObj.getParameterValue("period") - - self.temporalFTP.save(server=server, - remotefolder=remotefolder, - username=username, - password=password, - localfolder=localfolder, - extension=ext) - - return - - def saveFTPFromProcUnitObj(self, puObj): - - opObj = puObj.getOperationObj(name="run") - - parmObj = opObj.getParameterObj(parameterName="server") - if parmObj == None: - server = 'jro-app.igp.gob.pe' - else: - server = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="remotefolder") - if parmObj == None: - remotefolder = '/home/wmaster/graficos' - else: - remotefolder = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="username") - if parmObj == None: - username = 'wmaster' - else: - username = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="password") - if parmObj == None: - password = 'mst2010vhf' - else: - password = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="ftp_wei") - if parmObj == None: - ftp_wei = 0 - else: - ftp_wei = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="exp_code") - if parmObj == None: - exp_code = 0 - else: - exp_code = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="sub_exp_code") - if parmObj == None: - sub_exp_code = 0 - else: - sub_exp_code = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="plot_pos") - if parmObj == None: - plot_pos = 0 - else: - plot_pos = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="localfolder") - if parmObj == None: - localfolder = None - else: - localfolder = parmObj.getValue() - - parmObj = opObj.getParameterObj(parameterName="ext") - if parmObj == None: - extension = '.png' - else: - extension = parmObj.getValue() - - self.temporalFTP.save(server=server, - remotefolder=remotefolder, - username=username, - password=password, - ftp_wei=ftp_wei, - exp_code=exp_code, - sub_exp_code=sub_exp_code, - plot_pos=plot_pos, - localfolder=localfolder, - extension=extension) - - def addProject2ProjectExplorer(self, id, name): - - itemTree = QtGui.QStandardItem(QtCore.QString(str(name))) - - parentItem = self.projectExplorerModel.invisibleRootItem() - parentItem.appendRow(itemTree) - - self.projectExplorerTree.setCurrentIndex(itemTree.index()) - - self.selectedItemTree = itemTree - - self.__itemTreeDict[id] = itemTree - - def addPU2ProjectExplorer(self, puObj): - - id, name = puObj.id, puObj.datatype - - itemTree = QtGui.QStandardItem(QtCore.QString(str(name))) - - parentItem = self.selectedItemTree - parentItem.appendRow(itemTree) - self.projectExplorerTree.expandAll() - - self.projectExplorerTree.setCurrentIndex(itemTree.index()) - - self.selectedItemTree = itemTree - - self.__itemTreeDict[id] = itemTree - - def addPU2PELoadXML(self, puObj): - - id, name, inputId = puObj.id, puObj.datatype, puObj.inputId - - itemTree = QtGui.QStandardItem(QtCore.QString(str(name))) - - if self.__itemTreeDict.has_key(inputId): - parentItem = self.__itemTreeDict[inputId] - else: - #If parent is a Reader object - parentItem = self.__itemTreeDict[id[:-1]] - - parentItem.appendRow(itemTree) - self.projectExplorerTree.expandAll() - parentItem = itemTree - self.projectExplorerTree.setCurrentIndex(parentItem.index()) - - self.__itemTreeDict[id] = itemTree - self.selectedItemTree = itemTree - - def getSelectedProjectObj(self): - """ - Return the current project object selected. If a processing unit is - actually selected this function returns associated project. - - None if any project or processing unit is selected - """ - for key in self.__itemTreeDict.keys(): - if self.__itemTreeDict[key] != self.selectedItemTree: - continue - - if self.__projectObjDict.has_key(key): - projectObj = self.__projectObjDict[key] - return projectObj - - puObj = self.__puObjDict[key] - - if puObj.parentId == None: - projectId = puObj.getId()[0] - else: - projectId = puObj.parentId - - projectObj = self.__projectObjDict[projectId] - return projectObj - - return None - - def getSelectedItemObj(self): - """ - Return the current project or processing unit object selected - - None if any project or processing unit is selected - """ - for key in self.__itemTreeDict.keys(): - if self.__itemTreeDict[key] != self.selectedItemTree: - continue - - if self.__projectObjDict.has_key(key) == True: - fatherObj = self.__projectObjDict[key] - else: - fatherObj = self.__puObjDict[key] - - return fatherObj - - return None - - def _WarningWindow(self, text, information): - - msgBox = QtGui.QMessageBox() - msgBox.setText(text) - msgBox.setInformativeText(information) - msgBox.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) - msgBox.setDefaultButton(QtGui.QMessageBox.Ok) - ret = msgBox.exec_() - - answer = False - - if ret == QtGui.QMessageBox.Ok: - answer = True - - return answer - - def __getNewProjectId(self): - - loadProject = False - - for thisId in range(1,10): - newId = str(thisId) - if newId in self.__projectObjDict.keys(): - continue - - loadProject = True - projectId = newId - break - - if not loadProject: - self.console.clear() - self.console.append("The maximum number of projects has been loaded, a new project can not be loaded") - return None - - return projectId - - def openProject(self): - - self._disable_save_button() - self._disable_play_button() - - self.console.clear() - - self.frame_2.setEnabled(True) - - # print self.dir - filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open a project file", self.pathWorkSpace, self.tr("Html Files (*.xml)"))) - - projectObjLoad = Project() - - if not projectObjLoad.readXml(filename): - self.console.append("The selected xml file could not be loaded ...") - return 0 - - self.create = False - self.refreshProjectWindow(projectObjLoad) - self.refreshProjectProperties(projectObjLoad) - - projectId = projectObjLoad.id - - if projectId in self.__projectObjDict.keys(): - - projectId = self.__getNewProjectId() - - if not projectId: - return 0 - - projectObjLoad.updateId(projectId) - - self.__projectObjDict[projectId] = projectObjLoad - - self.addProject2ProjectExplorer(id=projectId, name=projectObjLoad.name) - - self.tabWidgetProject.setEnabled(True) - self.tabWidgetProject.setCurrentWidget(self.tabProject) - # Disable tabProject after finish the creation - self.tabProject.setEnabled(True) - puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0])) - - for puId, puObj in puObjorderList.items(): - - self.__puObjDict[puId] = puObj - - if puObj.name == "SendToServer": - self.saveFTPFromProcUnitObj(puObj) - - ############## COMPATIBLE WITH OLD VERSIONS ################ - operationObj = puObj.getOperationObj("SendByFTP") - - if operationObj: - self.saveFTPFromOpObj(operationObj) - ############################################################ - - if puObj.inputId == '0': - continue - - self.addPU2PELoadXML(puObj) - - self.refreshPUWindow(puObj) - self.refreshPUProperties(puObj) - self.showtabPUCreated(datatype=puObj.datatype) - -# self.console.clear() - self.console.append("\nThe selected xml file has been loaded successfully") - - if self.dateList: - self._disable_save_button() - self._enable_play_button() - - def create_updating_timer(self): - - self.comm_data_timer = QtCore.QTimer(self) - self.comm_data_timer.timeout.connect(self.on_comm_updating_timer) - self.comm_data_timer.start(1000) - - def on_comm_updating_timer(self): - # Verifica si algun proceso ha sido inicializado y sigue ejecutandose - # Si el proceso se ha parado actualizar el GUI (stopProject) - if not self.threadStarted: - return - - if self.controllerThread.isFinished(): - self.stopProject() - return - - def use_plotmanager(self, controllerThread): - - self.plotManager = controllerThread.useExternalPlotter() - - self.plot_timer = QtCore.QTimer() - self.plot_timer.timeout.connect(self.on_plotmanager_timer) - self.plot_timer.start(10) - - def on_plotmanager_timer(self): - - if not self.plotManager: - return - - self.plotManager.run() - - if self.plotManager.isErrorDetected(): - self.stopProject() - return - - def playProject(self, ext=".xml", save=1): - - self._disable_play_button() - self._disable_save_button() - - if self.controllerThread: - if self.controllerThread.isRunning(): - self.console.append("There is already another process running") - self._enable_stop_button() - return - - if not self.dateList: - self.console.append("No data found, check datapath") - - projectObj = self.getSelectedProjectObj() - - if not projectObj: - self.console.append("Please, select a project to start it") - return - - if save: - filename = self.saveProject() - if filename == None: - self.console.append("Process not initialized.") - return - else: - filename = TEMPORAL_FILE - projectObj.writeXml( os.path.join(self.pathWorkSpace,filename) ) - - self.console.clear() - self.console.append("Please wait...") - - self.controllerThread = ControllerThread() - self.controllerThread.readXml(filename) - - self.use_plotmanager(self.controllerThread) - - self.console.clear() - - self.controllerThread.start() - - sleep(0.5) - - - self.threadStarted = True - - self._disable_play_button() - self._disable_save_button() - self._enable_stop_button() - - def stopProject(self): - - self.threadStarted = False - self.controllerThread.stop() - self.plot_timer.stop() - - self.plotManager.join() - self.plotManager = None - - while self.controllerThread.isRunning(): - sleep(0.5) - - self._disable_stop_button() - self._enable_play_button() - - def pauseProject(self): - -# self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True)) - paused = self.controllerThread.pause() - - self.changePauseIcon(paused) - - def saveProject(self, filename=None): - - self._disable_save_button() - self._disable_play_button() - - projectObj = self.getSelectedProjectObj() - - if not projectObj: - - if self.create: - self.console.append("Please press Ok before save it") - else: - self.console.append("Please select a project before save it") - return - - self.refreshGraphicsId() - - sts = True - selectedItemObj = self.getSelectedItemObj() - - #A Processing Unit has been selected - if projectObj == selectedItemObj: - if not self.on_proOk_clicked(): - return None - - #A Processing Unit has been selected - if projectObj != selectedItemObj: - puObj = selectedItemObj - - if puObj.name == 'VoltageProc': - sts = self.on_volOpOk_clicked() - if puObj.name == 'SpectraProc': - sts = self.on_specOpOk_clicked() - if puObj.name == 'SpectraHeisProc': - sts = self.on_specHeisOpOk_clicked() - - if not sts: - return None - - self.createFTPProcUnitView() - - if not filename: - filename = os.path.join( str(self.pathWorkSpace), "%s%s" %(str(projectObj.name), '.xml') ) - - projectObj.writeXml(filename) - self.console.clear() - self.console.append("Project saved") - self.console.append("Press Play button to start data processing ...") - - self._disable_save_button() - self._enable_play_button() - - return filename - - def removeItemTreeFromProject(self): - """ - Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol - """ - for key in self.__itemTreeDict.keys(): - - #Check again because an item can delete multiple items (childs) - if key not in self.__itemTreeDict.keys(): - continue - - if self.__itemTreeDict[key] != self.selectedItemTree: - continue - - if self.__projectObjDict.has_key(key) == True: - - del self.__projectObjDict[key] - del self.__itemTreeDict[key] - - else: - puObj = self.__puObjDict[key] - idProjectParent = puObj.parentId - projectObj = self.__projectObjDict[idProjectParent] - - del self.__puObjDict[key] - del self.__itemTreeDict[key] - del projectObj.procUnitConfObjDict[key] - - for key in projectObj.procUnitConfObjDict.keys(): - if projectObj.procUnitConfObjDict[key].inputId != puObj.getId(): - continue - del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()] - del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()] - del projectObj.procUnitConfObjDict[key] - # print projectObj.procUnitConfObjDict - # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict - - def setInputsProject_View(self): - - self.tabWidgetProject.setEnabled(True) - self.tabWidgetProject.setCurrentWidget(self.tabProject) - self.tabProject.setEnabled(True) - self.frame_2.setEnabled(False) - self.proName.clear() - self.proName.setFocus() - self.proName.setSelection(0, 0) - self.proName.setCursorPosition(0) - self.proDataType.setText('.r') - self.proDataPath.clear() - self.proComDataType.clear() - self.proComDataType.addItem("Voltage") - self.proComDataType.addItem("Spectra") - self.proComDataType.addItem("Fits") - self.proComDataType.addItem("USRP") - - self.proComStartDate.clear() - self.proComEndDate.clear() - - startTime = "00:00:00" - endTime = "23:59:59" - starlist = startTime.split(":") - endlist = endTime.split(":") - self.proDelay.setText("60") - self.proSet.setText("") - - self.labelSet.show() - self.proSet.show() - - self.labelIPPKm.hide() - self.proIPPKm.hide() - - self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2])) - self.proStartTime.setTime(self.time) - self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2])) - self.proEndTime.setTime(self.time) - self.proDescription.clear() - self.proOk.setEnabled(False) -# self.console.append("Please, Write a name Project") -# self.console.append("Introduce Project Parameters")DC -# self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)") - - def clearPUWindow(self, datatype): - - projectObjView = self.getSelectedProjectObj() - - if not projectObjView: - return - - puObj = self.getSelectedItemObj() - inputId = puObj.getInputId() - inputPUObj = projectObjView.getProcUnitObj(inputId) - - if datatype == 'Voltage': - self.volOpComChannels.setEnabled(False) - self.volOpComHeights.setEnabled(False) - self.volOpFilter.setEnabled(False) - self.volOpComProfile.setEnabled(False) - self.volOpComCode.setEnabled(False) - self.volOpCohInt.setEnabled(False) - self.volOpChannel.setEnabled(False) - self.volOpHeights.setEnabled(False) - self.volOpProfile.setEnabled(False) - self.volOpRadarfrequency.setEnabled(False) - self.volOpSplitter.setEnabled(False) - self.volOpCombiner.setEnabled(False) - - self.volOpCebChannels.setCheckState(0) - self.volOpCebRadarfrequency.setCheckState(0) - self.volOpCebHeights.setCheckState(0) - self.volOpCebFilter.setCheckState(0) - self.volOpCebProfile.setCheckState(0) - self.volOpCebDecodification.setCheckState(0) - self.volOpCebCohInt.setCheckState(0) - self.volOpCebSplitter.setCheckState(0) - self.volOpCebCombiner.setCheckState(0) - - self.volOpChannel.clear() - self.volOpHeights.clear() - self.volOpProfile.clear() - self.volOpFilter.clear() - self.volOpCohInt.clear() - self.volOpRadarfrequency.clear() - self.volOpSplitter.clear() - self.volOpCombiner.clear() - - if datatype == 'Spectra': - - if inputPUObj.datatype == 'Spectra': - self.specOpnFFTpoints.setEnabled(False) - self.specOpProfiles.setEnabled(False) - self.specOpippFactor.setEnabled(False) - else: - self.specOpnFFTpoints.setEnabled(True) - self.specOpProfiles.setEnabled(True) - self.specOpippFactor.setEnabled(True) - - self.specOpCebCrossSpectra.setCheckState(0) - self.specOpCebChannel.setCheckState(0) - self.specOpCebHeights.setCheckState(0) - self.specOpCebIncoherent.setCheckState(0) - self.specOpCebRemoveDC.setCheckState(0) - self.specOpCebRemoveInt.setCheckState(0) - self.specOpCebgetNoise.setCheckState(0) - self.specOpCebRadarfrequency.setCheckState(0) - - self.specOpRadarfrequency.setEnabled(False) - self.specOppairsList.setEnabled(False) - self.specOpChannel.setEnabled(False) - self.specOpHeights.setEnabled(False) - self.specOpIncoherent.setEnabled(False) - self.specOpgetNoise.setEnabled(False) - - self.specOpRadarfrequency.clear() - self.specOpnFFTpoints.clear() - self.specOpProfiles.clear() - self.specOpippFactor.clear - self.specOppairsList.clear() - self.specOpChannel.clear() - self.specOpHeights.clear() - self.specOpIncoherent.clear() - self.specOpgetNoise.clear() - - self.specGraphCebSpectraplot.setCheckState(0) - self.specGraphCebCrossSpectraplot.setCheckState(0) - self.specGraphCebRTIplot.setCheckState(0) - self.specGraphCebRTInoise.setCheckState(0) - self.specGraphCebCoherencmap.setCheckState(0) - self.specGraphPowerprofile.setCheckState(0) - - self.specGraphSaveSpectra.setCheckState(0) - self.specGraphSaveCross.setCheckState(0) - self.specGraphSaveRTIplot.setCheckState(0) - self.specGraphSaveRTInoise.setCheckState(0) - self.specGraphSaveCoherencemap.setCheckState(0) - self.specGraphSavePowerprofile.setCheckState(0) - - self.specGraphftpRTIplot.setCheckState(0) - self.specGraphftpRTInoise.setCheckState(0) - self.specGraphftpCoherencemap.setCheckState(0) - - self.specGraphPath.clear() - self.specGraphPrefix.clear() - - self.specGgraphftpratio.clear() - - self.specGgraphChannelList.clear() - self.specGgraphFreq.clear() - self.specGgraphHeight.clear() - self.specGgraphDbsrange.clear() - self.specGgraphmagnitud.clear() - self.specGgraphTminTmax.clear() - self.specGgraphTimeRange.clear() - - if datatype == 'SpectraHeis': - self.specHeisOpCebIncoherent.setCheckState(0) - self.specHeisOpIncoherent.setEnabled(False) - self.specHeisOpIncoherent.clear() - - self.specHeisGraphCebSpectraplot.setCheckState(0) - self.specHeisGraphCebRTIplot.setCheckState(0) - - self.specHeisGraphSaveSpectra.setCheckState(0) - self.specHeisGraphSaveRTIplot.setCheckState(0) - - self.specHeisGraphftpSpectra.setCheckState(0) - self.specHeisGraphftpRTIplot.setCheckState(0) - - self.specHeisGraphPath.clear() - self.specHeisGraphPrefix.clear() - self.specHeisGgraphChannelList.clear() - self.specHeisGgraphXminXmax.clear() - self.specHeisGgraphYminYmax.clear() - self.specHeisGgraphTminTmax.clear() - self.specHeisGgraphTimeRange.clear() - self.specHeisGgraphftpratio.clear() - - def showtabPUCreated(self, datatype): - - if datatype == "Voltage": - self.tabVoltage.setEnabled(True) - self.tabProject.setEnabled(False) - self.tabSpectra.setEnabled(False) - self.tabCorrelation.setEnabled(False) - self.tabSpectraHeis.setEnabled(False) - self.tabWidgetProject.setCurrentWidget(self.tabVoltage) - - if datatype == "Spectra": - self.tabVoltage.setEnabled(False) - self.tabProject.setEnabled(False) - self.tabSpectra.setEnabled(True) - self.tabCorrelation.setEnabled(False) - self.tabSpectraHeis.setEnabled(False) - self.tabWidgetProject.setCurrentWidget(self.tabSpectra) - - if datatype == "SpectraHeis": - self.tabVoltage.setEnabled(False) - self.tabProject.setEnabled(False) - self.tabSpectra.setEnabled(False) - self.tabCorrelation.setEnabled(False) - self.tabSpectraHeis.setEnabled(True) - self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis) - - def checkInputsProject(self): - """ - Check Inputs Project: - - project_name - - datatype - - ext - - data_path - - readmode - - delay - - set - - walk - """ - parms_ok = True - project_name = str(self.proName.text()) - if project_name == '' or project_name == None: - outputstr = "Enter the Project Name" - self.console.append(outputstr) - parms_ok = False - project_name = None - - datatype = str(self.proComDataType.currentText()) - if not(datatype in ['Voltage', 'Spectra', 'Fits', 'USRP']): - outputstr = 'datatype = %s, this must be either Voltage, Spectra, SpectraHeis or USRP' % datatype - self.console.append(outputstr) - parms_ok = False - datatype = None - - ext = str(self.proDataType.text()) - if not(ext in ['.r', '.pdata', '.fits', '.hdf5']): - outputstr = "extension files must be .r , .pdata, .fits or .hdf5" - self.console.append(outputstr) - parms_ok = False - ext = None - - data_path = str(self.proDataPath.text()) - - if data_path == '': - outputstr = 'Datapath is empty' - self.console.append(outputstr) - parms_ok = False - data_path = None - - if data_path != None: - if not os.path.isdir(data_path): - outputstr = 'Datapath:%s does not exist' % data_path - self.console.append(outputstr) - parms_ok = False - data_path = None - - read_mode = str(self.proComReadMode.currentText()) - if not(read_mode in ['Online', 'Offline']): - outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode - self.console.append(outputstr) - parms_ok = False - read_mode = None - - delay = None - if read_mode == "Online": - parms_ok = False - try: - delay = int(str(self.proDelay.text())) - parms_ok = True - except: - outputstr = 'Delay: %s, this must be a integer number' % str(self.proDelay.text()) - self.console.append(outputstr) - - try: - set = int(str(self.proSet.text())) - except: - # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text()) - # self.console.append(outputstr) - # parms_ok = False - set = None - - walk = int(self.proComWalk.currentIndex()) - expLabel = str(self.proExpLabel.text()) - - return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set, expLabel - - def checkInputsPUSave(self, datatype): - """ - Check Inputs Spectra Save: - - path - - blocks Per File - - sufix - - dataformat - """ - parms_ok = True - - if datatype == "Voltage": - output_path = str(self.volOutputPath.text()) - blocksperfile = str(self.volOutputblocksperfile.text()) - profilesperblock = str(self.volOutputprofilesperblock.text()) - - if datatype == "Spectra": - output_path = str(self.specOutputPath.text()) - blocksperfile = str(self.specOutputblocksperfile.text()) - profilesperblock = 0 - - if datatype == "SpectraHeis": - output_path = str(self.specHeisOutputPath.text()) - blocksperfile = str(self.specHeisOutputblocksperfile.text()) - metadata_file = str(self.specHeisOutputMetada.text()) - - message = '' - - if not os.path.isdir(output_path): - message += 'OutputPath:%s does not exist\n' % output_path - parms_ok = False - - try: - profilesperblock = int(profilesperblock) - except: - if datatype == "Voltage": - message += 'Profilesperblock: %s, this must be a integer number\n' % str(self.volOutputprofilesperblock.text()) - parms_ok = False - profilesperblock = None - - try: - blocksperfile = int(blocksperfile) - except: - if datatype == "Voltage": - message += 'Blocksperfile: %s, this must be a integer number\n' % str(self.volOutputblocksperfile.text()) - elif datatype == "Spectra": - message += 'Blocksperfile: %s, this must be a integer number\n' % str(self.specOutputblocksperfile.text()) - elif datatype == "SpectraHeis": - message += 'Blocksperfile: %s, this must be a integer number\n' % str(self.specHeisOutputblocksperfile.text()) - - parms_ok = False - blocksperfile = None - - if datatype == "SpectraHeis": - if metadata_file != '': - if not os.path.isfile(metadata_file): - message += 'Metadata file %s does not exist\n' % metadata_file - parms_ok = False - - if str.strip(output_path) != '': - self.console.append(message) - - if datatype == "Voltage": - return parms_ok, output_path, blocksperfile, profilesperblock - - - if datatype == "Spectra": - return parms_ok, output_path, blocksperfile, profilesperblock - - - if datatype == "SpectraHeis": - return parms_ok, output_path, blocksperfile, metadata_file - - def findDatafiles(self, data_path, ext, walk, expLabel=''): - - dateList = [] - fileList = [] - - if ext == ".r": - from schainpy.model.io.jroIO_base import JRODataReader - - readerObj = JRODataReader() - dateList = readerObj.findDatafiles(path=data_path, - expLabel=expLabel, - ext=ext, - walk=walk) - - if ext == ".pdata": - from schainpy.model.io.jroIO_base import JRODataReader - - readerObj = JRODataReader() - dateList = readerObj.findDatafiles(path=data_path, - expLabel=expLabel, - ext=ext, - walk=walk) - - if ext == ".fits": - from schainpy.model.io.jroIO_base import JRODataReader - - readerObj = JRODataReader() - dateList = readerObj.findDatafiles(path=data_path, - expLabel=expLabel, - ext=ext, - walk=walk) - - if ext == ".hdf5": - from schainpy.model.io.jroIO_usrp import USRPReader - - readerObj = USRPReader() - dateList = readerObj.findDatafiles(path=data_path) - - return dateList - - def loadDays(self, data_path, ext, walk, expLabel=''): - """ - Method to loads day - """ -# self._disable_save_button() -# self._disable_play_button() -# self.proOk.setEnabled(False) - - self.proComStartDate.clear() - self.proComEndDate.clear() - - self.dateList = [] - - if not data_path: - self.console.append("Datapath has not been set") - return [] - - if not os.path.isdir(data_path): - self.console.append("Directory %s does not exist" %data_path) - return [] - - self.dataPath = data_path - - dateList = self.findDatafiles(data_path, ext=ext, walk=walk, expLabel=expLabel) - - if not dateList: -# self.console.clear() - if walk: - if expLabel: - outputstr = "No files (*%s) were found on %s/DOYPATH/%s" % (ext, data_path, expLabel) - else: - outputstr = "No files (*%s) were found on %s" % (ext, data_path) - else: - outputstr = "No files (*%s) were found on %s" % (ext, data_path) - - self.console.append(outputstr) - return [] - - dateStrList = [] - for thisDate in dateList: - dateStr = thisDate.strftime("%Y/%m/%d") - - self.proComStartDate.addItem(dateStr) - self.proComEndDate.addItem(dateStr) - dateStrList.append(dateStr) - - self.proComStartDate.setCurrentIndex(0) - self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1) - - self.dateList = dateStrList - - self.console.clear() - self.console.append("Successful load") - -# self.proOk.setEnabled(True) -# self._enable_play_button() -# self._enable_save_button() - - return self.dateList - - def setWorkSpaceGUI(self, pathWorkSpace=None): - - if pathWorkSpace == None: - home = os.path.expanduser("~") - pathWorkSpace = os.path.join(home,'schain_workspace') - - self.pathWorkSpace = pathWorkSpace - - """ - Comandos Usados en Console - """ - def __del__(self): - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - - def normalOutputWritten(self, text): - color_black = QtGui.QColor(0,0,0) - self.console.setTextColor(color_black) - self.console.append(text) - - def errorOutputWritten(self, text): - color_red = QtGui.QColor(255,0,0) - color_black = QtGui.QColor(0,0,0) - - self.console.setTextColor(color_red) - self.console.append(text) - self.console.setTextColor(color_black) - - def _enable_save_button(self): - - self.actionSaveToolbar.setEnabled(True) - self.actionSave.setEnabled(True) - - def _disable_save_button(self): - - self.actionSaveToolbar.setEnabled(False) - self.actionSave.setEnabled(False) - - def _enable_play_button(self): - - if self.controllerThread: - if self.controllerThread.isRunning(): - return - - self.actionStart.setEnabled(True) - self.actionStarToolbar.setEnabled(True) - - self.changeStartIcon(started=False) - - def _disable_play_button(self): - - self.actionStart.setEnabled(False) - self.actionStarToolbar.setEnabled(False) - - self.changeStartIcon(started=True) - - def _enable_stop_button(self): - - self.actionPause.setEnabled(True) - self.actionStop.setEnabled(True) - - self.actionPauseToolbar.setEnabled(True) - self.actionStopToolbar.setEnabled(True) - - self.changePauseIcon(paused=False) - self.changeStopIcon(started=True) - - def _disable_stop_button(self): - - self.actionPause.setEnabled(False) - self.actionStop.setEnabled(False) - - self.actionPauseToolbar.setEnabled(False) - self.actionStopToolbar.setEnabled(False) - - self.changePauseIcon(paused=False) - self.changeStopIcon(started=False) - - def setGUIStatus(self): - - self.setWindowTitle("ROJ-Signal Chain") - self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"logo.png") )) - - self.tabWidgetProject.setEnabled(False) - self.tabVoltage.setEnabled(False) - self.tabSpectra.setEnabled(False) - self.tabCorrelation.setEnabled(False) - self.frame_2.setEnabled(False) - - self.actionCreate.setShortcut('Ctrl+N') - self.actionOpen.setShortcut('Ctrl+O') - self.actionSave.setShortcut('Ctrl+S') - self.actionClose.setShortcut('Ctrl+X') - - self.actionStart.setShortcut('Ctrl+1') - self.actionPause.setShortcut('Ctrl+2') - self.actionStop.setShortcut('Ctrl+3') - - self.actionFTP.setShortcut('Ctrl+F') - - self.actionStart.setEnabled(False) - self.actionPause.setEnabled(False) - self.actionStop.setEnabled(False) - - self.actionStarToolbar.setEnabled(False) - self.actionPauseToolbar.setEnabled(False) - self.actionStopToolbar.setEnabled(False) - - self.proName.clear() - self.proDataPath.setText('') - self.console.setReadOnly(True) - self.console.append("Welcome to Signal Chain\n\n") - self.console.append("Open a project or Create a new one\n") - self.proStartTime.setDisplayFormat("hh:mm:ss") - self.proDataType.setEnabled(False) - self.time = QtCore.QTime() - self.proEndTime.setDisplayFormat("hh:mm:ss") - startTime = "00:00:00" - endTime = "23:59:59" - starlist = startTime.split(":") - endlist = endTime.split(":") - self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2])) - self.proStartTime.setTime(self.time) - self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2])) - self.proEndTime.setTime(self.time) - self.proOk.setEnabled(False) - # set model Project Explorer - self.projectExplorerModel = QtGui.QStandardItemModel() - self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",)) - layout = QtGui.QVBoxLayout() - layout.addWidget(self.projectExplorerTree) - self.projectExplorerTree.setModel(self.projectExplorerModel) - self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click) - self.projectExplorerTree.clicked.connect(self.on_click) - self.projectExplorerTree.expandAll() - # set model Project Properties - - self.propertiesModel = TreeModel() - self.propertiesModel.initProjectView() - self.treeProjectProperties.setModel(self.propertiesModel) - self.treeProjectProperties.expandAll() - self.treeProjectProperties.allColumnsShowFocus() - self.treeProjectProperties.resizeColumnToContents(1) - - # set Project - self.pronTxs.setEnabled(False) - self.proComByBlock.setEnabled(False) - self.proExpLabel.setEnabled(False) - self.proDelay.setEnabled(False) - self.proSet.setEnabled(True) - self.proDataType.setReadOnly(True) - - # set Operation Voltage - self.volOpComChannels.setEnabled(False) - self.volOpComHeights.setEnabled(False) - self.volOpFilter.setEnabled(False) - self.volOpComProfile.setEnabled(False) - self.volOpComCode.setEnabled(False) - self.volOpFlip.setEnabled(False) - self.volOpCohInt.setEnabled(False) - self.volOpRadarfrequency.setEnabled(False) - - self.volOpChannel.setEnabled(False) - self.volOpHeights.setEnabled(False) - self.volOpProfile.setEnabled(False) - self.volOpComMode.setEnabled(False) - - self.volOpSplitter.setEnabled(False) - self.volOpCombiner.setEnabled(False) - self.volOpAdjustHei.setEnabled(False) - - self.volOpCebAdjustHei.setEnabled(False) - - self.volGraphPath.setEnabled(False) - self.volGraphPrefix.setEnabled(False) - self.volGraphToolPath.setEnabled(False) - - # set Graph Voltage - self.volGraphChannelList.setEnabled(False) - self.volGraphIntensityRange.setEnabled(False) - self.volGraphHeightrange.setEnabled(False) - - # set Operation Spectra - self.specOpnFFTpoints.setEnabled(False) - self.specOpProfiles.setEnabled(False) - self.specOpippFactor.setEnabled(False) - self.specOppairsList.setEnabled(False) - - self.specOpComCrossSpectra.setEnabled(False) - self.specOpComChannel.setEnabled(False) - self.specOpComHeights.setEnabled(False) - self.specOpIncoherent.setEnabled(False) - self.specOpgetNoise.setEnabled(False) - self.specOpRadarfrequency.setEnabled(False) - - - self.specOpChannel.setEnabled(False) - self.specOpHeights.setEnabled(False) - # set Graph Spectra - self.specGgraphChannelList.setEnabled(False) - self.specGgraphFreq.setEnabled(False) - self.specGgraphHeight.setEnabled(False) - self.specGgraphDbsrange.setEnabled(False) - self.specGgraphmagnitud.setEnabled(False) - self.specGgraphTminTmax.setEnabled(False) - self.specGgraphTimeRange.setEnabled(False) - self.specGraphPath.setEnabled(False) - self.specGraphToolPath.setEnabled(False) - self.specGraphPrefix.setEnabled(False) - - self.specGgraphftpratio.setEnabled(False) - # set Operation SpectraHeis - self.specHeisOpIncoherent.setEnabled(False) - self.specHeisOpCobIncInt.setEnabled(False) - # set Graph SpectraHeis - self.specHeisGgraphChannelList.setEnabled(False) - self.specHeisGgraphXminXmax.setEnabled(False) - self.specHeisGgraphYminYmax.setEnabled(False) - self.specHeisGgraphTminTmax.setEnabled(False) - self.specHeisGgraphTimeRange.setEnabled(False) - self.specHeisGgraphftpratio.setEnabled(False) - self.specHeisGraphPath.setEnabled(False) - self.specHeisGraphPrefix.setEnabled(False) - self.specHeisGraphToolPath.setEnabled(False) - - self.proComWalk.setCurrentIndex(0) - - # tool tip gui - QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) - self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process') - # tool tip gui project - - # tool tip gui volOp -# self.volOpChannel.setToolTip('Example: 1,2,3,4,5') -# self.volOpHeights.setToolTip('Example: 90,180') -# self.volOpFilter.setToolTip('Example: 2') -# self.volOpProfile.setToolTip('Example:0,127') -# self.volOpCohInt.setToolTip('Example: 128') -# self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3') -# self.volOpOk.setToolTip('If you have finished, please Ok ') -# # tool tip gui volGraph -# self.volGraphIntensityRange.setToolTip('Height range. Example: 50,100') -# self.volGraphHeightrange.setToolTip('Amplitude. Example: 0,10000') - # tool tip gui specOp -# self.specOpnFFTpoints.setToolTip('Example: 128') -# self.specOpProfiles.setToolTip('Example: 128') -# self.specOpippFactor.setToolTip('Example:1.0') -# self.specOpIncoherent.setToolTip('Example: 10') -# self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)') -# -# self.specOpChannel.setToolTip('Example: 0,1,2,3') -# self.specOpHeights.setToolTip('Example: 90,180') -# self.specOppairsList.setToolTip('Example: (0,1),(2,3)') -# # tool tip gui specGraph -# -# self.specGgraphChannelList.setToolTip('Example: 0,3,4') -# self.specGgraphFreq.setToolTip('Example: -20,20') -# self.specGgraphHeight.setToolTip('Example: 100,400') -# self.specGgraphDbsrange.setToolTip('Example: 30,170') -# -# self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME') -# -# -# self.specHeisOpIncoherent.setToolTip('Example: 10') -# -# self.specHeisGgraphChannelList.setToolTip('Example: 0,2,3') -# self.specHeisGgraphXminXmax.setToolTip('Example (Hz): -1000, 1000') -# self.specHeisGgraphYminYmax.setToolTip('Example (dB): 5, 35') -# self.specHeisGgraphTminTmax.setToolTip('Example (hours): 0, 24') -# self.specHeisGgraphTimeRange.setToolTip('Example (hours): 8') - - self.labelSet.show() - self.proSet.show() - - self.labelIPPKm.hide() - self.proIPPKm.hide() - - sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten) -# sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten) - - -class UnitProcessWindow(QMainWindow, Ui_UnitProcess): - """ - Class documentation goes here. - """ - closed = pyqtSignal() - create = False - - def __init__(self, parent=None): - """ - Constructor - """ - QMainWindow.__init__(self, parent) - self.setupUi(self) - self.getFromWindow = None - self.getfromWindowList = [] - self.dataTypeProject = None - - self.listUP = None - - @pyqtSignature("") - def on_unitPokbut_clicked(self): - """ - Slot documentation goes here. - """ - self.create = True - self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())] - # self.nameofUP= str(self.nameUptxt.text()) - self.typeofUP = str(self.comboTypeBox.currentText()) - self.close() - - - @pyqtSignature("") - def on_unitPcancelbut_clicked(self): - """ - Slot documentation goes here. - """ - self.create = False - self.close() - - def loadTotalList(self): - self.comboInputBox.clear() - for i in self.getfromWindowList: - - name = i.getElementName() - if name == 'Project': - id = i.id - name = i.name - if self.dataTypeProject == 'Voltage': - self.comboTypeBox.clear() - self.comboTypeBox.addItem("Voltage") - - if self.dataTypeProject == 'Spectra': - self.comboTypeBox.clear() - self.comboTypeBox.addItem("Spectra") - self.comboTypeBox.addItem("Correlation") - if self.dataTypeProject == 'Fits': - self.comboTypeBox.clear() - self.comboTypeBox.addItem("SpectraHeis") - - - if name == 'ProcUnit': - id = int(i.id) - 1 - name = i.datatype - if name == 'Voltage': - self.comboTypeBox.clear() - self.comboTypeBox.addItem("Spectra") - self.comboTypeBox.addItem("SpectraHeis") - self.comboTypeBox.addItem("Correlation") - if name == 'Spectra': - self.comboTypeBox.clear() - self.comboTypeBox.addItem("Spectra") - self.comboTypeBox.addItem("SpectraHeis") - self.comboTypeBox.addItem("Correlation") - if name == 'SpectraHeis': - self.comboTypeBox.clear() - self.comboTypeBox.addItem("SpectraHeis") - - self.comboInputBox.addItem(str(name)) - # self.comboInputBox.addItem(str(name)+str(id)) - - def closeEvent(self, event): - self.closed.emit() - event.accept() - -class Ftp(QMainWindow, Ui_Ftp): - """ - Class documentation goes here. - """ - create = False - closed = pyqtSignal() - server = None - remotefolder = None - username = None - password = None - ftp_wei = None - exp_code = None - sub_exp_code = None - plot_pos = None - - def __init__(self, parent=None): - """ - Constructor - """ - QMainWindow.__init__(self, parent) - self.setupUi(self) - self.setGUIStatus() - - def setGUIStatus(self): - self.setWindowTitle("ROJ-Signal Chain") - self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe') - self.folderFTP.setToolTip('Example: /home/wmaster/graficos') - self.usernameFTP.setToolTip('Example: myusername') - self.passwordFTP.setToolTip('Example: mypass ') - self.weightFTP.setToolTip('Example: 0') - self.expcodeFTP.setToolTip('Example: 0') - self.subexpFTP.setToolTip('Example: 0') - self.plotposFTP.setToolTip('Example: 0') - - def setParmsfromTemporal(self, server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos): - self.serverFTP.setText(str(server)) - self.folderFTP.setText(str(remotefolder)) - self.usernameFTP.setText(str(username)) - self.passwordFTP.setText(str(password)) - self.weightFTP.setText(str(ftp_wei)) - self.expcodeFTP.setText(str(exp_code)) - self.subexpFTP.setText(str(sub_exp_code)) - self.plotposFTP.setText(str(plot_pos)) - - def getParmsFromFtpWindow(self): - """ - Return Inputs Project: - - server - - remotefolder - - username - - password - - ftp_wei - - exp_code - - sub_exp_code - - plot_pos - """ - name_server_ftp = str(self.serverFTP.text()) - if not name_server_ftp: - self.console.clear() - self.console.append("Please Write a FTP Server") - return 0 - - folder_server_ftp = str(self.folderFTP.text()) - if not folder_server_ftp: - self.console.clear() - self.console.append("Please Write a Folder") - return 0 - - username_ftp = str(self.usernameFTP.text()) - if not username_ftp: - self.console.clear() - self.console.append("Please Write a User Name") - return 0 - - password_ftp = str(self.passwordFTP.text()) - if not password_ftp: - self.console.clear() - self.console.append("Please Write a passwordFTP") - return 0 - - ftp_wei = str(self.weightFTP.text()) - if not ftp_wei == "": - try: - ftp_wei = int(self.weightFTP.text()) - except: - self.console.clear() - self.console.append("Please Write a ftp_wei number") - return 0 - - exp_code = str(self.expcodeFTP.text()) - if not exp_code == "": - try: - exp_code = int(self.expcodeFTP.text()) - except: - self.console.clear() - self.console.append("Please Write a exp_code number") - return 0 - - - sub_exp_code = str(self.subexpFTP.text()) - if not sub_exp_code == "": - try: - sub_exp_code = int(self.subexpFTP.text()) - except: - self.console.clear() - self.console.append("Please Write a sub_exp_code number") - return 0 - - plot_pos = str(self.plotposFTP.text()) - if not plot_pos == "": - try: - plot_pos = int(self.plotposFTP.text()) - except: - self.console.clear() - self.console.append("Please Write a plot_pos number") - return 0 - - return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos - - @pyqtSignature("") - def on_ftpOkButton_clicked(self): - server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow() - self.create = True - self.close() - - @pyqtSignature("") - def on_ftpCancelButton_clicked(self): - self.create = False - self.close() - - def closeEvent(self, event): - self.closed.emit() - event.accept() - -class ftpBuffer(): - - server = None - remotefolder = None - username = None - password = None - ftp_wei = None - exp_code = None - sub_exp_code = None - plot_pos = None - create = False - withoutconfig = False - createforView = False - localfolder = None - extension = None - period = None - protocol = None - - def __init__(self): - - self.create = False - self.server = None - self.remotefolder = None - self.username = None - self.password = None - self.ftp_wei = None - self.exp_code = None - self.sub_exp_code = None - self.plot_pos = None - # self.create = False - self.localfolder = None - self.extension = None - self.period = None - self.protocol = None - - def setwithoutconfiguration(self): - - self.create = False - self.server = "jro-app.igp.gob.pe" - self.remotefolder = "/home/wmaster/graficos" - self.username = "wmaster" - self.password = "mst2010vhf" - self.withoutconfig = True - self.localfolder = './' - self.extension = '.png' - self.period = 60 - self.protocol = 'ftp' - self.createforView = True - - if not self.ftp_wei: - self.ftp_wei = 0 - - if not self.exp_code: - self.exp_code = 0 - - if not self.sub_exp_code: - self.sub_exp_code = 0 - - if not self.plot_pos: - self.plot_pos = 0 - - def save(self, server, remotefolder, username, password, ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, localfolder='./', extension='.png', period=60, protocol='ftp'): - - self.server = server - self.remotefolder = remotefolder - self.username = username - self.password = password - self.ftp_wei = ftp_wei - self.exp_code = exp_code - self.sub_exp_code = sub_exp_code - self.plot_pos = plot_pos - self.create = True - self.withoutconfig = False - self.createforView = True - self.localfolder = localfolder - self.extension = extension - self.period = period - self.protocol = protocol - - def recover(self): - - return self.server, self.remotefolder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos, self.extension, self.period, self.protocol - -class ShowMeConsole(QtCore.QObject): - - textWritten = QtCore.pyqtSignal(str) - - def write(self, text): - - if len(text) == 0: - self.textWritten.emit("\n") - return - - if text[-1] == "\n": - text = text[:-1] - - self.textWritten.emit(str(text)) - - def flush(self): - pass diff --git a/schainpy/gui/viewcontroller/ftp.py b/schainpy/gui/viewcontroller/ftp.py deleted file mode 100644 index 5b08bbc..0000000 --- a/schainpy/gui/viewcontroller/ftp.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing Ftp. -""" - -from PyQt4.QtGui import QMainWindow -from PyQt4.QtCore import pyqtSignature - -from schainpy.gui.viewer.ftp import Ui_Ftp - -class Ftp(QMainWindow, Ui_MainWindow): - """ - Class documentation goes here. - """ - def __init__(self, parent = None): - """ - Constructor - """ - QMainWindow.__init__(self, parent) - self.setupUi(self) diff --git a/schainpy/gui/viewcontroller/initwindow.py b/schainpy/gui/viewcontroller/initwindow.py deleted file mode 100644 index 3ee1396..0000000 --- a/schainpy/gui/viewcontroller/initwindow.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing InitWindow. -""" -import os - -from PyQt4.QtGui import QDialog -from PyQt4.QtCore import pyqtSignature -from PyQt4 import QtCore -from PyQt4 import QtGui - -from schainpy.gui.viewer.ui_initwindow import Ui_InitWindow -from schainpy.gui.figures import tools - -FIGURES_PATH = tools.get_path() - -class InitWindow(QDialog, Ui_InitWindow): - """ - Class documentation goes here. - """ - def __init__(self, parent = None): - """ - Constructor - """ - QDialog.__init__(self, parent) - self.setupUi(self) - self.setWindowTitle("ROJ-Signal Chain") - self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"logo.png") )) - - @pyqtSignature("") - def on_ExitBtn_clicked(self): - """ - Exit cierra la ventana de Bienvenida - """ - self.close() - - @pyqtSignature("") - def on_ContinueBtn_clicked(self): - """ - Continue cierra la ventana de Bienvenida, a este evento se le complementa con la accion - conectar con la ventana de configuracion de Workspace - """ - # TODO: not implemented yet - #raise NotImplementedError - self.accept() diff --git a/schainpy/gui/viewcontroller/parametersModel.py b/schainpy/gui/viewcontroller/parametersModel.py deleted file mode 100644 index 665c01f..0000000 --- a/schainpy/gui/viewcontroller/parametersModel.py +++ /dev/null @@ -1,92 +0,0 @@ -""" -Classes to save parameters from Windows. - --Project window --Voltage window --Spectra window --SpectraHeis window --Correlation window - -""" - -class ProjectParms(): - - parmsOk = False - name = None - description = None - datatype = None - ext = None - dpath = None - startDate = None - endDate = None - startTime = None - endTime = None - online = None - delay = None - walk = None - expLabel = None - set = None - ippKm = None - - def __init__(self): - - self.parmsOk = True - self.description = '' - self.expLabel = '' - self.set = '' - self.ippKm = '' - self.walk = None - self.delay = '' - - def getDatatypeIndex(self): - - indexDatatype = None - - if 'voltage' in self.datatype.lower(): - indexDatatype = 0 - if 'spectra' in self.datatype.lower(): - indexDatatype = 1 - if 'fits' in self.datatype.lower(): - indexDatatype = 2 - if 'usrp' in self.datatype.lower(): - indexDatatype = 3 - return indexDatatype - - def getExt(self): - - ext = None - - if self.datatype.lower() == 'voltage': - ext = '.r' - if self.datatype.lower() == 'spectra': - ext = '.pdata' - if self.datatype.lower() == 'fits': - ext = '.fits' - if self.datatype.lower() == 'usrp': - ext = '.hdf5' - return ext - - def set(self, project_name, datatype, ext, dpath, online, - startDate=None, endDate=None, startTime=None, endTime=None, - delay=None, walk=None, set=None, ippKm=None, parmsOk=True, expLabel=''): - - name = project_name - datatype = datatype - ext = ext - dpath = dpath - startDate = startDate - endDate = endDate - startTime = startTime - endTime = endTime - online = online - delay = delay - walk = walk - set = set - ippKm = ippKm - expLabel = expLabel - - self.parmsOk = parmsOk - - def isValid(self): - - return self.parmsOk \ No newline at end of file diff --git a/schainpy/gui/viewcontroller/propertiesViewModel.py b/schainpy/gui/viewcontroller/propertiesViewModel.py deleted file mode 100644 index 1a278ee..0000000 --- a/schainpy/gui/viewcontroller/propertiesViewModel.py +++ /dev/null @@ -1,211 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module contains every model class to create, modify and show a property tree on a GUI. -""" - -from PyQt4 import QtCore -import itertools - -HORIZONTAL_HEADERS = ("Property","Value " ) - -HORIZONTAL = ("RAMA :",) - -class PropertyBuffer(): - - def __init__(self): - - self.clear() - - def clear(self): - - self.headerList = [] - self.parmList = [] - self.valueList = [] - - def append(self, header, parm, value): - - self.headerList.append(header) - self.parmList.append(parm) - self.valueList.append(value) - - return - - def get(self): - - return self.headerList, self.parmList, self.valueList - - def getPropertyModel(self): - - propertiesModel = TreeModel() - propertiesModel.showProperties(self.headerList, self.parmList, self.valueList) - - return propertiesModel - - -class TreeModel(QtCore.QAbstractItemModel): - ''' - a model to display a few names, ordered by encabezado - - ''' - def __init__(self ,parent=None): - super(TreeModel, self).__init__(parent) - self.people = [] - - def initProjectView(self): - """ - Reemplazo del método showtree - """ - HORIZONTAL_HEADERS = ("Property","Value " ) - HORIZONTAL = ("RAMA :",) - self.rootItem = TreeItem(None, "ALL", None) - self.parents = {0 : self.rootItem} - self.__setupModelData() - - def initPUVoltageView(self): - HORIZONTAL_HEADERS = ("Operation"," Parameter Value " ) - HORIZONTAL = ("RAMA :",) - self.rootItem = TreeItem(None, "ALL", None) - self.parents = {0 : self.rootItem} - self.__setupModelData() - - def showProperties(self,headerList, parmList, valueList): - """ - set2Obje - """ - for header, parameter, value in itertools.izip(headerList, parmList, valueList): - person = person_class(header, parameter, value) - self.people.append(person) - - self.rootItem = TreeItem(None, "ALL", None) - self.parents = {0 : self.rootItem} - self.__setupModelData() - - def columnCount(self, parent=None): - if parent and parent.isValid(): - return parent.internalPointer().columnCount() - else: - return len(HORIZONTAL_HEADERS) - - def data(self, index, role): - if not index.isValid(): - return QtCore.QVariant() - - item = index.internalPointer() - if role == QtCore.Qt.DisplayRole: - return item.data(index.column()) - if role == QtCore.Qt.UserRole: - if item: - return item.person - - return QtCore.QVariant() - - def index(self, row, column, parent): - if not self.hasIndex(row, column, parent): - return QtCore.QModelIndex() - - if not parent.isValid(): - parentItem = self.rootItem - else: - parentItem = parent.internalPointer() - - childItem = parentItem.child(row) - if childItem: - return self.createIndex(row, column, childItem) - else: - return QtCore.QModelIndex() - - def parent(self, index): - if not index.isValid(): - return QtCore.QModelIndex() - - childItem = index.internalPointer() - if not childItem: - return QtCore.QModelIndex() - - parentItem = childItem.parent() - - if parentItem == self.rootItem: - return QtCore.QModelIndex() - - return self.createIndex(parentItem.row(), 0, parentItem) - - def rowCount(self, parent=QtCore.QModelIndex()): - if parent.column() > 0: - return 0 - if not parent.isValid(): - p_Item = self.rootItem - else: - p_Item = parent.internalPointer() - return p_Item.childCount() - - def __setupModelData(self): - for person in self.people: - if person.value: - encabezado = person.header - - if not self.parents.has_key(encabezado): - newparent = TreeItem(None, encabezado, self.rootItem) - self.rootItem.appendChild(newparent) - - self.parents[encabezado] = newparent - - parentItem = self.parents[encabezado] - newItem = TreeItem(person, "", parentItem) - parentItem.appendChild(newItem) - -class person_class(object): - ''' - a trivial custom data object - ''' - def __init__(self, header, parameter, value): - self.header = header - self.parameter = parameter - self.value = value - - def __repr__(self): - return "PERSON - %s %s"% (self.parameter, self.header) - -class TreeItem(object): - ''' - a python object used to return row/column data, and keep note of - it's parents and/or children - ''' - def __init__(self, person, header, parentItem): - self.person = person - self.parentItem = parentItem - self.header = header - self.childItems = [] - - def appendChild(self, item): - self.childItems.append(item) - - def child(self, row): - return self.childItems[row] - - def childCount(self): - return len(self.childItems) - - def columnCount(self): - return 2 - - def data(self, column): - if self.person == None: - if column == 0: - return QtCore.QVariant(self.header) - if column == 1: - return QtCore.QVariant("") - else: - if column == 0: - return QtCore.QVariant(self.person.parameter) - if column == 1: - return QtCore.QVariant(self.person.value) - return QtCore.QVariant() - - def parent(self): - return self.parentItem - - def row(self): - if self.parentItem: - return self.parentItem.childItems.index(self) - return 0 - \ No newline at end of file diff --git a/schainpy/gui/viewcontroller/workspace.py b/schainpy/gui/viewcontroller/workspace.py deleted file mode 100644 index 4ad7729..0000000 --- a/schainpy/gui/viewcontroller/workspace.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -import os -from os.path import expanduser - -from PyQt4.QtGui import QDialog -from PyQt4.QtCore import pyqtSignature -from PyQt4.QtCore import pyqtSignal -from PyQt4 import QtGui, QtCore - -from schainpy.gui.viewer.ui_workspace import Ui_Workspace -from schainpy.gui.figures import tools - -FIGURES_PATH = tools.get_path() - -class Workspace(QDialog, Ui_Workspace): - """ - Class documentation goes here. - """ - - def __init__(self, parent = None): - """ - Constructor - """ - QDialog.__init__(self, parent) - self.dirList=[] - self.setupUi(self) - self.setWindowTitle("ROJ-Signal Chain") - self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"logo.png") )) - #*####### DIRECTORIO DE TRABAJO #########*# - #self.dirCmbBox.setItemText(0, QtGui.QApplication.translate("MainWindow", "C:\WorkSpaceGui", None, QtGui.QApplication.UnicodeUTF8)) - home=expanduser("~") - self.dir=os.path.join(home,'schain_workspace') - if not os.path.exists(self.dir): - os.makedirs(self.dir) - self.dirComBox.addItem(self.dir) - self.i=0 - - - @pyqtSignature("") - def on_dirToolPath_clicked(self): - """ - Slot documentation goes here. - """ - self.i +=1 - self.dirBrowse = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)) - self.dirComBox.addItem(self.dirBrowse) - self.dirComBox.setCurrentIndex(self.i) - - - - @pyqtSignature("") - def on_dirOkBtn_clicked(self): - """ - VISTA DE INTERFAZ GRÁFICA - """ - self.accept() - # self.close() -# - @pyqtSignature("") - def on_dirCancelBtn_clicked(self): - """ - Cerrar - """ - self.close() - - - - - - \ No newline at end of file diff --git a/schainpy/gui/viewer/__init__.py b/schainpy/gui/viewer/__init__.py deleted file mode 100644 index 416f53f..0000000 --- a/schainpy/gui/viewer/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# import ui_initwindow -# import ui_workspace -# import ui_mainwindow -# import ui_window -# import ui_ftp \ No newline at end of file diff --git a/schainpy/gui/viewer/ui_ftp.py b/schainpy/gui/viewer/ui_ftp.py deleted file mode 100644 index b785509..0000000 --- a/schainpy/gui/viewer/ui_ftp.py +++ /dev/null @@ -1,140 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file '/home/alex/ui/ftpConfig4.ui' -# -# Created: Tue Aug 20 08:24:35 2013 -# by: PyQt4 UI code generator 4.10 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_Ftp(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName(_fromUtf8("MainWindow")) - MainWindow.resize(374, 399) - MainWindow.setMinimumSize(QtCore.QSize(374, 399)) - MainWindow.setMaximumSize(QtCore.QSize(374, 399)) - self.centralWidget = QtGui.QWidget(MainWindow) - self.centralWidget.setObjectName(_fromUtf8("centralWidget")) - self.label = QtGui.QLabel(self.centralWidget) - self.label.setGeometry(QtCore.QRect(9, 38, 47, 17)) - self.label.setObjectName(_fromUtf8("label")) - self.label_2 = QtGui.QLabel(self.centralWidget) - self.label_2.setGeometry(QtCore.QRect(9, 133, 77, 17)) - self.label_2.setObjectName(_fromUtf8("label_2")) - self.label_3 = QtGui.QLabel(self.centralWidget) - self.label_3.setGeometry(QtCore.QRect(9, 166, 68, 17)) - self.label_3.setObjectName(_fromUtf8("label_3")) - self.label_4 = QtGui.QLabel(self.centralWidget) - self.label_4.setGeometry(QtCore.QRect(9, 9, 101, 17)) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.label_4.setFont(font) - self.label_4.setObjectName(_fromUtf8("label_4")) - self.label_5 = QtGui.QLabel(self.centralWidget) - self.label_5.setGeometry(QtCore.QRect(9, 104, 87, 17)) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.label_5.setFont(font) - self.label_5.setObjectName(_fromUtf8("label_5")) - self.label_6 = QtGui.QLabel(self.centralWidget) - self.label_6.setGeometry(QtCore.QRect(9, 71, 47, 17)) - self.label_6.setObjectName(_fromUtf8("label_6")) - self.serverFTP = QtGui.QLineEdit(self.centralWidget) - self.serverFTP.setGeometry(QtCore.QRect(130, 40, 231, 27)) - self.serverFTP.setObjectName(_fromUtf8("serverFTP")) - self.folderFTP = QtGui.QLineEdit(self.centralWidget) - self.folderFTP.setGeometry(QtCore.QRect(130, 70, 231, 27)) - self.folderFTP.setObjectName(_fromUtf8("folderFTP")) - self.usernameFTP = QtGui.QLineEdit(self.centralWidget) - self.usernameFTP.setGeometry(QtCore.QRect(130, 130, 231, 27)) - self.usernameFTP.setObjectName(_fromUtf8("usernameFTP")) - self.passwordFTP = QtGui.QLineEdit(self.centralWidget) - self.passwordFTP.setEchoMode(QtGui.QLineEdit.Password) - self.passwordFTP.setGeometry(QtCore.QRect(130, 160, 231, 27)) - self.passwordFTP.setObjectName(_fromUtf8("passwordFTP")) - self.ftpCancelButton = QtGui.QPushButton(self.centralWidget) - self.ftpCancelButton.setGeometry(QtCore.QRect(130, 360, 111, 27)) - self.ftpCancelButton.setObjectName(_fromUtf8("ftpCancelButton")) - self.ftpOkButton = QtGui.QPushButton(self.centralWidget) - self.ftpOkButton.setGeometry(QtCore.QRect(250, 360, 111, 27)) - self.ftpOkButton.setObjectName(_fromUtf8("ftpOkButton")) - self.label_7 = QtGui.QLabel(self.centralWidget) - self.label_7.setGeometry(QtCore.QRect(10, 200, 66, 17)) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.label_7.setFont(font) - self.label_7.setObjectName(_fromUtf8("label_7")) - self.label_8 = QtGui.QLabel(self.centralWidget) - self.label_8.setGeometry(QtCore.QRect(10, 230, 81, 17)) - self.label_8.setObjectName(_fromUtf8("label_8")) - self.label_9 = QtGui.QLabel(self.centralWidget) - self.label_9.setGeometry(QtCore.QRect(10, 260, 81, 17)) - self.label_9.setObjectName(_fromUtf8("label_9")) - self.label_10 = QtGui.QLabel(self.centralWidget) - self.label_10.setGeometry(QtCore.QRect(10, 290, 81, 17)) - self.label_10.setObjectName(_fromUtf8("label_10")) - self.label_11 = QtGui.QLabel(self.centralWidget) - self.label_11.setGeometry(QtCore.QRect(10, 320, 81, 17)) - self.label_11.setObjectName(_fromUtf8("label_11")) - self.weightFTP = QtGui.QLineEdit(self.centralWidget) - self.weightFTP.setGeometry(QtCore.QRect(130, 230, 231, 27)) - self.weightFTP.setObjectName(_fromUtf8("weightFTP")) - self.expcodeFTP = QtGui.QLineEdit(self.centralWidget) - self.expcodeFTP.setGeometry(QtCore.QRect(130, 260, 231, 27)) - self.expcodeFTP.setObjectName(_fromUtf8("expcodeFTP")) - self.subexpFTP = QtGui.QLineEdit(self.centralWidget) - self.subexpFTP.setGeometry(QtCore.QRect(130, 290, 231, 27)) - self.subexpFTP.setObjectName(_fromUtf8("subexpFTP")) - self.plotposFTP = QtGui.QLineEdit(self.centralWidget) - self.plotposFTP.setGeometry(QtCore.QRect(130, 320, 231, 27)) - self.plotposFTP.setObjectName(_fromUtf8("plotposFTP")) - MainWindow.setCentralWidget(self.centralWidget) - - self.retranslateUi(MainWindow) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) - self.label.setText(_translate("MainWindow", "Server:", None)) - self.label_2.setText(_translate("MainWindow", "User Name:", None)) - self.label_3.setText(_translate("MainWindow", "Password:", None)) - self.label_4.setText(_translate("MainWindow", "Server Details", None)) - self.label_5.setText(_translate("MainWindow", "User Details", None)) - self.label_6.setText(_translate("MainWindow", "Remote Folder:", None)) - self.ftpCancelButton.setText(_translate("MainWindow", "Cancel", None)) - self.ftpOkButton.setText(_translate("MainWindow", "Ok", None)) - self.label_7.setText(_translate("MainWindow", "Project Details", None)) - self.label_8.setText(_translate("MainWindow", "Ftp_wei:", None)) - self.label_9.setText(_translate("MainWindow", "Exp_code:", None)) - self.label_10.setText(_translate("MainWindow", "Sub_exp:", None)) - self.label_11.setText(_translate("MainWindow", "Plot_pos:", None)) - - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - MainWindow = QtGui.QMainWindow() - ui = Ui_Ftp() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec_()) - diff --git a/schainpy/gui/viewer/ui_initwindow.py b/schainpy/gui/viewer/ui_initwindow.py deleted file mode 100644 index d6bc947..0000000 --- a/schainpy/gui/viewer/ui_initwindow.py +++ /dev/null @@ -1,95 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file '/home/roj-idl71/SignalChain/initwindowv2.ui' -# -# Created: Wed Mar 6 15:32:39 2013 -# by: PyQt4 UI code generator 4.8.6 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - _fromUtf8 = lambda s: s - -import os -from schainpy.gui.figures import tools -from schainpy import __version__ - -INITIAL_MSG = "Signal Chain GUI - v%s" %__version__ -FIGURES_PATH = tools.get_path() - -class Ui_InitWindow(object): - def setupUi(self, Dialog): - Dialog.setObjectName(_fromUtf8("Dialog")) - Dialog.resize(652, 496) - Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) - self.gridLayout = QtGui.QGridLayout(Dialog) - self.gridLayout.setObjectName(_fromUtf8("gridLayout")) - self.verticalLayout_3 = QtGui.QVBoxLayout() - self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) - self.verticalLayout_4 = QtGui.QVBoxLayout() - self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) - self.label_3 = QtGui.QLabel(Dialog) - font = QtGui.QFont() - font.setFamily(_fromUtf8("Cambria")) - font.setPointSize(22) - font.setBold(False) - font.setWeight(50) - self.label_3.setFont(font) - self.label_3.setText(QtGui.QApplication.translate("Dialog", INITIAL_MSG, None, QtGui.QApplication.UnicodeUTF8)) - self.label_3.setObjectName(_fromUtf8("label_3")) - self.verticalLayout_4.addWidget(self.label_3) - self.line_2 = QtGui.QFrame(Dialog) - self.line_2.setFrameShape(QtGui.QFrame.HLine) - self.line_2.setFrameShadow(QtGui.QFrame.Sunken) - self.line_2.setObjectName(_fromUtf8("line_2")) - self.verticalLayout_4.addWidget(self.line_2) - self.label_4 = QtGui.QLabel(Dialog) - self.label_4.setText(_fromUtf8("")) - self.label_4.setPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"w.jpg") ))) - self.label_4.setScaledContents(True) - self.label_4.setObjectName(_fromUtf8("label_4")) - self.verticalLayout_4.addWidget(self.label_4) - self.verticalLayout_3.addLayout(self.verticalLayout_4) - self.horizontalLayout_3 = QtGui.QHBoxLayout() - self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) - self.horizontalLayout_4 = QtGui.QHBoxLayout() - self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) - spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_4.addItem(spacerItem) - self.ExitBtn = QtGui.QPushButton(Dialog) - self.ExitBtn.setText(QtGui.QApplication.translate("Dialog", "Exit", None, QtGui.QApplication.UnicodeUTF8)) - self.ExitBtn.setObjectName(_fromUtf8("ExitBtn")) - self.horizontalLayout_4.addWidget(self.ExitBtn) - self.ContinueBtn = QtGui.QPushButton(Dialog) - self.ContinueBtn.setText(QtGui.QApplication.translate("Dialog", "Continue", None, QtGui.QApplication.UnicodeUTF8)) - self.ContinueBtn.setObjectName(_fromUtf8("ContinueBtn")) - self.horizontalLayout_4.addWidget(self.ContinueBtn) - spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_4.addItem(spacerItem1) - self.horizontalLayout_3.addLayout(self.horizontalLayout_4) - self.verticalLayout_3.addLayout(self.horizontalLayout_3) - self.gridLayout.addLayout(self.verticalLayout_3, 0, 0, 1, 1) - - self.retranslateUi(Dialog) - QtCore.QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - pass - - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - Dialog = QtGui.QDialog() - ui = Ui_InitWindow() - ui.setupUi(Dialog) - Dialog.show() - sys.exit(app.exec_()) - - - - diff --git a/schainpy/gui/viewer/ui_mainwindow.py b/schainpy/gui/viewer/ui_mainwindow.py deleted file mode 100644 index fb097e4..0000000 --- a/schainpy/gui/viewer/ui_mainwindow.py +++ /dev/null @@ -1,352 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file '/home/alex/ui/MainWindow_21_02_13_v49.ui' -# -# Created: Mon Mar 24 13:28:36 2014 -# by: PyQt4 UI code generator 4.10 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui -from windows import * - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -import os -from schainpy.gui.figures import tools -from schainpy import __version__ - -FIGURES_PATH = tools.get_path() - -ICON_START = "start_green.png" -ICON_PAUSE = "pause_yellow.png" -ICON_STOP = "stop_red.png" - -ICON_PAUSE_ENA = "restart_yellow.png" - -ICON_START_DIS = "start.png" -ICON_PAUSE_DIS = "pause.png" -ICON_STOP_DIS = "stop.png" - -class Ui_EnvWindow(object): - - def changeStartIcon(self, started=False): - - if started == False: - icon_name = ICON_START - else: - icon_name = ICON_START_DIS - - iconStart = QtGui.QIcon() - iconStart.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH, icon_name) )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionStarToolbar.setIcon(iconStart) - - return - - def changePauseIcon(self, paused=False): - - if paused == True: - icon_name = ICON_PAUSE_ENA - else: - icon_name = ICON_PAUSE - - iconPause = QtGui.QIcon() - iconPause.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH, icon_name) )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPauseToolbar.setIcon(iconPause) - - return - - def changeStopIcon(self, started=False): - - if started == True: - icon_name = ICON_STOP - else: - icon_name = ICON_STOP_DIS - - iconStop = QtGui.QIcon() - iconStop.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH, icon_name) )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionStopToolbar.setIcon(iconStop) - - return - - def setupUi(self, MainWindow): - - self.paused=False - - MainWindow.setObjectName(_fromUtf8("MainWindow")) - MainWindow.resize(1200, 800) - - self.centralWidget = QtGui.QWidget(MainWindow) - self.centralWidget.setObjectName(_fromUtf8("centralWidget")) - self.gridLayout_16 = QtGui.QGridLayout(self.centralWidget) - self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) - self.splitter_2 = QtGui.QSplitter(self.centralWidget) - self.splitter_2.setOrientation(QtCore.Qt.Horizontal) - self.splitter_2.setObjectName(_fromUtf8("splitter_2")) - self.projectExplorerTree = QtGui.QTreeView(self.splitter_2) - self.projectExplorerTree.setObjectName(_fromUtf8("projectExplorerTree")) - self.splitter = QtGui.QSplitter(self.splitter_2) - self.splitter.setOrientation(QtCore.Qt.Vertical) - self.splitter.setObjectName(_fromUtf8("splitter")) - self.tabWidgetProject = QtGui.QTabWidget(self.splitter) - self.tabWidgetProject.setMinimumSize(QtCore.QSize(0, 278)) - self.tabWidgetProject.setMaximumSize(QtCore.QSize(16777215, 16777215)) - self.tabWidgetProject.setObjectName(_fromUtf8("tabWidgetProject")) - - self.tabConsole = QtGui.QTabWidget(self.splitter) - self.tabConsole.setMinimumSize(QtCore.QSize(0, 0)) - self.tabConsole.setObjectName(_fromUtf8("tabConsole")) - self.tab_5 = QtGui.QWidget() - self.tab_5.setObjectName(_fromUtf8("tab_5")) - self.gridLayout_4 = QtGui.QGridLayout(self.tab_5) - self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) - self.console = QtGui.QTextEdit(self.tab_5) - self.console.setObjectName(_fromUtf8("console")) - self.gridLayout_4.addWidget(self.console, 0, 0, 1, 1) - self.tabConsole.addTab(self.tab_5, _fromUtf8("")) - self.tabWidget = QtGui.QTabWidget(self.splitter_2) - self.tabWidget.setObjectName(_fromUtf8("tabWidget")) - self.tabProjectProperty = QtGui.QWidget() - self.tabProjectProperty.setObjectName(_fromUtf8("tabProjectProperty")) - self.gridLayout_8 = QtGui.QGridLayout(self.tabProjectProperty) - self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8")) - self.treeProjectProperties = QtGui.QTreeView(self.tabProjectProperty) - self.treeProjectProperties.setObjectName(_fromUtf8("treeProjectProperties")) - self.gridLayout_8.addWidget(self.treeProjectProperties, 0, 0, 1, 1) - self.tabWidget.addTab(self.tabProjectProperty, _fromUtf8("")) - self.gridLayout_16.addWidget(self.splitter_2, 1, 0, 1, 1) - - MainWindow.setCentralWidget(self.centralWidget) - self.toolBar = QtGui.QToolBar(MainWindow) - self.toolBar.setObjectName(_fromUtf8("toolBar")) - MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) - - self.menuBar = QtGui.QMenuBar(MainWindow) - self.menuBar.setGeometry(QtCore.QRect(0, 0, 1065, 25)) - self.menuBar.setObjectName(_fromUtf8("menuBar")) - self.menuProject = QtGui.QMenu(self.menuBar) - self.menuProject.setObjectName(_fromUtf8("menuProject")) - self.menuRun = QtGui.QMenu(self.menuBar) - self.menuRun.setObjectName(_fromUtf8("menuRun")) - self.menuOptions = QtGui.QMenu(self.menuBar) - self.menuOptions.setObjectName(_fromUtf8("menuOptions")) - self.menuHelp = QtGui.QMenu(self.menuBar) - self.menuHelp.setObjectName(_fromUtf8("menuHelp")) - MainWindow.setMenuBar(self.menuBar) - - iconOpen = QtGui.QIcon() - iconOpen.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"open.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconCreate = QtGui.QIcon() - iconCreate.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"new.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconSave = QtGui.QIcon() - iconSave.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"save.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconStart = QtGui.QIcon() - iconStart.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH, ICON_START_DIS) )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconStop = QtGui.QIcon() - iconStop.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH, ICON_STOP_DIS) )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconPause = QtGui.QIcon() - iconPause.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH, ICON_PAUSE_DIS) )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconAddPU = QtGui.QIcon() - iconAddPU.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"branch.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - iconClose = QtGui.QIcon() - iconClose.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"close.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off) - - - self.actionOpen = QtGui.QAction(MainWindow) - self.actionOpen.setIcon(iconOpen) - self.actionOpen.setObjectName(_fromUtf8("actionOpen")) - self.actionCreate = QtGui.QAction(MainWindow) - self.actionCreate.setIcon(iconCreate) - self.actionCreate.setObjectName(_fromUtf8("actionCreate")) - self.actionSave = QtGui.QAction(MainWindow) - self.actionSave.setIcon(iconSave) - self.actionSave.setObjectName(_fromUtf8("actionSave")) - self.actionClose = QtGui.QAction(MainWindow) - self.actionClose.setIcon(iconClose) - self.actionClose.setObjectName(_fromUtf8("actionClose")) - self.actionStart = QtGui.QAction(MainWindow) - self.actionStart.setIcon(iconStart) - self.actionStart.setObjectName(_fromUtf8("actionStart")) - self.actionPause = QtGui.QAction(MainWindow) - self.actionPause.setIcon(iconPause) - self.actionPause.setObjectName(_fromUtf8("actionPause")) - self.actionStop = QtGui.QAction(MainWindow) - self.actionStop.setIcon(iconStop) - self.actionStop.setObjectName(_fromUtf8("actionStop")) - self.actionAbout = QtGui.QAction(MainWindow) - self.actionAbout.setObjectName(_fromUtf8("actionAbout")) - - self.actionOpenToolbar = QtGui.QAction(MainWindow) - self.actionOpenToolbar.setIcon(iconOpen) - self.actionOpenToolbar.setObjectName(_fromUtf8("actionOpenToolbar")) - self.actionCreateToolbar = QtGui.QAction(MainWindow) - self.actionCreateToolbar.setIcon(iconCreate) - self.actionCreateToolbar.setObjectName(_fromUtf8("actionCreateToolbar")) - self.actionSaveToolbar = QtGui.QAction(MainWindow) - self.actionSaveToolbar.setIcon(iconSave) - self.actionSaveToolbar.setObjectName(_fromUtf8("actionSaveToolbar")) - self.actionStarToolbar = QtGui.QAction(MainWindow) - self.actionStarToolbar.setIcon(iconStart) - self.actionStarToolbar.setObjectName(_fromUtf8("actionStarToolbar")) - self.actionStopToolbar = QtGui.QAction(MainWindow) - self.actionStopToolbar.setIcon(iconStop) - self.actionStopToolbar.setObjectName(_fromUtf8("actionStopToolbar")) - self.actionPauseToolbar = QtGui.QAction(MainWindow) - self.actionPauseToolbar.setIcon(iconPause) - self.actionPauseToolbar.setObjectName(_fromUtf8("actionPauseToolbar")) - self.actionAddPU = QtGui.QAction(MainWindow) - self.actionAddPU.setIcon(iconAddPU) - self.actionAddPU.setObjectName(_fromUtf8("actionAddPU")) - self.actionFTP = QtGui.QAction(MainWindow) - self.actionFTP.setObjectName(_fromUtf8("actionFTP")) - self.toolBar.addAction(self.actionOpenToolbar) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionCreateToolbar) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionAddPU) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionSaveToolbar) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionStarToolbar) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionPauseToolbar) - self.toolBar.addSeparator() - self.toolBar.addAction(self.actionStopToolbar) - self.toolBar.addSeparator() - -# self.actionPause.triggered.connect(self.changePauseIcon) -# self.actionPauseToolbar.triggered.connect(self.changePauseIcon) - - self.menuProject.addAction(self.actionOpen) - self.menuProject.addAction(self.actionCreate) - self.menuProject.addAction(self.actionSave) - self.menuProject.addAction(self.actionClose) - self.menuRun.addAction(self.actionStart) - self.menuRun.addAction(self.actionPause) - self.menuRun.addAction(self.actionStop) - self.menuOptions.addAction(self.actionFTP) - self.menuHelp.addAction(self.actionAbout) - self.menuBar.addAction(self.menuProject.menuAction()) - self.menuBar.addAction(self.menuRun.menuAction()) - self.menuBar.addAction(self.menuOptions.menuAction()) - self.menuBar.addAction(self.menuHelp.menuAction()) - - self.tabConsole.setCurrentIndex(0) - self.tabWidget.setCurrentIndex(0) - - def retranslateUi(self, MainWindow): - - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) - - self.tabConsole.setTabText(self.tabConsole.indexOf(self.tab_5), _translate("MainWindow", "Console", None)) - - self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabProjectProperty), _translate("MainWindow", "Project Property", None)) - self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar", None)) - self.menuProject.setTitle(_translate("MainWindow", "Project", None)) - self.menuRun.setTitle(_translate("MainWindow", "Run", None)) - self.menuOptions.setTitle(_translate("MainWindow", "Options", None)) - self.menuHelp.setTitle(_translate("MainWindow", "Help", None)) - self.actionOpen.setText(_translate("MainWindow", "Open", None)) - self.actionCreate.setText(_translate("MainWindow", "Create", None)) - self.actionSave.setText(_translate("MainWindow", "Save", None)) - self.actionClose.setText(_translate("MainWindow", "Close", None)) - self.actionStart.setText(_translate("MainWindow", "Start", None)) - self.actionPause.setText(_translate("MainWindow", "Pause", None)) - self.actionStop.setText(_translate("MainWindow", "Stop", None)) - self.actionAbout.setText(_translate("MainWindow", "About SChain", None)) - self.actionOpenToolbar.setText(_translate("MainWindow", "openToolbar", None)) - self.actionOpenToolbar.setToolTip(_translate("MainWindow", "Open a project", None)) - self.actionCreateToolbar.setText(_translate("MainWindow", "createToolbar", None)) - self.actionCreateToolbar.setToolTip(_translate("MainWindow", "Create a new project", None)) - self.actionSaveToolbar.setText(_translate("MainWindow", "saveToolbar", None)) - self.actionSaveToolbar.setToolTip(_translate("MainWindow", "Save a project", None)) - self.actionStarToolbar.setText(_translate("MainWindow", "starToolbar", None)) - self.actionStarToolbar.setToolTip(_translate("MainWindow", "Start process", None)) - self.actionStopToolbar.setText(_translate("MainWindow", "stopToolbar", None)) - self.actionStopToolbar.setToolTip(_translate("MainWindow", "Stop process", None)) - self.actionPauseToolbar.setText(_translate("MainWindow", "pauseToolbar", None)) - self.actionPauseToolbar.setToolTip(_translate("MainWindow", "Pause process", None)) - self.actionAddPU.setText(_translate("MainWindow", "Add Processing Unit", None)) - self.actionFTP.setText(_translate("MainWindow", "FTP", None)) - - def closeEvent(self, event): - - reply = QtGui.QMessageBox.question(self, 'Message', - "Are you sure to quit?", QtGui.QMessageBox.Yes | - QtGui.QMessageBox.No, QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: - event.accept() - else: - event.ignore() - - def aboutEvent(self): - title = "Signal Chain Processing Software v%s" %__version__ - message = """ - Developed by: - Miguel Urco - miguel.urco@jro.igp.gob.pe -Jicamarca Radio Observatory -""" - QtGui.QMessageBox.about(self, title, message) - - -class Ui_BasicWindow(Ui_EnvWindow, Ui_ProjectTab, Ui_VoltageTab, Ui_SpectraTab, Ui_SpectraHeisTab, Ui_CorrelationTab): - - def setupUi(self, MainWindow): - - Ui_EnvWindow.setupUi(self, MainWindow) - - Ui_ProjectTab.setupUi(self) - Ui_VoltageTab.setupUi(self) - Ui_SpectraTab.setupUi(self) - Ui_SpectraHeisTab.setupUi(self) - Ui_CorrelationTab.setupUi(self) - - self.retranslateUi(MainWindow) - - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - - Ui_EnvWindow.retranslateUi(self, MainWindow) - - Ui_ProjectTab.retranslateUi(self) - Ui_VoltageTab.retranslateUi(self) - Ui_SpectraTab.retranslateUi(self) - Ui_SpectraHeisTab.retranslateUi(self) - Ui_CorrelationTab.retranslateUi(self) - - -class Ui_AdvancedWindow(Ui_EnvWindow): - - def setupUi(self, AdvancedWindow): - - Ui_MainWindow.setupUi(self, AdvancedWindow) - - def retranslateUi(self, AdvancedWindow): - - Ui_MainWindow.retranslateUi(self, AdvancedWindow) - - - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - MainWindow = QtGui.QMainWindow() - ui = Ui_BasicWindow() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec_()) - diff --git a/schainpy/gui/viewer/ui_unitprocess.py b/schainpy/gui/viewer/ui_unitprocess.py deleted file mode 100644 index 63b61c8..0000000 --- a/schainpy/gui/viewer/ui_unitprocess.py +++ /dev/null @@ -1,123 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file '/home/alex/ui/unitProcess4.ui' -# -# Created: Fri May 24 05:23:03 2013 -# by: PyQt4 UI code generator 4.10 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_UnitProcess(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName(_fromUtf8("MainWindow")) - MainWindow.resize(312, 195) - self.centralWidget = QtGui.QWidget(MainWindow) - self.centralWidget.setObjectName(_fromUtf8("centralWidget")) - self.gridLayout = QtGui.QGridLayout(self.centralWidget) - self.gridLayout.setObjectName(_fromUtf8("gridLayout")) - self.inputLabel = QtGui.QLabel(self.centralWidget) - font = QtGui.QFont() - font.setPointSize(12) - font.setBold(False) - font.setWeight(50) - self.inputLabel.setFont(font) - self.inputLabel.setObjectName(_fromUtf8("inputLabel")) - self.gridLayout.addWidget(self.inputLabel, 2, 0, 1, 1) - self.unitPcancelbut = QtGui.QPushButton(self.centralWidget) - font = QtGui.QFont() - font.setBold(False) - font.setWeight(50) - self.unitPcancelbut.setFont(font) - self.unitPcancelbut.setObjectName(_fromUtf8("unitPcancelbut")) - self.gridLayout.addWidget(self.unitPcancelbut, 5, 2, 1, 2) - self.unitPokbut = QtGui.QPushButton(self.centralWidget) - font = QtGui.QFont() - font.setBold(False) - font.setWeight(50) - self.unitPokbut.setFont(font) - self.unitPokbut.setObjectName(_fromUtf8("unitPokbut")) - self.gridLayout.addWidget(self.unitPokbut, 5, 0, 1, 2) - self.typeLabel = QtGui.QLabel(self.centralWidget) - font = QtGui.QFont() - font.setPointSize(12) - font.setBold(False) - font.setWeight(50) - self.typeLabel.setFont(font) - self.typeLabel.setObjectName(_fromUtf8("typeLabel")) - self.gridLayout.addWidget(self.typeLabel, 3, 0, 1, 1) - self.nameUP = QtGui.QLabel(self.centralWidget) - font = QtGui.QFont() - font.setPointSize(13) - font.setBold(False) - font.setWeight(50) - self.nameUP.setFont(font) - self.nameUP.setObjectName(_fromUtf8("nameUP")) - self.gridLayout.addWidget(self.nameUP, 0, 1, 1, 2) - spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout.addItem(spacerItem, 0, 3, 1, 1) - self.comboInputBox = QtGui.QComboBox(self.centralWidget) - font = QtGui.QFont() - font.setPointSize(12) - self.comboInputBox.setFont(font) - self.comboInputBox.setObjectName(_fromUtf8("comboInputBox")) - self.gridLayout.addWidget(self.comboInputBox, 2, 1, 1, 3) - self.comboTypeBox = QtGui.QComboBox(self.centralWidget) - font = QtGui.QFont() - font.setPointSize(12) - self.comboTypeBox.setFont(font) - self.comboTypeBox.setObjectName(_fromUtf8("comboTypeBox")) - self.comboTypeBox.addItem(_fromUtf8("")) - self.comboTypeBox.addItem(_fromUtf8("")) - self.comboTypeBox.addItem(_fromUtf8("")) - self.gridLayout.addWidget(self.comboTypeBox, 3, 1, 1, 3) - spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout.addItem(spacerItem1, 0, 0, 1, 1) - spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout.addItem(spacerItem2, 4, 0, 1, 1) - self.line = QtGui.QFrame(self.centralWidget) - self.line.setFrameShape(QtGui.QFrame.HLine) - self.line.setFrameShadow(QtGui.QFrame.Sunken) - self.line.setObjectName(_fromUtf8("line")) - self.gridLayout.addWidget(self.line, 1, 0, 1, 4) - MainWindow.setCentralWidget(self.centralWidget) - - self.retranslateUi(MainWindow) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) - self.inputLabel.setText(_translate("MainWindow", "Input:", None)) - self.unitPcancelbut.setText(_translate("MainWindow", "Cancel", None)) - self.unitPokbut.setText(_translate("MainWindow", "Ok", None)) - self.typeLabel.setText(_translate("MainWindow", "Type:", None)) - self.nameUP.setText(_translate("MainWindow", "Processing Unit", None)) - self.comboTypeBox.setItemText(0, _translate("MainWindow", "Voltage", None)) - self.comboTypeBox.setItemText(1, _translate("MainWindow", "Spectra", None)) - self.comboTypeBox.setItemText(2, _translate("MainWindow", "Correlation", None)) - - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - MainWindow = QtGui.QMainWindow() - ui = Ui_UnitProcess() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec_()) - diff --git a/schainpy/gui/viewer/ui_window.py b/schainpy/gui/viewer/ui_window.py deleted file mode 100644 index efe81e3..0000000 --- a/schainpy/gui/viewer/ui_window.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'C:\Users\alex\ericworkspace\UIDOS\window.ui' -# -# Created: Thu Dec 06 08:56:59 2012 -# by: PyQt4 UI code generator 4.9.4 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - _fromUtf8 = lambda s: s - -class Ui_window(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName(_fromUtf8("MainWindow")) - MainWindow.resize(220, 198) - self.centralWidget = QtGui.QWidget(MainWindow) - self.centralWidget.setObjectName(_fromUtf8("centralWidget")) - self.label = QtGui.QLabel(self.centralWidget) - self.label.setGeometry(QtCore.QRect(20, 10, 131, 20)) - font = QtGui.QFont() - font.setPointSize(12) - self.label.setFont(font) - self.label.setObjectName(_fromUtf8("label")) - self.label_2 = QtGui.QLabel(self.centralWidget) - self.label_2.setGeometry(QtCore.QRect(20, 60, 131, 20)) - font = QtGui.QFont() - font.setPointSize(12) - self.label_2.setFont(font) - self.label_2.setObjectName(_fromUtf8("label_2")) - self.cancelButton = QtGui.QPushButton(self.centralWidget) - self.cancelButton.setGeometry(QtCore.QRect(150, 160, 51, 23)) - self.cancelButton.setObjectName(_fromUtf8("cancelButton")) - self.okButton = QtGui.QPushButton(self.centralWidget) - self.okButton.setGeometry(QtCore.QRect(80, 160, 61, 23)) - self.okButton.setObjectName(_fromUtf8("okButton")) - self.proyectNameLine = QtGui.QLineEdit(self.centralWidget) - self.proyectNameLine.setGeometry(QtCore.QRect(20, 30, 181, 20)) - self.proyectNameLine.setObjectName(_fromUtf8("proyectNameLine")) - self.descriptionTextEdit = QtGui.QTextEdit(self.centralWidget) - self.descriptionTextEdit.setGeometry(QtCore.QRect(20, 80, 181, 71)) - self.descriptionTextEdit.setObjectName(_fromUtf8("descriptionTextEdit")) - self.saveButton = QtGui.QPushButton(self.centralWidget) - self.saveButton.setGeometry(QtCore.QRect(20, 160, 51, 23)) - self.saveButton.setObjectName(_fromUtf8("saveButton")) - MainWindow.setCentralWidget(self.centralWidget) - - self.retranslateUi(MainWindow) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) - self.label.setText(QtGui.QApplication.translate("MainWindow", "Project Name:", None, QtGui.QApplication.UnicodeUTF8)) - self.label_2.setText(QtGui.QApplication.translate("MainWindow", "Description :", None, QtGui.QApplication.UnicodeUTF8)) - self.cancelButton.setText(QtGui.QApplication.translate("MainWindow", "Cancel", None, QtGui.QApplication.UnicodeUTF8)) - self.okButton.setText(QtGui.QApplication.translate("MainWindow", "Ok", None, QtGui.QApplication.UnicodeUTF8)) - self.saveButton.setText(QtGui.QApplication.translate("MainWindow", "Save", None, QtGui.QApplication.UnicodeUTF8)) - - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - MainWindow = QtGui.QMainWindow() - ui = Ui_window() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec_()) - diff --git a/schainpy/gui/viewer/ui_workspace.py b/schainpy/gui/viewer/ui_workspace.py deleted file mode 100644 index 3775c09..0000000 --- a/schainpy/gui/viewer/ui_workspace.py +++ /dev/null @@ -1,115 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file '/home/alex/ui/workspacev5.ui' -# -# Created: Sun May 12 16:45:47 2013 -# by: PyQt4 UI code generator 4.10 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_Workspace(object): - def setupUi(self, Dialog): - Dialog.setObjectName(_fromUtf8("Dialog")) - Dialog.setEnabled(True) - Dialog.resize(730, 295) - Dialog.setMinimumSize(QtCore.QSize(730, 295)) - Dialog.setMaximumSize(QtCore.QSize(730, 295)) - self.dirLabel = QtGui.QTextEdit(Dialog) - self.dirLabel.setGeometry(QtCore.QRect(0, 0, 731, 71)) - self.dirLabel.setReadOnly(True) - self.dirLabel.setObjectName(_fromUtf8("dirLabel")) - self.dirWork = QtGui.QLabel(Dialog) - self.dirWork.setGeometry(QtCore.QRect(10, 90, 91, 16)) - font = QtGui.QFont() - font.setPointSize(11) - self.dirWork.setFont(font) - self.dirWork.setObjectName(_fromUtf8("dirWork")) - self.dirComBox = QtGui.QComboBox(Dialog) - self.dirComBox.setGeometry(QtCore.QRect(110, 80, 501, 31)) - palette = QtGui.QPalette() - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) - self.dirComBox.setPalette(palette) - self.dirComBox.setObjectName(_fromUtf8("dirComBox")) - self.dirToolPath = QtGui.QToolButton(Dialog) - self.dirToolPath.setGeometry(QtCore.QRect(620, 80, 101, 31)) - font = QtGui.QFont() - font.setPointSize(11) - self.dirToolPath.setFont(font) - self.dirToolPath.setObjectName(_fromUtf8("dirToolPath")) - self.widget = QtGui.QWidget(Dialog) - self.widget.setGeometry(QtCore.QRect(10, 120, 711, 121)) - self.widget.setObjectName(_fromUtf8("widget")) - self.horizontalLayout_3 = QtGui.QHBoxLayout(self.widget) - self.horizontalLayout_3.setMargin(0) - self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) - spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.horizontalLayout_3.addItem(spacerItem) - spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.horizontalLayout_3.addItem(spacerItem1) - spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.horizontalLayout_3.addItem(spacerItem2) - spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.horizontalLayout_3.addItem(spacerItem3) - spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.horizontalLayout_3.addItem(spacerItem4) - self.dirCancelBtn = QtGui.QPushButton(Dialog) - self.dirCancelBtn.setGeometry(QtCore.QRect(490, 250, 111, 31)) - self.dirCancelBtn.setObjectName(_fromUtf8("dirCancelBtn")) - self.dirOkBtn = QtGui.QPushButton(Dialog) - self.dirOkBtn.setGeometry(QtCore.QRect(610, 250, 111, 31)) - font = QtGui.QFont() - font.setPointSize(11) - self.dirOkBtn.setFont(font) - self.dirOkBtn.setObjectName(_fromUtf8("dirOkBtn")) - - self.retranslateUi(Dialog) - QtCore.QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) - self.dirLabel.setHtml(_translate("Dialog", "\n" -"\n" -"

Select a workspace

\n" -"

Signal Chain stores your projects in a folder called a workspace.

\n" -"

Choose a workspace folder to use for this session.

", None)) - self.dirWork.setText(_translate("Dialog", "Workspace :", None)) - self.dirToolPath.setText(_translate("Dialog", "Browse...", None)) - self.dirCancelBtn.setText(_translate("Dialog", "Cancel", None)) - self.dirOkBtn.setText(_translate("Dialog", "OK", None)) - - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - Dialog = QtGui.QDialog() - ui = Ui_Workspace() - ui.setupUi(Dialog) - Dialog.show() - sys.exit(app.exec_()) - diff --git a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v44.ui b/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v44.ui deleted file mode 100644 index 02e8a90..0000000 --- a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v44.ui +++ /dev/null @@ -1,1765 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1065 - 711 - - - - MainWindow - - - - - - - Qt::Horizontal - - - - - Qt::Vertical - - - - - 0 - 278 - - - - - 16777215 - 16777215 - - - - 0 - - - - Project - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Project Name : - - - - - - - - - - DataType : - - - - - - - - Voltage - - - - - Spectra - - - - - - - - - - - DataPath : - - - - - - - ... - - - - - - - - - - Read Mode: - - - - - - - - Off Line - - - - - On Line - - - - - - - - Delay: - - - - - - - - - - Walk : - - - - - - - - Search 0 - - - - - Search 1 - - - - - - - - Load - - - - - - - Set: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Star Date: - - - - - - - - - - End Date: - - - - - - - - - - Start Time: - - - - - - - - - - End Time: - - - - - - - - - - Description: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - - Voltage - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - - - - - Value - - - - - Index - - - - - - - - - Value - - - - - Index - - - - - - - - Profile Selector - - - - - - - - Profile List - - - - - Profile Range List - - - - - - - - Decoder - - - - - - - Coherent Integration - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Code: - - - - - - - Select Channels - - - - - - - Select Heights - - - - - - - Filter - - - - - - - - - - Radar Frequency - - - - - - - Mode: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Barker 3 - - - - - Barker 4 - - - - - Barker 5 - - - - - Barker 7 - - - - - Barker 11 - - - - - Barker 13 - - - - - Barker 3 + Comp. - - - - - Barker 4 + Comp. - - - - - Barker 5 + Comp. - - - - - Barker 7 + Comp. - - - - - Barker 11+ Comp. - - - - - Barker 13+ Comp. - - - - - None - - - - - - - - - Time - - - - - Freq 1 - - - - - - - - - Graphics - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - ... - - - - - - - - - - Scope - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Channel List - - - - - - - Show - - - - - - - Freq/Vel - - - - - - - - - - - - - - Path : - - - - - - - Prefix: - - - - - - - Height range - - - - - - - Qt::Horizontal - - - - 40 - 12 - - - - - - - - Qt::Horizontal - - - - 18 - 12 - - - - - - - - - - - - - - Save - - - - - - - - - - - - - - - Output - - - - - - Type: - - - - - - - Path: - - - - - - - - - - ... - - - - - - - - .rawdata - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Blocks per File : - - - - - - - Profiles per Block: - - - - - - - - - - - - - - - Spectra - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - Select Cross Spectra - - - - - - - - Value - - - - - Index - - - - - - - - - - - - Value - - - - - Index - - - - - - - - - - - - - - Remove DC - - - - - - - Select Heights - - - - - - - Select Channel - - - - - - - - - - - - - x-y pairs - - - - - - - nFFTPoints - - - - - - - Incoherent Integration - - - - - - - - Time Interval - - - - - Profiles - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Radar Frequency - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Profiles - - - - - - - - - - - Graphics - - - - - - Coherence Map - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tmin, Tmax: - - - - - - - - - - - - - - - - - - - - - - - - - - - Prefix - - - - - - - - - - Qt::Horizontal - - - - 28 - 15 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - RTI Plot - - - - - - - Height range: - - - - - - - dBs range: - - - - - - - magnitud [0-1] - - - - - - - - - - - - - Qt::Horizontal - - - - 49 - 15 - - - - - - - - Path - - - - - - - - - - - - - Power Profile - - - - - - - Freq/Vel: - - - - - - - - - - Cross Spectra Plot - - - - - - - ... - - - - - - - Channel List: - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 39 - 15 - - - - - - - - - - - Show - - - - - - - - - - - - - - Wr Period: - - - - - - - Save - - - - - - - - - - - - - - - - - - - - - - - - - - - - ftp - - - - - - - - - - - - - - RTI Noise - - - - - - - - - - - - - - - - - - - - - Time Range: - - - - - - - - - - - Output - - - - - - Type: - - - - - - - - .pdata - - - - - - - - Path: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - Blocks per File: - - - - - - - Profile per Block: - - - - - - - - - - - - - - - Correlation - - - - - - 0 - - - - Operation - - - - - Graphics - - - - - - - - - - - 0 - 0 - - - - 0 - - - - Console - - - - - - - - - - - - 0 - - - - Project Property - - - - - - - - - - - - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - 0 - 0 - 1065 - 25 - - - - - Project - - - - - - - - - Run - - - - - - - Options - - - - - - Help - - - - - - - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - Save - - - - - Close - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - Start - - - - - Pause - - - - - About - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - openToolbar - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - createToolbar - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - saveToolbar - - - Save - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - starToolbar - - - Start - - - - - - ../Documents/figure/stopServer.png../Documents/figure/stopServer.png - - - stopToolbar - - - Stop - - - - - - ../workspace/branch_gui_may/gui/figure/pause.png../workspace/branch_gui_may/gui/figure/pause.png - - - pauseToolbar - - - Pause - - - - - - ../addpu.jpg../addpu.jpg - - - addPU - - - - - FTP - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v46.ui b/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v46.ui deleted file mode 100644 index 789d5d2..0000000 --- a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v46.ui +++ /dev/null @@ -1,2179 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1065 - 711 - - - - MainWindow - - - - - - - Qt::Horizontal - - - - - Qt::Vertical - - - - - 0 - 278 - - - - - 16777215 - 16777215 - - - - 0 - - - - Project - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Project Name : - - - - - - - - - - DataType : - - - - - - - - Voltage - - - - - Spectra - - - - - Fits - - - - - - - - - - - DataPath : - - - - - - - ... - - - - - - - - - - Read Mode: - - - - - - - - Off Line - - - - - On Line - - - - - - - - Delay: - - - - - - - - - - Walk : - - - - - - - - Search 0 - - - - - Search 1 - - - - - - - - Load - - - - - - - Set: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Star Date: - - - - - - - - - - End Date: - - - - - - - - - - Start Time: - - - - - - - - - - End Time: - - - - - - - - - - Description: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - - Voltage - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - - - - - Value - - - - - Index - - - - - - - - - Value - - - - - Index - - - - - - - - Profile Selector - - - - - - - - Profile List - - - - - Profile Range List - - - - - - - - Decoder - - - - - - - Coherent Integration - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Code: - - - - - - - Select Channels - - - - - - - Select Heights - - - - - - - Filter - - - - - - - - - - Radar Frequency - - - - - - - Mode: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Barker 3 - - - - - Barker 4 - - - - - Barker 5 - - - - - Barker 7 - - - - - Barker 11 - - - - - Barker 13 - - - - - Barker 3 + Comp. - - - - - Barker 4 + Comp. - - - - - Barker 5 + Comp. - - - - - Barker 7 + Comp. - - - - - Barker 11+ Comp. - - - - - Barker 13+ Comp. - - - - - None - - - - - - - - - Time - - - - - Freq 1 - - - - - - - - - Graphics - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - ... - - - - - - - - - - Scope - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Channel List - - - - - - - Show - - - - - - - Freq/Vel - - - - - - - - - - - - - - Path : - - - - - - - Prefix: - - - - - - - Height range - - - - - - - Qt::Horizontal - - - - 40 - 12 - - - - - - - - Qt::Horizontal - - - - 18 - 12 - - - - - - - - - - - - - - Save - - - - - - - - - - - - - - - Output - - - - - - Type: - - - - - - - Path: - - - - - - - - - - ... - - - - - - - - .rawdata - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Blocks per File : - - - - - - - Profiles per Block: - - - - - - - - - - - - - - - Spectra - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - Select Cross Spectra - - - - - - - - Value - - - - - Index - - - - - - - - - - - - Value - - - - - Index - - - - - - - - - - - - - - Remove DC - - - - - - - Select Heights - - - - - - - Select Channel - - - - - - - - - - - - - x-y pairs - - - - - - - nFFTPoints - - - - - - - Incoherent Integration - - - - - - - - Time Interval - - - - - Profiles - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Radar Frequency - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Profiles - - - - - - - - - - Remove Interference - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Mode 1 - - - - - Mode 2 - - - - - - - - - Graphics - - - - - - Coherence Map - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tmin, Tmax: - - - - - - - - - - - - - - - - - - - - - - - - - - - Prefix : - - - - - - - - - - Qt::Horizontal - - - - 28 - 15 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - RTI Plot - - - - - - - Height range: - - - - - - - dBs range: - - - - - - - magnitud [0-1] - - - - - - - - - - - - - Qt::Horizontal - - - - 49 - 15 - - - - - - - - Path : - - - - - - - - - - - - - Power Profile - - - - - - - Freq/Vel: - - - - - - - - - - Cross Spectra Plot - - - - - - - ... - - - - - - - Channel List: - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 39 - 15 - - - - - - - - - - - Show - - - - - - - - - - - - - - Wr Period: - - - - - - - Save - - - - - - - - - - - - - - - - - - - - - - - - - - - - ftp - - - - - - - - - - - - - - RTI Noise - - - - - - - - - - - - - - - - - - - - - Time Range: - - - - - - - - - - - Output - - - - - - Type: - - - - - - - - .pdata - - - - - - - - Path: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - Blocks per File: - - - - - - - Profile per Block: - - - - - - - - - - - - - - - SpectraHeis - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Clear - - - - - - - Ok - - - - - - - - - - 0 - - - - Operation - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Time Interval - - - - - - - - Incoherent Intergration - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Graphics - - - - - - Prefix - - - - - - - ... - - - - - - - - - - - - - - ymin - ymax - - - - - - - Tmin - Tmax: - - - - - - - Time Range: - - - - - - - Wr Period - - - - - - - Qt::Horizontal - - - - 134 - 20 - - - - - - - - - - - - - - - - - - - - - Channel List: - - - - - - - xmin - xmax - - - - - - - - - - Save - - - - - - - ftp - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - Path - - - - - - - Show - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 106 - 20 - - - - - - - - - - - - - - - - - - - - - - RTI PLot - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Output - - - - - - Path: - - - - - - - Blocks per File: - - - - - - - Type: - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - - .fits - - - - - - - - Profile per Block: - - - - - - - - - - - - - - - - - - Correlation - - - - - - 0 - - - - Operation - - - - - Graphics - - - - - - - - - - - 0 - 0 - - - - 0 - - - - Console - - - - - - - - - - - - 0 - - - - Project Property - - - - - - - - - - - - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - 0 - 0 - 1065 - 25 - - - - - Project - - - - - - - - - Run - - - - - - - Options - - - - - - Help - - - - - - - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - Save - - - - - Close - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - Start - - - - - Pause - - - - - About - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - openToolbar - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - createToolbar - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - saveToolbar - - - Save - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - starToolbar - - - Start - - - - - - ../Documents/figure/stopServer.png../Documents/figure/stopServer.png - - - stopToolbar - - - Stop - - - - - - ../workspace/branch_gui_may/gui/figure/pause.png../workspace/branch_gui_may/gui/figure/pause.png - - - pauseToolbar - - - Pause - - - - - - ../addpu.jpg../addpu.jpg - - - addPU - - - - - FTP - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v47.ui b/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v47.ui deleted file mode 100644 index 2035e1a..0000000 --- a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v47.ui +++ /dev/null @@ -1,2186 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1065 - 711 - - - - MainWindow - - - - - - - Qt::Horizontal - - - - - Qt::Vertical - - - - - 0 - 278 - - - - - 16777215 - 16777215 - - - - 0 - - - - Project - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Project Name : - - - - - - - - - - DataType : - - - - - - - - Voltage - - - - - Spectra - - - - - Fits - - - - - - - - - - - DataPath : - - - - - - - ... - - - - - - - - - - Read Mode: - - - - - - - - Off Line - - - - - On Line - - - - - - - - Delay: - - - - - - - - - - Walk : - - - - - - - - Search 0 - - - - - Search 1 - - - - - - - - Load - - - - - - - Set: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Star Date: - - - - - - - - - - End Date: - - - - - - - - - - Start Time: - - - - - - - - - - End Time: - - - - - - - - - - Description: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - - Voltage - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - - - - - Value - - - - - Index - - - - - - - - - Value - - - - - Index - - - - - - - - Profile Selector - - - - - - - - Profile List - - - - - Profile Range List - - - - - - - - Decoder - - - - - - - Coherent Integration - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Code: - - - - - - - Select Channels - - - - - - - Select Heights - - - - - - - Filter - - - - - - - - - - Radar Frequency - - - - - - - Mode: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Barker 3 - - - - - Barker 4 - - - - - Barker 5 - - - - - Barker 7 - - - - - Barker 11 - - - - - Barker 13 - - - - - Barker 3 + Comp. - - - - - Barker 4 + Comp. - - - - - Barker 5 + Comp. - - - - - Barker 7 + Comp. - - - - - Barker 11+ Comp. - - - - - Barker 13+ Comp. - - - - - None - - - - - - - - - Time - - - - - Freq 1 - - - - - - - - - Graphics - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - ... - - - - - - - - - - Scope - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Channel List - - - - - - - Show - - - - - - - Freq/Vel - - - - - - - - - - - - - - Path : - - - - - - - Prefix: - - - - - - - Height range - - - - - - - Qt::Horizontal - - - - 40 - 12 - - - - - - - - Qt::Horizontal - - - - 18 - 12 - - - - - - - - - - - - - - Save - - - - - - - - - - - - - - - Output - - - - - - Type: - - - - - - - Path: - - - - - - - - - - ... - - - - - - - - .rawdata - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Blocks per File : - - - - - - - Profiles per Block: - - - - - - - - - - - - - - - Spectra - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - Select Cross Spectra - - - - - - - - Value - - - - - Index - - - - - - - - - - - - Value - - - - - Index - - - - - - - - - - - - - - Remove DC - - - - - - - Select Heights - - - - - - - Select Channel - - - - - - - - - - - - - x-y pairs - - - - - - - nFFTPoints - - - - - - - Incoherent Integration - - - - - - - - Time Interval - - - - - Profiles - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Radar Frequency - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Profiles - - - - - - - - - - Remove Interference - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Mode 1 - - - - - Mode 2 - - - - - - - - - Graphics - - - - - - Coherence Map - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tmin, Tmax: - - - - - - - - - - - - - - - - - - - - - - - - - - - Prefix : - - - - - - - - - - Qt::Horizontal - - - - 28 - 15 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - RTI Plot - - - - - - - Height range: - - - - - - - dBs range: - - - - - - - magnitud [0-1] - - - - - - - - - - - - - Qt::Horizontal - - - - 49 - 15 - - - - - - - - Path : - - - - - - - - - - - - - Power Profile - - - - - - - Freq/Vel: - - - - - - - - - - Cross Spectra Plot - - - - - - - ... - - - - - - - Channel List: - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 39 - 15 - - - - - - - - - - - Show - - - - - - - - - - - - - - Wr Period: - - - - - - - Save - - - - - - - - - - - - - - - - - - - - - - - - - - - - ftp - - - - - - - - - - - - - - RTI Noise - - - - - - - - - - - - - - - - - - - - - Time Range: - - - - - - - - - - - Output - - - - - - Type: - - - - - - - - .pdata - - - - - - - - Path: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - Blocks per File: - - - - - - - Profile per Block: - - - - - - - - - - - - - - - SpectraHeis - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Clear - - - - - - - Ok - - - - - - - - - - 0 - - - - Operation - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Time Interval - - - - - - - - Incoherent Intergration - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Graphics - - - - - - Prefix - - - - - - - ... - - - - - - - - - - - - - - ymin - ymax - - - - - - - Tmin - Tmax: - - - - - - - Time Range: - - - - - - - Wr Period - - - - - - - Qt::Horizontal - - - - 134 - 20 - - - - - - - - - - - - - - - - - - - - - Channel List: - - - - - - - xmin - xmax - - - - - - - - - - Save - - - - - - - ftp - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - Path - - - - - - - Show - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 106 - 20 - - - - - - - - - - - - - - - - - - - - - - RTI PLot - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Output - - - - - - Path: - - - - - - - Blocks per File: - - - - - - - Type: - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - - .fits - - - - - - - - Metada - - - - - - - - - - - - - ... - - - - - - - - - - - - Correlation - - - - - - 0 - - - - Operation - - - - - Graphics - - - - - - - - - - - 0 - 0 - - - - 0 - - - - Console - - - - - - - - - - - - 0 - - - - Project Property - - - - - - - - - - - - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - 0 - 0 - 1065 - 25 - - - - - Project - - - - - - - - - Run - - - - - - - Options - - - - - - Help - - - - - - - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - Save - - - - - Close - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - Start - - - - - Pause - - - - - About - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - openToolbar - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - createToolbar - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - saveToolbar - - - Save - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - starToolbar - - - Start - - - - - - ../Documents/figure/stopServer.png../Documents/figure/stopServer.png - - - stopToolbar - - - Stop - - - - - - ../workspace/branch_gui_may/gui/figure/pause.png../workspace/branch_gui_may/gui/figure/pause.png - - - pauseToolbar - - - Pause - - - - - - ../addpu.jpg../addpu.jpg - - - addPU - - - - - FTP - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v48.ui b/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v48.ui deleted file mode 100644 index d34bd2e..0000000 --- a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v48.ui +++ /dev/null @@ -1,2206 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1065 - 711 - - - - MainWindow - - - - - - - Qt::Horizontal - - - - - Qt::Vertical - - - - - 0 - 278 - - - - - 16777215 - 16777215 - - - - 0 - - - - Project - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Project Name : - - - - - - - - - - DataType : - - - - - - - - Voltage - - - - - Spectra - - - - - Fits - - - - - - - - - - - DataPath : - - - - - - - ... - - - - - - - - - - Read Mode: - - - - - - - - Off Line - - - - - On Line - - - - - - - - Delay: - - - - - - - - - - Walk : - - - - - - - - Search 0 - - - - - Search 1 - - - - - - - - Load - - - - - - - Set: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Star Date: - - - - - - - - - - End Date: - - - - - - - - - - Start Time: - - - - - - - - - - End Time: - - - - - - - - - - Description: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - - Voltage - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - - - - - Value - - - - - Index - - - - - - - - - Value - - - - - Index - - - - - - - - Profile Selector - - - - - - - - Profile List - - - - - Profile Range List - - - - - - - - Decoder - - - - - - - Coherent Integration - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Code: - - - - - - - Select Channels - - - - - - - Select Heights - - - - - - - Filter - - - - - - - - - - Radar Frequency - - - - - - - Mode: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Barker 3 - - - - - Barker 4 - - - - - Barker 5 - - - - - Barker 7 - - - - - Barker 11 - - - - - Barker 13 - - - - - Barker 3 + Comp. - - - - - Barker 4 + Comp. - - - - - Barker 5 + Comp. - - - - - Barker 7 + Comp. - - - - - Barker 11+ Comp. - - - - - Barker 13+ Comp. - - - - - None - - - - - - - - - Time - - - - - Freq 1 - - - - - - - - - Graphics - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - ... - - - - - - - - - - Scope - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Channel List - - - - - - - Show - - - - - - - Freq/Vel - - - - - - - - - - - - - - Path : - - - - - - - Prefix: - - - - - - - Height range - - - - - - - Qt::Horizontal - - - - 40 - 12 - - - - - - - - Qt::Horizontal - - - - 18 - 12 - - - - - - - - - - - - - - Save - - - - - - - - - - - - - - - Output - - - - - - Type: - - - - - - - Path: - - - - - - - - - - ... - - - - - - - - .rawdata - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Blocks per File : - - - - - - - Profiles per Block: - - - - - - - - - - - - - - - Spectra - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - Select Cross Spectra - - - - - - - - Value - - - - - Index - - - - - - - - - - - - Value - - - - - Index - - - - - - - - - - - - - - Remove DC - - - - - - - Select Heights - - - - - - - Select Channel - - - - - - - - - - - - - x-y pairs - - - - - - - nFFTPoints - - - - - - - Incoherent Integration - - - - - - - - Time Interval - - - - - Profiles - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Radar Frequency - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Profiles - - - - - - - - - - Remove Interference - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Mode 1 - - - - - Mode 2 - - - - - - - - IppFactor - - - - - - - - - - Get Noise - - - - - - - - - - - Graphics - - - - - - Coherence Map - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tmin, Tmax: - - - - - - - - - - - - - - - - - - - - - - - - - - - Prefix : - - - - - - - - - - Qt::Horizontal - - - - 28 - 15 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - RTI Plot - - - - - - - Height range: - - - - - - - dBs range: - - - - - - - magnitud [0-1] - - - - - - - - - - - - - Qt::Horizontal - - - - 49 - 15 - - - - - - - - Path : - - - - - - - - - - - - - Power Profile - - - - - - - Freq/Vel: - - - - - - - - - - Cross Spectra Plot - - - - - - - ... - - - - - - - Channel List: - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 39 - 15 - - - - - - - - - - - Show - - - - - - - - - - - - - - Wr Period: - - - - - - - Save - - - - - - - - - - - - - - - - - - - - - - - - - - - - ftp - - - - - - - - - - - - - - RTI Noise - - - - - - - - - - - - - - - - - - - - - Time Range: - - - - - - - - - - - Output - - - - - - Type: - - - - - - - - .pdata - - - - - - - - Path: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - Blocks per File: - - - - - - - Profile per Block: - - - - - - - - - - - - - - - SpectraHeis - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Clear - - - - - - - Ok - - - - - - - - - - 0 - - - - Operation - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Time Interval - - - - - - - - Incoherent Intergration - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Graphics - - - - - - Prefix - - - - - - - ... - - - - - - - - - - - - - - ymin - ymax - - - - - - - Tmin - Tmax: - - - - - - - Time Range: - - - - - - - Wr Period - - - - - - - Qt::Horizontal - - - - 134 - 20 - - - - - - - - - - - - - - - - - - - - - Channel List: - - - - - - - xmin - xmax - - - - - - - - - - Save - - - - - - - ftp - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - Path - - - - - - - Show - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 106 - 20 - - - - - - - - - - - - - - - - - - - - - - RTI PLot - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Output - - - - - - Path: - - - - - - - Blocks per File: - - - - - - - Type: - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - - .fits - - - - - - - - Metada - - - - - - - - - - - - - ... - - - - - - - - - - - - Correlation - - - - - - 0 - - - - Operation - - - - - Graphics - - - - - - - - - - - 0 - 0 - - - - 0 - - - - Console - - - - - - - - - - - - 0 - - - - Project Property - - - - - - - - - - - - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - 0 - 0 - 1065 - 25 - - - - - Project - - - - - - - - - Run - - - - - - - Options - - - - - - Help - - - - - - - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - Save - - - - - Close - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - Start - - - - - Pause - - - - - About - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - openToolbar - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - createToolbar - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - saveToolbar - - - Save - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - starToolbar - - - Start - - - - - - ../Documents/figure/stopServer.png../Documents/figure/stopServer.png - - - stopToolbar - - - Stop - - - - - - ../workspace/branch_gui_may/gui/figure/pause.png../workspace/branch_gui_may/gui/figure/pause.png - - - pauseToolbar - - - Pause - - - - - - ../addpu.jpg../addpu.jpg - - - addPU - - - - - FTP - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v49.ui b/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v49.ui deleted file mode 100644 index 31cff87..0000000 --- a/schainpy/gui/viewer/viewer_ui/MainWindow_21_02_13_v49.ui +++ /dev/null @@ -1,2206 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1065 - 711 - - - - MainWindow - - - - - - - Qt::Horizontal - - - - - Qt::Vertical - - - - - 0 - 278 - - - - - 16777215 - 16777215 - - - - 0 - - - - Project - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Project Name : - - - - - - - - - - DataType : - - - - - - - - Voltage - - - - - Spectra - - - - - Fits - - - - - - - - - - - DataPath : - - - - - - - ... - - - - - - - - - - Read Mode: - - - - - - - - Off Line - - - - - On Line - - - - - - - - Delay: - - - - - - - - - - Walk : - - - - - - - - Search 0 - - - - - Search 1 - - - - - - - - Load - - - - - - - Set: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Star Date: - - - - - - - - - - End Date: - - - - - - - - - - Start Time: - - - - - - - - - - End Time: - - - - - - - - - - Description: - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - - Voltage - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - - - - - Value - - - - - Index - - - - - - - - - Value - - - - - Index - - - - - - - - Profile Selector - - - - - - - - Profile List - - - - - Profile Range List - - - - - - - - Decoder - - - - - - - Coherent Integration - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Code: - - - - - - - Select Channels - - - - - - - Select Heights - - - - - - - Filter - - - - - - - - - - Radar Frequency - - - - - - - Mode: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Barker 3 - - - - - Barker 4 - - - - - Barker 5 - - - - - Barker 7 - - - - - Barker 11 - - - - - Barker 13 - - - - - Barker 3 + Comp. - - - - - Barker 4 + Comp. - - - - - Barker 5 + Comp. - - - - - Barker 7 + Comp. - - - - - Barker 11+ Comp. - - - - - Barker 13+ Comp. - - - - - None - - - - - - - - - Time - - - - - Freq 1 - - - - - - - - - Graphics - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - ... - - - - - - - - - - Scope - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Channel List - - - - - - - Show - - - - - - - Freq/Vel - - - - - - - - - - - - - - Path : - - - - - - - Prefix: - - - - - - - Height range - - - - - - - Qt::Horizontal - - - - 40 - 12 - - - - - - - - Qt::Horizontal - - - - 18 - 12 - - - - - - - - - - - - - - Save - - - - - - - - - - - - - - - Output - - - - - - Type: - - - - - - - Path: - - - - - - - - - - ... - - - - - - - - .rawdata - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Blocks per File : - - - - - - - Profiles per Block: - - - - - - - - - - - - - - - Spectra - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Ok - - - - - - - Clear - - - - - - - - - - 0 - - - - Operation - - - - - - Select Cross Spectra - - - - - - - - Value - - - - - Index - - - - - - - - - - - - Value - - - - - Index - - - - - - - - - - - - - - Remove DC - - - - - - - Select Heights - - - - - - - Select Channel - - - - - - - - - - - - - x-y pairs - - - - - - - nFFTPoints - - - - - - - Incoherent Integration - - - - - - - - Time Interval - - - - - Profiles - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Radar Frequency - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Profiles - - - - - - - - - - Remove Interference - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - IppFactor - - - - - - - Get Noise - - - - - - - - - - - Mode 1 - - - - - Mode 2 - - - - - - - - - - - - Graphics - - - - - - Coherence Map - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tmin, Tmax: - - - - - - - - - - - - - - - - - - - - - - - - - - - Prefix : - - - - - - - - - - Qt::Horizontal - - - - 28 - 15 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - RTI Plot - - - - - - - Height range: - - - - - - - dBs range: - - - - - - - magnitud [0-1] - - - - - - - - - - - - - Qt::Horizontal - - - - 49 - 15 - - - - - - - - Path : - - - - - - - - - - - - - Power Profile - - - - - - - Freq/Vel: - - - - - - - - - - Cross Spectra Plot - - - - - - - ... - - - - - - - Channel List: - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 39 - 15 - - - - - - - - - - - Show - - - - - - - - - - - - - - Wr Period: - - - - - - - Save - - - - - - - - - - - - - - - - - - - - - - - - - - - - ftp - - - - - - - - - - - - - - RTI Noise - - - - - - - - - - - - - - - - - - - - - Time Range: - - - - - - - - - - - Output - - - - - - Type: - - - - - - - - .pdata - - - - - - - - Path: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - Blocks per File: - - - - - - - Profile per Block: - - - - - - - - - - - - - - - SpectraHeis - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Clear - - - - - - - Ok - - - - - - - - - - 0 - - - - Operation - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Time Interval - - - - - - - - Incoherent Intergration - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Graphics - - - - - - Prefix - - - - - - - ... - - - - - - - - - - - - - - ymin - ymax - - - - - - - Tmin - Tmax: - - - - - - - Time Range: - - - - - - - Wr Period - - - - - - - Qt::Horizontal - - - - 134 - 20 - - - - - - - - - - - - - - - - - - - - - Channel List: - - - - - - - xmin - xmax - - - - - - - - - - Save - - - - - - - ftp - - - - - - - Spectra Plot - - - - - - - - - - - - - - - - - Path - - - - - - - Show - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 106 - 20 - - - - - - - - - - - - - - - - - - - - - - RTI PLot - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Output - - - - - - Path: - - - - - - - Blocks per File: - - - - - - - Type: - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - - - - - .fits - - - - - - - - Metada - - - - - - - - - - - - - ... - - - - - - - - - - - - Correlation - - - - - - 0 - - - - Operation - - - - - Graphics - - - - - - - - - - - 0 - 0 - - - - 0 - - - - Console - - - - - - - - - - - - 0 - - - - Project Property - - - - - - - - - - - - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - 0 - 0 - 1065 - 25 - - - - - Project - - - - - - - - - Run - - - - - - - Options - - - - - - Help - - - - - - - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - Save - - - - - Close - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - Start - - - - - Pause - - - - - About - - - - - - ../Documents/figure/open.png../Documents/figure/open.png - - - openToolbar - - - Open - - - - - - ../Documents/figure/create_class_obj.png../Documents/figure/create_class_obj.png - - - createToolbar - - - Create - - - - - - ../Documents/figure/save.gif../Documents/figure/save.gif - - - saveToolbar - - - Save - - - - - - ../Documents/figure/startServer.png../Documents/figure/startServer.png - - - starToolbar - - - Start - - - - - - ../Documents/figure/stopServer.png../Documents/figure/stopServer.png - - - stopToolbar - - - Stop - - - - - - ../workspace/branch_gui_may/gui/figure/pause.png../workspace/branch_gui_may/gui/figure/pause.png - - - pauseToolbar - - - Pause - - - - - - ../addpu.jpg../addpu.jpg - - - addPU - - - - - FTP - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/ftpConfig4.ui b/schainpy/gui/viewer/viewer_ui/ftpConfig4.ui deleted file mode 100644 index ec05dbf..0000000 --- a/schainpy/gui/viewer/viewer_ui/ftpConfig4.ui +++ /dev/null @@ -1,300 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 374 - 399 - - - - - 374 - 399 - - - - - 374 - 399 - - - - MainWindow - - - - - - 9 - 38 - 47 - 17 - - - - Server: - - - - - - 9 - 133 - 77 - 17 - - - - User Name: - - - - - - 9 - 166 - 68 - 17 - - - - Password: - - - - - - 9 - 9 - 101 - 17 - - - - - 75 - true - - - - Server Details - - - - - - 9 - 104 - 87 - 17 - - - - - 75 - true - - - - User Details - - - - - - 9 - 71 - 47 - 17 - - - - Folder: - - - - - - 130 - 40 - 231 - 27 - - - - - - - 130 - 70 - 231 - 27 - - - - - - - 130 - 130 - 231 - 27 - - - - - - - 130 - 160 - 231 - 27 - - - - - - - 130 - 360 - 111 - 27 - - - - Cancel - - - - - - 250 - 360 - 111 - 27 - - - - Ok - - - - - - 10 - 200 - 66 - 17 - - - - - 75 - true - - - - Others - - - - - - 10 - 230 - 81 - 17 - - - - Ftp_wei: - - - - - - 10 - 260 - 81 - 17 - - - - Exp_code: - - - - - - 10 - 290 - 81 - 17 - - - - Sub_exp: - - - - - - 10 - 320 - 81 - 17 - - - - Plot_pos: - - - - - - 130 - 230 - 231 - 27 - - - - - - - 130 - 260 - 231 - 27 - - - - - - - 130 - 290 - 231 - 27 - - - - - - - 130 - 320 - 231 - 27 - - - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/initwindowv2.ui b/schainpy/gui/viewer/viewer_ui/initwindowv2.ui deleted file mode 100644 index d254434..0000000 --- a/schainpy/gui/viewer/viewer_ui/initwindowv2.ui +++ /dev/null @@ -1,112 +0,0 @@ - - - Dialog - - - - 0 - 0 - 652 - 496 - - - - Dialog - - - - - - - - - - - Cambria - 22 - 50 - false - - - - Signal Chain - Ver. 1.0 - - - - - - - Qt::Horizontal - - - - - - - - - - ../../Downloads/IMAGENES/w.jpg - - - true - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Exit - - - - - - - Continue - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/unitProcess4.ui b/schainpy/gui/viewer/viewer_ui/unitProcess4.ui deleted file mode 100644 index d077917..0000000 --- a/schainpy/gui/viewer/viewer_ui/unitProcess4.ui +++ /dev/null @@ -1,170 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 312 - 195 - - - - MainWindow - - - - - - - - 12 - 50 - false - - - - Input: - - - - - - - - 50 - false - - - - Cancel - - - - - - - - 50 - false - - - - Ok - - - - - - - - 12 - 50 - false - - - - Type: - - - - - - - - 13 - 50 - false - - - - Processing Unit - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 12 - - - - - - - - - 12 - - - - - Voltage - - - - - Spectra - - - - - Correlation - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - - - - - - diff --git a/schainpy/gui/viewer/viewer_ui/workspacev5.ui b/schainpy/gui/viewer/viewer_ui/workspacev5.ui deleted file mode 100644 index 5aad07a..0000000 --- a/schainpy/gui/viewer/viewer_ui/workspacev5.ui +++ /dev/null @@ -1,247 +0,0 @@ - - - Dialog - - - true - - - - 0 - 0 - 730 - 295 - - - - - 730 - 295 - - - - - 730 - 295 - - - - Dialog - - - - - 0 - 0 - 731 - 71 - - - - true - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Cantarell'; font-size:12pt; font-weight:600;">Select a workspace</span></p> -<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Cantarell';">Signal Chain stores your projects in a folder called a workspace.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Cantarell';">Choose a workspace folder to use for this session.</span></p></body></html> - - - - - - 10 - 90 - 91 - 16 - - - - - 11 - - - - Workspace : - - - - - - 110 - 80 - 501 - 31 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - - - 620 - 80 - 101 - 31 - - - - - 11 - - - - Browse... - - - - - - 10 - 120 - 711 - 121 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 490 - 250 - 111 - 31 - - - - Cancel - - - - - - 610 - 250 - 111 - 31 - - - - - 11 - - - - OK - - - - - - diff --git a/schainpy/gui/viewer/windows/__init__.py b/schainpy/gui/viewer/windows/__init__.py deleted file mode 100644 index af97a97..0000000 --- a/schainpy/gui/viewer/windows/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from ui_project import * -from ui_voltage import * -from ui_spectra import * -from ui_spectra_heis import * -from ui_correlation import * \ No newline at end of file diff --git a/schainpy/gui/viewer/windows/ui_correlation.py b/schainpy/gui/viewer/windows/ui_correlation.py deleted file mode 100644 index 0c80785..0000000 --- a/schainpy/gui/viewer/windows/ui_correlation.py +++ /dev/null @@ -1,45 +0,0 @@ - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_CorrelationTab(object): - - def setupUi(self): - - self.tabCorrelation = QtGui.QWidget() - self.tabCorrelation.setObjectName(_fromUtf8("tabCorrelation")) - self.gridLayout_13 = QtGui.QGridLayout(self.tabCorrelation) - self.gridLayout_13.setObjectName(_fromUtf8("gridLayout_13")) - self.tabWidgetCorrelation = QtGui.QTabWidget(self.tabCorrelation) - self.tabWidgetCorrelation.setObjectName(_fromUtf8("tabWidgetCorrelation")) - self.tabopCorrelation = QtGui.QWidget() - self.tabopCorrelation.setObjectName(_fromUtf8("tabopCorrelation")) - self.tabWidgetCorrelation.addTab(self.tabopCorrelation, _fromUtf8("")) - self.tabopCorrelation1 = QtGui.QWidget() - self.tabopCorrelation1.setObjectName(_fromUtf8("tabopCorrelation1")) - self.tabWidgetCorrelation.addTab(self.tabopCorrelation1, _fromUtf8("")) - self.gridLayout_13.addWidget(self.tabWidgetCorrelation, 0, 0, 1, 1) - - self.tabWidgetProject.addTab(self.tabCorrelation, _fromUtf8("")) - - self.tabWidgetCorrelation.setCurrentIndex(0) - - def retranslateUi(self): - - self.tabWidgetCorrelation.setTabText(self.tabWidgetCorrelation.indexOf(self.tabopCorrelation), _translate("MainWindow", "Operation", None)) - self.tabWidgetCorrelation.setTabText(self.tabWidgetCorrelation.indexOf(self.tabopCorrelation1), _translate("MainWindow", "Graphics", None)) - self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabCorrelation), _translate("MainWindow", "Correlation", None)) - \ No newline at end of file diff --git a/schainpy/gui/viewer/windows/ui_project.py b/schainpy/gui/viewer/windows/ui_project.py deleted file mode 100644 index 7b22c32..0000000 --- a/schainpy/gui/viewer/windows/ui_project.py +++ /dev/null @@ -1,257 +0,0 @@ - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_ProjectTab(object): - - def setupUi(self): - - self.tabProject = QtGui.QWidget() - self.tabProject.setObjectName(_fromUtf8("tabProject")) - self.gridLayout_15 = QtGui.QGridLayout(self.tabProject) - self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15")) - - self.frame = QtGui.QFrame(self.tabProject) - self.frame.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame.setFrameShadow(QtGui.QFrame.Raised) - self.frame.setObjectName(_fromUtf8("frame")) - - self.gridLayout_2 = QtGui.QGridLayout(self.frame) - self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) - - self.label = QtGui.QLabel(self.frame) - self.label.setObjectName(_fromUtf8("label")) - self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1) - - self.proName = QtGui.QLineEdit(self.frame) - self.proName.setObjectName(_fromUtf8("proName")) - self.gridLayout_2.addWidget(self.proName, 0, 1, 1, 8) - - self.labDatatype = QtGui.QLabel(self.frame) - self.labDatatype.setObjectName(_fromUtf8("labDatatype")) - self.gridLayout_2.addWidget(self.labDatatype, 1, 0, 1, 1) - - self.proComDataType = QtGui.QComboBox(self.frame) - self.proComDataType.setObjectName(_fromUtf8("proComDataType")) - self.proComDataType.addItem(_fromUtf8("")) - self.proComDataType.addItem(_fromUtf8("")) - self.proComDataType.addItem(_fromUtf8("")) - self.proComDataType.addItem(_fromUtf8("")) - self.gridLayout_2.addWidget(self.proComDataType, 1, 1, 1, 6) - - self.proDataType = QtGui.QLineEdit(self.frame) - self.proDataType.setObjectName(_fromUtf8("proDataType")) - self.gridLayout_2.addWidget(self.proDataType, 1, 7, 1, 2) - - self.labDatapath = QtGui.QLabel(self.frame) - self.labDatapath.setObjectName(_fromUtf8("labDatapath")) - self.gridLayout_2.addWidget(self.labDatapath, 2, 0, 1, 1) - - self.proToolPath = QtGui.QToolButton(self.frame) - self.proToolPath.setObjectName(_fromUtf8("proToolPath")) - self.gridLayout_2.addWidget(self.proToolPath, 2, 1, 1, 1) - - self.proDataPath = QtGui.QLineEdit(self.frame) - self.proDataPath.setObjectName(_fromUtf8("proDataPath")) - self.gridLayout_2.addWidget(self.proDataPath, 2, 2, 1, 7) - - self.labelWalk = QtGui.QLabel(self.frame) - self.labelWalk.setObjectName(_fromUtf8("labelWalk")) - self.gridLayout_2.addWidget(self.labelWalk, 3, 0, 1, 1) - - self.proComWalk = QtGui.QComboBox(self.frame) - self.proComWalk.setObjectName(_fromUtf8("proComWalk")) - self.proComWalk.addItem(_fromUtf8("")) - self.proComWalk.addItem(_fromUtf8("")) - self.gridLayout_2.addWidget(self.proComWalk, 3, 1, 1, 4) - - self.labExpLabel = QtGui.QLabel(self.frame) - self.labExpLabel.setObjectName(_fromUtf8("labExpLabel")) - self.gridLayout_2.addWidget(self.labExpLabel, 3, 5, 1, 1) - - self.proExpLabel = QtGui.QLineEdit(self.frame) - self.proExpLabel.setObjectName(_fromUtf8("proExpLabel")) - self.gridLayout_2.addWidget(self.proExpLabel, 3, 6, 1, 1) - - self.labReadMode = QtGui.QLabel(self.frame) - self.labReadMode.setObjectName(_fromUtf8("labReadMode")) - self.gridLayout_2.addWidget(self.labReadMode, 4, 0, 1, 1) - - self.proComReadMode = QtGui.QComboBox(self.frame) - self.proComReadMode.setObjectName(_fromUtf8("proComReadMode")) - self.proComReadMode.addItem(_fromUtf8("")) - self.proComReadMode.addItem(_fromUtf8("")) - self.gridLayout_2.addWidget(self.proComReadMode, 4, 1, 1, 4) - - self.labDelay = QtGui.QLabel(self.frame) - self.labDelay.setObjectName(_fromUtf8("labDelay")) - self.gridLayout_2.addWidget(self.labDelay, 4, 5, 1, 1) - - self.proDelay = QtGui.QLineEdit(self.frame) - self.proDelay.setObjectName(_fromUtf8("proDelay")) - self.gridLayout_2.addWidget(self.proDelay, 4, 6, 1, 1) - - self.labelSet = QtGui.QLabel(self.frame) - self.labelSet.setObjectName(_fromUtf8("labelSet")) - self.gridLayout_2.addWidget(self.labelSet, 4, 7, 1, 1) - - self.proSet = QtGui.QLineEdit(self.frame) - self.proSet.setObjectName(_fromUtf8("proSet")) - self.gridLayout_2.addWidget(self.proSet, 4, 8, 1, 1) - - - self.proLoadButton = QtGui.QPushButton(self.frame) - self.proLoadButton.setObjectName(_fromUtf8("proLoadButton")) - self.gridLayout_2.addWidget(self.proLoadButton, 5, 0, 1, 9) - - self.frame_data = QtGui.QFrame(self.tabProject) - self.frame_data.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_data.setFrameShadow(QtGui.QFrame.Raised) - self.frame_data.setObjectName(_fromUtf8("frame_data")) - - self.gridLayout_data = QtGui.QGridLayout(self.frame_data) - self.gridLayout_data.setObjectName(_fromUtf8("gridLayout_data")) - - self.labelIPPKm = QtGui.QLabel(self.frame_data) - self.labelIPPKm.setObjectName(_fromUtf8("labelIPPKm")) - self.gridLayout_data.addWidget(self.labelIPPKm, 6, 0, 1, 1) - - self.proIPPKm = QtGui.QLineEdit(self.frame_data) - self.proIPPKm.setObjectName(_fromUtf8("proIPPKm")) - self.gridLayout_data.addWidget(self.proIPPKm, 6, 1, 1, 6) - - self.labnTxs = QtGui.QLabel(self.frame_data) - self.labnTxs.setObjectName(_fromUtf8("labnTxs")) - self.gridLayout_data.addWidget(self.labnTxs, 6, 0, 1, 1) - - self.pronTxs = QtGui.QLineEdit(self.frame_data) - self.pronTxs.setObjectName(_fromUtf8("pronTxs")) - self.gridLayout_data.addWidget(self.pronTxs, 6, 1, 1, 6) - - self.labByBlock = QtGui.QLabel(self.frame_data) - self.labByBlock.setObjectName(_fromUtf8("labByBlock")) - self.gridLayout_data.addWidget(self.labByBlock, 6, 7, 1, 1) - - self.proComByBlock = QtGui.QComboBox(self.frame_data) - self.proComByBlock.setObjectName(_fromUtf8("proComByBlock")) - self.proComByBlock.addItem(_fromUtf8("")) - self.proComByBlock.addItem(_fromUtf8("")) - self.gridLayout_data.addWidget(self.proComByBlock, 6, 8, 1, 1) - - - self.frame_2 = QtGui.QFrame(self.tabProject) - self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_2.setFrameShadow(QtGui.QFrame.Raised) - self.frame_2.setObjectName(_fromUtf8("frame_2")) - - self.gridLayout_10 = QtGui.QGridLayout(self.frame_2) - self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10")) - - self.label_27 = QtGui.QLabel(self.frame_2) - self.label_27.setObjectName(_fromUtf8("label_27")) - self.gridLayout_10.addWidget(self.label_27, 0, 0, 1, 1) - self.proComStartDate = QtGui.QComboBox(self.frame_2) - self.proComStartDate.setObjectName(_fromUtf8("proComStartDate")) - self.gridLayout_10.addWidget(self.proComStartDate, 0, 1, 1, 1) - self.label_28 = QtGui.QLabel(self.frame_2) - self.label_28.setObjectName(_fromUtf8("label_28")) - self.gridLayout_10.addWidget(self.label_28, 1, 0, 1, 1) - self.proComEndDate = QtGui.QComboBox(self.frame_2) - self.proComEndDate.setObjectName(_fromUtf8("proComEndDate")) - self.gridLayout_10.addWidget(self.proComEndDate, 1, 1, 1, 1) - self.label_2 = QtGui.QLabel(self.frame_2) - self.label_2.setObjectName(_fromUtf8("label_2")) - self.gridLayout_10.addWidget(self.label_2, 2, 0, 1, 1) - self.proStartTime = QtGui.QTimeEdit(self.frame_2) - self.proStartTime.setObjectName(_fromUtf8("proStartTime")) - self.gridLayout_10.addWidget(self.proStartTime, 2, 1, 1, 1) - self.label_3 = QtGui.QLabel(self.frame_2) - self.label_3.setObjectName(_fromUtf8("label_3")) - self.gridLayout_10.addWidget(self.label_3, 3, 0, 1, 1) - self.proEndTime = QtGui.QTimeEdit(self.frame_2) - self.proEndTime.setObjectName(_fromUtf8("proEndTime")) - self.gridLayout_10.addWidget(self.proEndTime, 3, 1, 1, 1) - self.label_30 = QtGui.QLabel(self.frame_2) - self.label_30.setObjectName(_fromUtf8("label_30")) - self.gridLayout_10.addWidget(self.label_30, 4, 0, 1, 1) - self.proDescription = QtGui.QTextEdit(self.frame_2) - self.proDescription.setObjectName(_fromUtf8("proDescription")) - self.gridLayout_10.addWidget(self.proDescription, 4, 1, 1, 1) - - self.frame_3 = QtGui.QFrame(self.tabProject) - self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_3.setFrameShadow(QtGui.QFrame.Raised) - self.frame_3.setObjectName(_fromUtf8("frame_3")) - self.gridLayout_14 = QtGui.QGridLayout(self.frame_3) - self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14")) - self.proOk = QtGui.QPushButton(self.frame_3) - self.proOk.setObjectName(_fromUtf8("proOk")) - self.gridLayout_14.addWidget(self.proOk, 0, 0, 1, 1) - self.proClear = QtGui.QPushButton(self.frame_3) - self.proClear.setObjectName(_fromUtf8("proClear")) - self.gridLayout_14.addWidget(self.proClear, 0, 1, 1, 1) - - self.gridLayout_15.addWidget(self.frame, 0, 0, 8, 1) - self.gridLayout_15.addWidget(self.frame_data, 8, 0, 2, 1) - self.gridLayout_15.addWidget(self.frame_2, 10, 0, 7, 1) - self.gridLayout_15.addWidget(self.frame_3, 17, 0, 2, 1) - - self.tabWidgetProject.addTab(self.tabProject, _fromUtf8("")) - - def retranslateUi(self): - - self.label.setText(_translate("MainWindow", "Project Name :", None)) - self.labDatatype.setText(_translate("MainWindow", "Data type :", None)) - self.proComDataType.setItemText(0, _translate("MainWindow", "Voltage", None)) - self.proComDataType.setItemText(1, _translate("MainWindow", "Spectra", None)) - self.proComDataType.setItemText(2, _translate("MainWindow", "Fits", None)) - self.proComDataType.setItemText(3, _translate("MainWindow", "USRP", None)) - self.labDatapath.setText(_translate("MainWindow", "Data path :", None)) - self.proToolPath.setText(_translate("MainWindow", "...", None)) - self.labReadMode.setText(_translate("MainWindow", "Read mode:", None)) - self.proComReadMode.setItemText(0, _translate("MainWindow", "Offline", None)) - self.proComReadMode.setItemText(1, _translate("MainWindow", "Online", None)) - self.labDelay.setText(_translate("MainWindow", "Delay:", None)) - self.labExpLabel.setText(_translate("MainWindow", "Exp. Label:", None)) - self.labelWalk.setText(_translate("MainWindow", "Search data :", None)) - self.proComWalk.setItemText(0, _translate("MainWindow", "On files", None)) - self.proComWalk.setItemText(1, _translate("MainWindow", "On sub-folders", None)) - self.proComByBlock.setItemText(0, _translate("MainWindow", "By profile", None)) - self.proComByBlock.setItemText(1, _translate("MainWindow", "By block", None)) - self.labByBlock.setText(_translate("MainWindow", "Get data:", None)) - - - self.proLoadButton.setText(_translate("MainWindow", "Load", None)) - self.labelSet.setText(_translate("MainWindow", "File set:", None)) - self.labelIPPKm.setText(_translate("MainWindow", "IPP (km):", None)) - self.labnTxs.setText(_translate("MainWindow", "Number of Txs:", None)) - - self.label_27.setText(_translate("MainWindow", "Star Date:", None)) - self.label_28.setText(_translate("MainWindow", "End Date:", None)) - self.label_2.setText(_translate("MainWindow", "Start Time:", None)) - self.label_3.setText(_translate("MainWindow", "End Time:", None)) - self.label_30.setText(_translate("MainWindow", "Description:", None)) - self.proOk.setText(_translate("MainWindow", "Ok", None)) - self.proClear.setText(_translate("MainWindow", "Clear", None)) - - self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabProject), _translate("MainWindow", "Project", None)) - - self.__setToolTip() - - def __setToolTip(self): - - self.proComWalk.setToolTip('On Files:Search file in format .r or pdata On Folders:Search file in a directory DYYYYDOY') - \ No newline at end of file diff --git a/schainpy/gui/viewer/windows/ui_spectra.py b/schainpy/gui/viewer/windows/ui_spectra.py deleted file mode 100644 index c1d09ab..0000000 --- a/schainpy/gui/viewer/windows/ui_spectra.py +++ /dev/null @@ -1,528 +0,0 @@ -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_SpectraTab(object): - - def setupUi(self): - - self.tabSpectra = QtGui.QWidget() - self.tabSpectra.setObjectName(_fromUtf8("tabSpectra")) - self.gridLayout_7 = QtGui.QGridLayout(self.tabSpectra) - self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7")) - self.frame_5 = QtGui.QFrame(self.tabSpectra) - self.frame_5.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_5.setFrameShadow(QtGui.QFrame.Raised) - self.frame_5.setObjectName(_fromUtf8("frame_5")) - self.gridLayout_18 = QtGui.QGridLayout(self.frame_5) - self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18")) - - self.specOpOk = QtGui.QPushButton(self.frame_5) - self.specOpOk.setObjectName(_fromUtf8("specOpOk")) - self.gridLayout_18.addWidget(self.specOpOk, 0, 0, 1, 1) - - self.specGraphClear = QtGui.QPushButton(self.frame_5) - self.specGraphClear.setObjectName(_fromUtf8("specGraphClear")) - self.gridLayout_18.addWidget(self.specGraphClear, 0, 1, 1, 1) - - self.gridLayout_7.addWidget(self.frame_5, 1, 1, 1, 1) - - self.tabWidgetSpectra = QtGui.QTabWidget(self.tabSpectra) - self.tabWidgetSpectra.setObjectName(_fromUtf8("tabWidgetSpectra")) - - self.tabopSpectra = QtGui.QWidget() - self.tabopSpectra.setObjectName(_fromUtf8("tabopSpectra")) - - self.gridLayout_5 = QtGui.QGridLayout(self.tabopSpectra) - self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5")) - - - - self.specOpCebRadarfrequency = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebRadarfrequency.setObjectName(_fromUtf8("specOpCebRadarfrequency")) - self.gridLayout_5.addWidget(self.specOpCebRadarfrequency, 0, 0, 1, 1) - - self.specOpRadarfrequency = QtGui.QLineEdit(self.tabopSpectra) - self.specOpRadarfrequency.setObjectName(_fromUtf8("specOpRadarfrequency")) - self.gridLayout_5.addWidget(self.specOpRadarfrequency, 0, 1, 1, 4) - - - self.specLabProfiles = QtGui.QLabel(self.tabopSpectra) - self.specLabProfiles.setObjectName(_fromUtf8("specLabProfiles")) - self.gridLayout_5.addWidget(self.specLabProfiles, 1, 0, 1, 1) - - self.specOpProfiles = QtGui.QLineEdit(self.tabopSpectra) - self.specOpProfiles.setObjectName(_fromUtf8("specOpProfiles")) - self.gridLayout_5.addWidget(self.specOpProfiles, 1, 1, 1, 4) - - - self.specLabnFFTPoints = QtGui.QLabel(self.tabopSpectra) - self.specLabnFFTPoints.setObjectName(_fromUtf8("specLabnFFTPoints")) - self.gridLayout_5.addWidget(self.specLabnFFTPoints, 2, 0, 1, 1) - - self.specOpnFFTpoints = QtGui.QLineEdit(self.tabopSpectra) - self.specOpnFFTpoints.setObjectName(_fromUtf8("specOpnFFTpoints")) - self.gridLayout_5.addWidget(self.specOpnFFTpoints, 2, 1, 1, 4) - - - self.specLabippFactor = QtGui.QLabel(self.tabopSpectra) - self.specLabippFactor.setObjectName(_fromUtf8("specLabippFactor")) - self.gridLayout_5.addWidget(self.specLabippFactor, 3, 0, 1, 1) - - self.specOpippFactor = QtGui.QLineEdit(self.tabopSpectra) - self.specOpippFactor.setObjectName(_fromUtf8("specOpippFactor")) - self.gridLayout_5.addWidget(self.specOpippFactor, 3, 1, 1, 4) - - - self.specOpCebChannel = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebChannel.setObjectName(_fromUtf8("specOpCebChannel")) - self.gridLayout_5.addWidget(self.specOpCebChannel, 4, 0, 1, 1) - - self.specOpComChannel = QtGui.QComboBox(self.tabopSpectra) - self.specOpComChannel.setObjectName(_fromUtf8("specOpComChannel")) - self.specOpComChannel.addItem(_fromUtf8("")) - self.specOpComChannel.addItem(_fromUtf8("")) - self.gridLayout_5.addWidget(self.specOpComChannel, 4, 1, 1, 2) - - self.specOpChannel = QtGui.QLineEdit(self.tabopSpectra) - self.specOpChannel.setObjectName(_fromUtf8("specOpChannel")) - self.gridLayout_5.addWidget(self.specOpChannel, 4, 3, 1, 2) - - - self.specOpCebCrossSpectra = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebCrossSpectra.setObjectName(_fromUtf8("specOpCebCrossSpectra")) - self.gridLayout_5.addWidget(self.specOpCebCrossSpectra, 5, 0, 1, 1) - - self.specOpComCrossSpectra = QtGui.QComboBox(self.tabopSpectra) - self.specOpComCrossSpectra.setObjectName(_fromUtf8("specOpComCrossSpectra")) - self.specOpComCrossSpectra.addItem(_fromUtf8("")) - self.gridLayout_5.addWidget(self.specOpComCrossSpectra, 5, 1, 1, 2) - - self.specOppairsList = QtGui.QLineEdit(self.tabopSpectra) - self.specOppairsList.setObjectName(_fromUtf8("specOppairsList")) - self.gridLayout_5.addWidget(self.specOppairsList, 5, 3, 1, 2) - - - self.specOpCebHeights = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebHeights.setObjectName(_fromUtf8("specOpCebHeights")) - self.gridLayout_5.addWidget(self.specOpCebHeights, 6, 0, 1, 1) - - self.specOpComHeights = QtGui.QComboBox(self.tabopSpectra) - self.specOpComHeights.setObjectName(_fromUtf8("specOpComHeights")) - self.specOpComHeights.addItem(_fromUtf8("")) - self.specOpComHeights.addItem(_fromUtf8("")) - self.gridLayout_5.addWidget(self.specOpComHeights, 6, 1, 1, 2) - - self.specOpHeights = QtGui.QLineEdit(self.tabopSpectra) - self.specOpHeights.setObjectName(_fromUtf8("specOpHeights")) - self.gridLayout_5.addWidget(self.specOpHeights, 6, 3, 1, 2) - - - self.specOpCebIncoherent = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebIncoherent.setObjectName(_fromUtf8("specOpCebIncoherent")) - self.gridLayout_5.addWidget(self.specOpCebIncoherent, 7, 0, 1, 1) - - self.specOpCobIncInt = QtGui.QComboBox(self.tabopSpectra) - self.specOpCobIncInt.setObjectName(_fromUtf8("specOpCobIncInt")) - self.specOpCobIncInt.addItem(_fromUtf8("")) - self.specOpCobIncInt.addItem(_fromUtf8("")) - self.gridLayout_5.addWidget(self.specOpCobIncInt, 7, 1, 1, 2) - - self.specOpIncoherent = QtGui.QLineEdit(self.tabopSpectra) - self.specOpIncoherent.setObjectName(_fromUtf8("specOpIncoherent")) - self.gridLayout_5.addWidget(self.specOpIncoherent, 7, 3, 1, 2) - - - self.specOpCebRemoveDC = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebRemoveDC.setObjectName(_fromUtf8("specOpCebRemoveDC")) - self.gridLayout_5.addWidget(self.specOpCebRemoveDC, 8, 0, 1, 1) - - self.specOpComRemoveDC = QtGui.QComboBox(self.tabopSpectra) - self.specOpComRemoveDC.setObjectName(_fromUtf8("specOpComRemoveDC")) - self.specOpComRemoveDC.addItem(_fromUtf8("")) - self.specOpComRemoveDC.addItem(_fromUtf8("")) - self.gridLayout_5.addWidget(self.specOpComRemoveDC, 8, 1, 1, 2) - - - self.specOpCebRemoveInt = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebRemoveInt.setObjectName(_fromUtf8("specOpCebRemoveInt")) - self.gridLayout_5.addWidget(self.specOpCebRemoveInt, 9, 0, 1, 1) - - - self.specOpCebgetNoise = QtGui.QCheckBox(self.tabopSpectra) - self.specOpCebgetNoise.setObjectName(_fromUtf8("specOpCebgetNoise")) - self.gridLayout_5.addWidget(self.specOpCebgetNoise, 10, 0, 1, 1) - - self.specOpgetNoise = QtGui.QLineEdit(self.tabopSpectra) - self.specOpgetNoise.setObjectName(_fromUtf8("specOpgetNoise")) - self.gridLayout_5.addWidget(self.specOpgetNoise, 10, 1, 1, 4) - -# spacerItem9 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_5.addItem(spacerItem9, 12, 3, 1, 1) -# -# spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_5.addItem(spacerItem10, 9, 3, 1, 1) -# -# spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_5.addItem(spacerItem11, 7, 3, 1, 1) -# -# spacerItem12 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_5.addItem(spacerItem12, 4, 3, 1, 1) -# -# spacerItem13 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_5.addItem(spacerItem13, 15, 3, 1, 1) - - - self.tabWidgetSpectra.addTab(self.tabopSpectra, _fromUtf8("")) - - ################################################################ - ################################################################ - - self.tabgraphSpectra = QtGui.QWidget() - self.tabgraphSpectra.setObjectName(_fromUtf8("tabgraphSpectra")) - self.gridLayout_9 = QtGui.QGridLayout(self.tabgraphSpectra) - self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9")) - -# spacerItem14 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) -# self.gridLayout_9.addItem(spacerItem14, 14, 2, 1, 1) - xi = 0 - - self.label_24 = QtGui.QLabel(self.tabgraphSpectra) - self.label_24.setObjectName(_fromUtf8("label_24")) - self.gridLayout_9.addWidget(self.label_24, xi, 0, 1, 1) - - self.specGraphPath = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGraphPath.setObjectName(_fromUtf8("specGraphPath")) - self.gridLayout_9.addWidget(self.specGraphPath, xi, 1, 1, 6) - - self.specGraphToolPath = QtGui.QToolButton(self.tabgraphSpectra) - self.specGraphToolPath.setObjectName(_fromUtf8("specGraphToolPath")) - self.gridLayout_9.addWidget(self.specGraphToolPath, xi, 7, 1, 1) - - self.label_25 = QtGui.QLabel(self.tabgraphSpectra) - self.label_25.setObjectName(_fromUtf8("label_25")) - self.gridLayout_9.addWidget(self.label_25, xi+1, 0, 1, 1) - self.specGraphPrefix = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGraphPrefix.setObjectName(_fromUtf8("specGraphPrefix")) - self.gridLayout_9.addWidget(self.specGraphPrefix, xi+1, 1, 1, 7) - - xi = 2 - - self.label_40 = QtGui.QLabel(self.tabgraphSpectra) - self.label_40.setObjectName(_fromUtf8("label_40")) - self.gridLayout_9.addWidget(self.label_40, xi+1, 0, 1, 1) - self.label_41 = QtGui.QLabel(self.tabgraphSpectra) - self.label_41.setObjectName(_fromUtf8("label_41")) - self.gridLayout_9.addWidget(self.label_41, xi+2, 0, 1, 1) - self.label_42 = QtGui.QLabel(self.tabgraphSpectra) - self.label_42.setObjectName(_fromUtf8("label_42")) - self.gridLayout_9.addWidget(self.label_42, xi+3, 0, 1, 1) - self.label_44 = QtGui.QLabel(self.tabgraphSpectra) - self.label_44.setObjectName(_fromUtf8("label_44")) - self.gridLayout_9.addWidget(self.label_44, xi+4, 0, 1, 1) - self.label_46 = QtGui.QLabel(self.tabgraphSpectra) - self.label_46.setObjectName(_fromUtf8("label_46")) - self.gridLayout_9.addWidget(self.label_46, xi+5, 0, 1, 1) - self.label_45 = QtGui.QLabel(self.tabgraphSpectra) - self.label_45.setObjectName(_fromUtf8("label_45")) - self.gridLayout_9.addWidget(self.label_45, xi+6, 0, 1, 1) - - self.label_43 = QtGui.QLabel(self.tabgraphSpectra) - self.label_43.setObjectName(_fromUtf8("label_43")) - self.gridLayout_9.addWidget(self.label_43, xi, 3, 1, 1) - self.specGraphCebSpectraplot = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphCebSpectraplot.setText(_fromUtf8("")) - self.specGraphCebSpectraplot.setObjectName(_fromUtf8("specGraphCebSpectraplot")) - self.gridLayout_9.addWidget(self.specGraphCebSpectraplot, xi+1, 3, 1, 1) - self.specGraphCebCrossSpectraplot = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphCebCrossSpectraplot.setText(_fromUtf8("")) - self.specGraphCebCrossSpectraplot.setObjectName(_fromUtf8("specGraphCebCrossSpectraplot")) - self.gridLayout_9.addWidget(self.specGraphCebCrossSpectraplot, xi+2, 3, 1, 1) - self.specGraphCebRTIplot = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphCebRTIplot.setText(_fromUtf8("")) - self.specGraphCebRTIplot.setObjectName(_fromUtf8("specGraphCebRTIplot")) - self.gridLayout_9.addWidget(self.specGraphCebRTIplot, xi+3, 3, 1, 1) - self.specGraphCebCoherencmap = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphCebCoherencmap.setText(_fromUtf8("")) - self.specGraphCebCoherencmap.setObjectName(_fromUtf8("specGraphCebCoherencmap")) - self.gridLayout_9.addWidget(self.specGraphCebCoherencmap, xi+4, 3, 1, 1) - self.specGraphPowerprofile = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphPowerprofile.setText(_fromUtf8("")) - self.specGraphPowerprofile.setObjectName(_fromUtf8("specGraphPowerprofile")) - self.gridLayout_9.addWidget(self.specGraphPowerprofile, xi+5, 3, 1, 1) - self.specGraphCebRTInoise = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphCebRTInoise.setText(_fromUtf8("")) - self.specGraphCebRTInoise.setObjectName(_fromUtf8("specGraphCebRTInoise")) - self.gridLayout_9.addWidget(self.specGraphCebRTInoise, xi+6, 3, 1, 1) - -# spacerItem18 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_9.addItem(spacerItem18, 4, 3, 1, 1) - - self.label_47 = QtGui.QLabel(self.tabgraphSpectra) - self.label_47.setObjectName(_fromUtf8("label_47")) - self.gridLayout_9.addWidget(self.label_47, xi, 5, 1, 1) - self.specGraphSaveSpectra = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphSaveSpectra.setText(_fromUtf8("")) - self.specGraphSaveSpectra.setObjectName(_fromUtf8("specGraphSaveSpectra")) - self.gridLayout_9.addWidget(self.specGraphSaveSpectra, xi+1, 5, 1, 1) - self.specGraphSaveCross = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphSaveCross.setText(_fromUtf8("")) - self.specGraphSaveCross.setObjectName(_fromUtf8("specGraphSaveCross")) - self.gridLayout_9.addWidget(self.specGraphSaveCross, xi+2, 5, 1, 1) - self.specGraphSaveRTIplot = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphSaveRTIplot.setText(_fromUtf8("")) - self.specGraphSaveRTIplot.setObjectName(_fromUtf8("specGraphSaveRTIplot")) - self.gridLayout_9.addWidget(self.specGraphSaveRTIplot, xi+3, 5, 1, 1) - self.specGraphSaveCoherencemap = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphSaveCoherencemap.setText(_fromUtf8("")) - self.specGraphSaveCoherencemap.setObjectName(_fromUtf8("specGraphSaveCoherencemap")) - self.gridLayout_9.addWidget(self.specGraphSaveCoherencemap, xi+4, 5, 1, 1) - self.specGraphSavePowerprofile = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphSavePowerprofile.setText(_fromUtf8("")) - self.specGraphSavePowerprofile.setObjectName(_fromUtf8("specGraphSavePowerprofile")) - self.gridLayout_9.addWidget(self.specGraphSavePowerprofile, xi+5, 5, 1, 1) - self.specGraphSaveRTInoise = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphSaveRTInoise.setText(_fromUtf8("")) - self.specGraphSaveRTInoise.setObjectName(_fromUtf8("specGraphSaveRTInoise")) - self.gridLayout_9.addWidget(self.specGraphSaveRTInoise, xi+6, 5, 1, 1) - - self.label_19 = QtGui.QLabel(self.tabgraphSpectra) - self.label_19.setObjectName(_fromUtf8("label_19")) - self.gridLayout_9.addWidget(self.label_19, xi, 7, 1, 1) - self.specGraphftpSpectra = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphftpSpectra.setText(_fromUtf8("")) - self.specGraphftpSpectra.setObjectName(_fromUtf8("specGraphftpSpectra")) - self.gridLayout_9.addWidget(self.specGraphftpSpectra, xi+1, 7, 1, 1) - self.specGraphftpCross = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphftpCross.setText(_fromUtf8("")) - self.specGraphftpCross.setObjectName(_fromUtf8("specGraphftpCross")) - self.gridLayout_9.addWidget(self.specGraphftpCross, xi+2, 7, 1, 1) - self.specGraphftpRTIplot = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphftpRTIplot.setText(_fromUtf8("")) - self.specGraphftpRTIplot.setObjectName(_fromUtf8("specGraphftpRTIplot")) - self.gridLayout_9.addWidget(self.specGraphftpRTIplot, xi+3, 7, 1, 1) - self.specGraphftpCoherencemap = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphftpCoherencemap.setText(_fromUtf8("")) - self.specGraphftpCoherencemap.setObjectName(_fromUtf8("specGraphftpCoherencemap")) - self.gridLayout_9.addWidget(self.specGraphftpCoherencemap, xi+4, 7, 1, 1) - self.specGraphftpPowerprofile = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphftpPowerprofile.setText(_fromUtf8("")) - self.specGraphftpPowerprofile.setObjectName(_fromUtf8("specGraphftpPowerprofile")) - self.gridLayout_9.addWidget(self.specGraphftpPowerprofile, xi+5, 7, 1, 1) - self.specGraphftpRTInoise = QtGui.QCheckBox(self.tabgraphSpectra) - self.specGraphftpRTInoise.setText(_fromUtf8("")) - self.specGraphftpRTInoise.setObjectName(_fromUtf8("specGraphftpRTInoise")) - self.gridLayout_9.addWidget(self.specGraphftpRTInoise, xi+6, 7, 1, 1) - -# spacerItem19 = QtGui.QSpacerItem(39, 15, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_9.addItem(spacerItem19, 27, 4, 1, 1) - - xi = 11 - - self.label_22 = QtGui.QLabel(self.tabgraphSpectra) - self.label_22.setObjectName(_fromUtf8("label_22")) - self.gridLayout_9.addWidget(self.label_22, xi, 0, 1, 1) - self.specGgraphFreq = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphFreq.setObjectName(_fromUtf8("specGgraphFreq")) - self.gridLayout_9.addWidget(self.specGgraphFreq, xi, 2, 1, 2) - - self.label_16 = QtGui.QLabel(self.tabgraphSpectra) - self.label_16.setObjectName(_fromUtf8("label_16")) - self.gridLayout_9.addWidget(self.label_16, xi+1, 0, 1, 1) - self.specGgraphHeight = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphHeight.setObjectName(_fromUtf8("specGgraphHeight")) - self.gridLayout_9.addWidget(self.specGgraphHeight, xi+1, 2, 1, 2) - - self.label_17 = QtGui.QLabel(self.tabgraphSpectra) - self.label_17.setObjectName(_fromUtf8("label_17")) - self.gridLayout_9.addWidget(self.label_17, xi+2, 0, 1, 1) - self.specGgraphDbsrange = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphDbsrange.setObjectName(_fromUtf8("specGgraphDbsrange")) - self.gridLayout_9.addWidget(self.specGgraphDbsrange, xi+2, 2, 1, 2) - - self.specGraphTminTmaxLabel = QtGui.QLabel(self.tabgraphSpectra) - self.specGraphTminTmaxLabel.setObjectName(_fromUtf8("specGraphTminTmaxLabel")) - self.gridLayout_9.addWidget(self.specGraphTminTmaxLabel, xi+3, 0, 1, 2) - self.specGgraphTminTmax = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphTminTmax.setObjectName(_fromUtf8("specGgraphTminTmax")) - self.gridLayout_9.addWidget(self.specGgraphTminTmax, xi+3, 2, 1, 2) - - self.label_48 = QtGui.QLabel(self.tabgraphSpectra) - self.label_48.setObjectName(_fromUtf8("label_48")) - self.gridLayout_9.addWidget(self.label_48, xi+4, 0, 1, 2) - self.specGgraphTimeRange = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphTimeRange.setObjectName(_fromUtf8("specGgraphTimeRange")) - self.gridLayout_9.addWidget(self.specGgraphTimeRange, xi+4, 2, 1, 2) - - self.specGraphMagLabel = QtGui.QLabel(self.tabgraphSpectra) - self.specGraphMagLabel.setObjectName(_fromUtf8("specGraphMagLabel")) - self.gridLayout_9.addWidget(self.specGraphMagLabel, xi, 4, 1, 2) - self.specGgraphmagnitud = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphmagnitud.setObjectName(_fromUtf8("specGgraphmagnitud")) - self.gridLayout_9.addWidget(self.specGgraphmagnitud, xi, 6, 1, 2) - - self.specGraphPhaseLabel = QtGui.QLabel(self.tabgraphSpectra) - self.specGraphPhaseLabel.setObjectName(_fromUtf8("specGraphPhaseLabel")) - self.gridLayout_9.addWidget(self.specGraphPhaseLabel, xi+1, 4, 1, 2) - self.specGgraphPhase = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphPhase.setObjectName(_fromUtf8("specGgraphPhase")) - self.gridLayout_9.addWidget(self.specGgraphPhase, xi+1, 6, 1, 2) - - self.label_6 = QtGui.QLabel(self.tabgraphSpectra) - self.label_6.setObjectName(_fromUtf8("label_6")) - self.gridLayout_9.addWidget(self.label_6, xi+2, 4, 1, 1) - self.specGgraphChannelList = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphChannelList.setObjectName(_fromUtf8("specGgraphChannelList")) - self.gridLayout_9.addWidget(self.specGgraphChannelList, xi+2, 6, 1, 2) - - self.label_29 = QtGui.QLabel(self.tabgraphSpectra) - self.label_29.setObjectName(_fromUtf8("label_29")) - self.gridLayout_9.addWidget(self.label_29, xi+3, 4, 1, 2) - self.specGgraphftpratio = QtGui.QLineEdit(self.tabgraphSpectra) - self.specGgraphftpratio.setObjectName(_fromUtf8("specGgraphftpratio")) - self.gridLayout_9.addWidget(self.specGgraphftpratio, xi+3, 6, 1, 2) - -# spacerItem15 = QtGui.QSpacerItem(28, 15, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_9.addItem(spacerItem15, 27, 6, 1, 2) -# spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) -# self.gridLayout_9.addItem(spacerItem16, 3, 5, 1, 1) -# spacerItem17 = QtGui.QSpacerItem(49, 15, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout_9.addItem(spacerItem17, 27, 0, 1, 1) - - - - self.tabWidgetSpectra.addTab(self.tabgraphSpectra, _fromUtf8("")) - self.taboutputSpectra = QtGui.QWidget() - self.taboutputSpectra.setObjectName(_fromUtf8("taboutputSpectra")) - self.gridLayout_11 = QtGui.QGridLayout(self.taboutputSpectra) - self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11")) - self.label_39 = QtGui.QLabel(self.taboutputSpectra) - self.label_39.setObjectName(_fromUtf8("label_39")) - self.gridLayout_11.addWidget(self.label_39, 0, 0, 1, 1) - self.specOutputComData = QtGui.QComboBox(self.taboutputSpectra) - self.specOutputComData.setObjectName(_fromUtf8("specOutputComData")) - self.specOutputComData.addItem(_fromUtf8("")) - self.gridLayout_11.addWidget(self.specOutputComData, 0, 2, 1, 2) - self.label_34 = QtGui.QLabel(self.taboutputSpectra) - self.label_34.setObjectName(_fromUtf8("label_34")) - self.gridLayout_11.addWidget(self.label_34, 1, 0, 1, 1) - self.specOutputPath = QtGui.QLineEdit(self.taboutputSpectra) - self.specOutputPath.setObjectName(_fromUtf8("specOutputPath")) - self.gridLayout_11.addWidget(self.specOutputPath, 1, 2, 1, 1) - spacerItem20 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_11.addItem(spacerItem20, 4, 2, 1, 1) - self.specOutputToolPath = QtGui.QToolButton(self.taboutputSpectra) - self.specOutputToolPath.setObjectName(_fromUtf8("specOutputToolPath")) - self.gridLayout_11.addWidget(self.specOutputToolPath, 1, 3, 1, 1) - self.specOutputblocksperfile = QtGui.QLineEdit(self.taboutputSpectra) - self.specOutputblocksperfile.setObjectName(_fromUtf8("specOutputblocksperfile")) - self.gridLayout_11.addWidget(self.specOutputblocksperfile, 2, 2, 1, 1) - self.label_9 = QtGui.QLabel(self.taboutputSpectra) - self.label_9.setObjectName(_fromUtf8("label_9")) - self.gridLayout_11.addWidget(self.label_9, 2, 0, 1, 2) - - self.tabWidgetSpectra.addTab(self.taboutputSpectra, _fromUtf8("")) - self.gridLayout_7.addWidget(self.tabWidgetSpectra, 0, 1, 1, 1) - - self.tabWidgetProject.addTab(self.tabSpectra, _fromUtf8("")) - - self.tabWidgetSpectra.setCurrentIndex(0) - - def retranslateUi(self): - - self.specOpOk.setText(_translate("MainWindow", "Ok", None)) - self.specGraphClear.setText(_translate("MainWindow", "Clear", None)) - self.specOpCebCrossSpectra.setText(_translate("MainWindow", "Select Cross Spectra:", None)) - self.specOpComChannel.setItemText(0, _translate("MainWindow", "Value", None)) - self.specOpComChannel.setItemText(1, _translate("MainWindow", "Index", None)) - self.specOpComHeights.setItemText(0, _translate("MainWindow", "Value", None)) - self.specOpComHeights.setItemText(1, _translate("MainWindow", "Index", None)) - self.specOpCebRemoveDC.setText(_translate("MainWindow", "Remove DC:", None)) - self.specOpCebHeights.setText(_translate("MainWindow", "Select Heights:", None)) - self.specOpCebChannel.setText(_translate("MainWindow", "Select Channel:", None)) - - self.specOpComCrossSpectra.setItemText(0, _translate("MainWindow", "x-y pairs", None)) - - self.specLabnFFTPoints.setText(_translate("MainWindow", "Number of FFT points:", None)) - self.specOpCebIncoherent.setText(_translate("MainWindow", "Incoherent Integration:", None)) - self.specOpCobIncInt.setItemText(0, _translate("MainWindow", "Time Interval", None)) - self.specOpCobIncInt.setItemText(1, _translate("MainWindow", "Number of Profiles", None)) - self.specOpCebRadarfrequency.setText(_translate("MainWindow", "Radar frequency (MHz):", None)) - self.specLabProfiles.setText(_translate("MainWindow", "Number of Profiles", None)) - self.specOpCebRemoveInt.setText(_translate("MainWindow", "Remove Interference:", None)) - self.specLabippFactor.setText(_translate("MainWindow", "Ipp Factor:", None)) - self.specOpCebgetNoise.setText(_translate("MainWindow", "Set Noise area:", None)) - self.specOpComRemoveDC.setItemText(0, _translate("MainWindow", "Mode 1", None)) - self.specOpComRemoveDC.setItemText(1, _translate("MainWindow", "Mode 2", None)) - self.tabWidgetSpectra.setTabText(self.tabWidgetSpectra.indexOf(self.tabopSpectra), _translate("MainWindow", "Operation", None)) - - self.label_44.setText(_translate("MainWindow", "Coherence Map:", None)) - self.specGraphTminTmaxLabel.setText(_translate("MainWindow", "Time range (hours):", None)) - self.label_25.setText(_translate("MainWindow", "Prefix:", None)) - self.label_42.setText(_translate("MainWindow", "RTI Plot:", None)) - self.label_16.setText(_translate("MainWindow", "Height range:", None)) - self.label_17.setText(_translate("MainWindow", "dB range:", None)) - self.specGraphMagLabel.setText(_translate("MainWindow", "Coh. Magnitud:", None)) - self.label_24.setText(_translate("MainWindow", "Path:", None)) - self.label_46.setText(_translate("MainWindow", "Power Profile:", None)) - self.label_22.setText(_translate("MainWindow", "Freq/Vel range:", None)) - self.label_41.setText(_translate("MainWindow", "Cross Spectra Plot:", None)) - self.specGraphToolPath.setText(_translate("MainWindow", "...", None)) - self.label_6.setText(_translate("MainWindow", "Channel List:", None)) - self.label_40.setText(_translate("MainWindow", "Spectra Plot:", None)) - self.label_43.setText(_translate("MainWindow", "Show:", None)) - self.label_29.setText(_translate("MainWindow", "Writing Period:", None)) - self.label_47.setText(_translate("MainWindow", "Save:", None)) - self.label_19.setText(_translate("MainWindow", "Ftp:", None)) - self.label_45.setText(_translate("MainWindow", "Noise:", None)) - self.label_48.setText(_translate("MainWindow", "Time window (seconds):", None)) - self.specGraphPhaseLabel.setText(_translate("MainWindow", "Coh. Phase:", None)) -# self.label_48.hide() -# self.specGgraphTimeRange.hide() - self.tabWidgetSpectra.setTabText(self.tabWidgetSpectra.indexOf(self.tabgraphSpectra), _translate("MainWindow", "Graphics", None)) - - self.label_39.setText(_translate("MainWindow", "Type:", None)) - self.specOutputComData.setItemText(0, _translate("MainWindow", ".pdata", None)) - self.label_34.setText(_translate("MainWindow", "Path:", None)) - self.specOutputToolPath.setText(_translate("MainWindow", "...", None)) - self.label_9.setText(_translate("MainWindow", "Blocks per File: ", None)) - - self.tabWidgetSpectra.setTabText(self.tabWidgetSpectra.indexOf(self.taboutputSpectra), _translate("MainWindow", "Output", None)) - - self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabSpectra), _translate("MainWindow", "Spectra", None)) - - self.__setToolTip() - - def __setToolTip(self): - - self.specOpnFFTpoints.setToolTip('Number of FFT points used in FFT function. Example: 128') - self.specOpProfiles.setToolTip('Number of data points used in FFT function. Example: 128') - self.specOpippFactor.setToolTip('This factor is multiplied to IPP value to get velocity and frequency range. Example: 4') - self.specOpIncoherent.setToolTip('Example: 10') - self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)') - - self.specOpChannel.setToolTip('Example: 0,1,2,3') - self.specOpHeights.setToolTip('Example: 90,180') - self.specOppairsList.setToolTip('Example: (0,1),(2,3)') - # tool tip gui specGraph - - self.specGgraphChannelList.setToolTip('Example: 0,3,4') - self.specGgraphFreq.setToolTip('Example: -20,20') - self.specGgraphHeight.setToolTip('Example: 100,400') - self.specGgraphDbsrange.setToolTip('Example: 30,170') - - self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME') - - \ No newline at end of file diff --git a/schainpy/gui/viewer/windows/ui_spectra_heis.py b/schainpy/gui/viewer/windows/ui_spectra_heis.py deleted file mode 100644 index 7fcbcd3..0000000 --- a/schainpy/gui/viewer/windows/ui_spectra_heis.py +++ /dev/null @@ -1,252 +0,0 @@ -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_SpectraHeisTab(object): - - def setupUi(self): - - self.tabSpectraHeis = QtGui.QWidget() - self.tabSpectraHeis.setObjectName(_fromUtf8("tabSpectraHeis")) - self.gridLayout_23 = QtGui.QGridLayout(self.tabSpectraHeis) - self.gridLayout_23.setObjectName(_fromUtf8("gridLayout_23")) - self.frame_6 = QtGui.QFrame(self.tabSpectraHeis) - self.frame_6.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_6.setFrameShadow(QtGui.QFrame.Raised) - self.frame_6.setObjectName(_fromUtf8("frame_6")) - self.gridLayout_22 = QtGui.QGridLayout(self.frame_6) - self.gridLayout_22.setObjectName(_fromUtf8("gridLayout_22")) - self.specHeisGraphClear = QtGui.QPushButton(self.frame_6) - self.specHeisGraphClear.setObjectName(_fromUtf8("specHeisGraphClear")) - self.gridLayout_22.addWidget(self.specHeisGraphClear, 0, 1, 1, 1) - self.specHeisOpOk = QtGui.QPushButton(self.frame_6) - self.specHeisOpOk.setObjectName(_fromUtf8("specHeisOpOk")) - self.gridLayout_22.addWidget(self.specHeisOpOk, 0, 0, 1, 1) - self.gridLayout_23.addWidget(self.frame_6, 1, 0, 1, 1) - self.tabWidgetSpectraHeis = QtGui.QTabWidget(self.tabSpectraHeis) - self.tabWidgetSpectraHeis.setObjectName(_fromUtf8("tabWidgetSpectraHeis")) - self.tabopSpectraHeis = QtGui.QWidget() - self.tabopSpectraHeis.setObjectName(_fromUtf8("tabopSpectraHeis")) - self.gridLayout_21 = QtGui.QGridLayout(self.tabopSpectraHeis) - self.gridLayout_21.setObjectName(_fromUtf8("gridLayout_21")) - spacerItem21 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_21.addItem(spacerItem21, 0, 1, 1, 1) - self.specHeisOpCobIncInt = QtGui.QComboBox(self.tabopSpectraHeis) - self.specHeisOpCobIncInt.setObjectName(_fromUtf8("specHeisOpCobIncInt")) - self.specHeisOpCobIncInt.addItem(_fromUtf8("")) - self.gridLayout_21.addWidget(self.specHeisOpCobIncInt, 1, 0, 1, 1) - self.specHeisOpCebIncoherent = QtGui.QCheckBox(self.tabopSpectraHeis) - self.specHeisOpCebIncoherent.setObjectName(_fromUtf8("specHeisOpCebIncoherent")) - self.gridLayout_21.addWidget(self.specHeisOpCebIncoherent, 0, 0, 1, 1) - self.specHeisOpIncoherent = QtGui.QLineEdit(self.tabopSpectraHeis) - self.specHeisOpIncoherent.setObjectName(_fromUtf8("specHeisOpIncoherent")) - self.gridLayout_21.addWidget(self.specHeisOpIncoherent, 1, 1, 1, 1) - spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_21.addItem(spacerItem22, 2, 0, 1, 1) - self.tabWidgetSpectraHeis.addTab(self.tabopSpectraHeis, _fromUtf8("")) - self.tabgraphSpectraHeis = QtGui.QWidget() - self.tabgraphSpectraHeis.setObjectName(_fromUtf8("tabgraphSpectraHeis")) - self.gridLayout_20 = QtGui.QGridLayout(self.tabgraphSpectraHeis) - self.gridLayout_20.setObjectName(_fromUtf8("gridLayout_20")) - self.label_54 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_54.setObjectName(_fromUtf8("label_54")) - self.gridLayout_20.addWidget(self.label_54, 1, 0, 1, 1) - self.specHeisGraphToolPath = QtGui.QToolButton(self.tabgraphSpectraHeis) - self.specHeisGraphToolPath.setObjectName(_fromUtf8("specHeisGraphToolPath")) - self.gridLayout_20.addWidget(self.specHeisGraphToolPath, 0, 6, 1, 1) - self.specHeisGraphCebRTIplot = QtGui.QCheckBox(self.tabgraphSpectraHeis) - self.specHeisGraphCebRTIplot.setText(_fromUtf8("")) - self.specHeisGraphCebRTIplot.setObjectName(_fromUtf8("specHeisGraphCebRTIplot")) - self.gridLayout_20.addWidget(self.specHeisGraphCebRTIplot, 4, 2, 1, 1) - self.label_62 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_62.setObjectName(_fromUtf8("label_62")) - self.gridLayout_20.addWidget(self.label_62, 7, 0, 1, 1) - self.label_63 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_63.setObjectName(_fromUtf8("label_63")) - self.gridLayout_20.addWidget(self.label_63, 8, 0, 1, 1) - self.label_64 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_64.setObjectName(_fromUtf8("label_64")) - self.gridLayout_20.addWidget(self.label_64, 9, 0, 1, 1) - self.label_65 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_65.setObjectName(_fromUtf8("label_65")) - self.gridLayout_20.addWidget(self.label_65, 10, 0, 1, 1) - spacerItem23 = QtGui.QSpacerItem(134, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_20.addItem(spacerItem23, 11, 0, 1, 2) - self.specHeisGgraphftpratio = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGgraphftpratio.setObjectName(_fromUtf8("specHeisGgraphftpratio")) - self.gridLayout_20.addWidget(self.specHeisGgraphftpratio, 10, 1, 1, 6) - self.specHeisGraphftpRTIplot = QtGui.QCheckBox(self.tabgraphSpectraHeis) - self.specHeisGraphftpRTIplot.setText(_fromUtf8("")) - self.specHeisGraphftpRTIplot.setObjectName(_fromUtf8("specHeisGraphftpRTIplot")) - self.gridLayout_20.addWidget(self.specHeisGraphftpRTIplot, 4, 6, 1, 1) - self.specHeisGgraphTminTmax = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGgraphTminTmax.setObjectName(_fromUtf8("specHeisGgraphTminTmax")) - self.gridLayout_20.addWidget(self.specHeisGgraphTminTmax, 8, 1, 1, 6) - self.label_60 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_60.setObjectName(_fromUtf8("label_60")) - self.gridLayout_20.addWidget(self.label_60, 5, 0, 1, 1) - self.label_61 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_61.setObjectName(_fromUtf8("label_61")) - self.gridLayout_20.addWidget(self.label_61, 6, 0, 1, 1) - self.specHeisGraphPrefix = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGraphPrefix.setObjectName(_fromUtf8("specHeisGraphPrefix")) - self.gridLayout_20.addWidget(self.specHeisGraphPrefix, 1, 1, 1, 6) - self.label_56 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_56.setObjectName(_fromUtf8("label_56")) - self.gridLayout_20.addWidget(self.label_56, 2, 4, 1, 1) - self.label_57 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_57.setObjectName(_fromUtf8("label_57")) - self.gridLayout_20.addWidget(self.label_57, 2, 6, 1, 1) - self.label_58 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_58.setObjectName(_fromUtf8("label_58")) - self.gridLayout_20.addWidget(self.label_58, 3, 0, 1, 1) - self.specHeisGraphCebSpectraplot = QtGui.QCheckBox(self.tabgraphSpectraHeis) - self.specHeisGraphCebSpectraplot.setText(_fromUtf8("")) - self.specHeisGraphCebSpectraplot.setObjectName(_fromUtf8("specHeisGraphCebSpectraplot")) - self.gridLayout_20.addWidget(self.specHeisGraphCebSpectraplot, 3, 2, 1, 1) - self.specHeisGgraphYminYmax = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGgraphYminYmax.setObjectName(_fromUtf8("specHeisGgraphYminYmax")) - self.gridLayout_20.addWidget(self.specHeisGgraphYminYmax, 7, 1, 1, 6) - self.label_53 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_53.setObjectName(_fromUtf8("label_53")) - self.gridLayout_20.addWidget(self.label_53, 0, 0, 1, 1) - self.label_55 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_55.setObjectName(_fromUtf8("label_55")) - self.gridLayout_20.addWidget(self.label_55, 2, 2, 1, 1) - self.specHeisGraphSaveRTIplot = QtGui.QCheckBox(self.tabgraphSpectraHeis) - self.specHeisGraphSaveRTIplot.setText(_fromUtf8("")) - self.specHeisGraphSaveRTIplot.setObjectName(_fromUtf8("specHeisGraphSaveRTIplot")) - self.gridLayout_20.addWidget(self.specHeisGraphSaveRTIplot, 4, 4, 1, 1) - spacerItem24 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_20.addItem(spacerItem24, 2, 3, 1, 1) - self.specHeisGgraphXminXmax = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGgraphXminXmax.setObjectName(_fromUtf8("specHeisGgraphXminXmax")) - self.gridLayout_20.addWidget(self.specHeisGgraphXminXmax, 6, 1, 1, 6) - self.specHeisGgraphChannelList = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGgraphChannelList.setObjectName(_fromUtf8("specHeisGgraphChannelList")) - self.gridLayout_20.addWidget(self.specHeisGgraphChannelList, 5, 1, 1, 6) - self.specHeisGgraphTimeRange = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGgraphTimeRange.setObjectName(_fromUtf8("specHeisGgraphTimeRange")) - self.gridLayout_20.addWidget(self.specHeisGgraphTimeRange, 9, 1, 1, 6) - spacerItem25 = QtGui.QSpacerItem(106, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_20.addItem(spacerItem25, 11, 3, 1, 3) - self.specHeisGraphSaveSpectra = QtGui.QCheckBox(self.tabgraphSpectraHeis) - self.specHeisGraphSaveSpectra.setText(_fromUtf8("")) - self.specHeisGraphSaveSpectra.setObjectName(_fromUtf8("specHeisGraphSaveSpectra")) - self.gridLayout_20.addWidget(self.specHeisGraphSaveSpectra, 3, 4, 1, 1) - self.specHeisGraphftpSpectra = QtGui.QCheckBox(self.tabgraphSpectraHeis) - self.specHeisGraphftpSpectra.setText(_fromUtf8("")) - self.specHeisGraphftpSpectra.setObjectName(_fromUtf8("specHeisGraphftpSpectra")) - self.gridLayout_20.addWidget(self.specHeisGraphftpSpectra, 3, 6, 1, 1) - self.label_59 = QtGui.QLabel(self.tabgraphSpectraHeis) - self.label_59.setObjectName(_fromUtf8("label_59")) - self.gridLayout_20.addWidget(self.label_59, 4, 0, 1, 1) - spacerItem26 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_20.addItem(spacerItem26, 2, 5, 1, 1) - self.specHeisGraphPath = QtGui.QLineEdit(self.tabgraphSpectraHeis) - self.specHeisGraphPath.setObjectName(_fromUtf8("specHeisGraphPath")) - self.gridLayout_20.addWidget(self.specHeisGraphPath, 0, 1, 1, 5) - self.tabWidgetSpectraHeis.addTab(self.tabgraphSpectraHeis, _fromUtf8("")) - self.taboutputSpectraHeis = QtGui.QWidget() - self.taboutputSpectraHeis.setObjectName(_fromUtf8("taboutputSpectraHeis")) - self.gridLayout_19 = QtGui.QGridLayout(self.taboutputSpectraHeis) - self.gridLayout_19.setObjectName(_fromUtf8("gridLayout_19")) - self.label_67 = QtGui.QLabel(self.taboutputSpectraHeis) - self.label_67.setObjectName(_fromUtf8("label_67")) - self.gridLayout_19.addWidget(self.label_67, 1, 0, 1, 1) - self.label_68 = QtGui.QLabel(self.taboutputSpectraHeis) - self.label_68.setObjectName(_fromUtf8("label_68")) - self.gridLayout_19.addWidget(self.label_68, 2, 0, 1, 2) - self.label_66 = QtGui.QLabel(self.taboutputSpectraHeis) - self.label_66.setObjectName(_fromUtf8("label_66")) - self.gridLayout_19.addWidget(self.label_66, 0, 0, 1, 1) - spacerItem27 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_19.addItem(spacerItem27, 4, 0, 1, 1) - self.specHeisOutputToolPath = QtGui.QToolButton(self.taboutputSpectraHeis) - self.specHeisOutputToolPath.setObjectName(_fromUtf8("specHeisOutputToolPath")) - self.gridLayout_19.addWidget(self.specHeisOutputToolPath, 1, 4, 1, 1) - self.specHeisOutputPath = QtGui.QLineEdit(self.taboutputSpectraHeis) - self.specHeisOutputPath.setObjectName(_fromUtf8("specHeisOutputPath")) - self.gridLayout_19.addWidget(self.specHeisOutputPath, 1, 3, 1, 1) - self.specHeisOutputComdata = QtGui.QComboBox(self.taboutputSpectraHeis) - self.specHeisOutputComdata.setObjectName(_fromUtf8("specHeisOutputComdata")) - self.specHeisOutputComdata.addItem(_fromUtf8("")) - self.gridLayout_19.addWidget(self.specHeisOutputComdata, 0, 3, 1, 2) - self.label_69 = QtGui.QLabel(self.taboutputSpectraHeis) - self.label_69.setObjectName(_fromUtf8("label_69")) - self.gridLayout_19.addWidget(self.label_69, 3, 0, 1, 2) - self.specHeisOutputblocksperfile = QtGui.QLineEdit(self.taboutputSpectraHeis) - self.specHeisOutputblocksperfile.setObjectName(_fromUtf8("specHeisOutputblocksperfile")) - self.gridLayout_19.addWidget(self.specHeisOutputblocksperfile, 2, 3, 1, 1) - self.specHeisOutputMetada = QtGui.QLineEdit(self.taboutputSpectraHeis) - self.specHeisOutputMetada.setObjectName(_fromUtf8("specHeisOutputMetada")) - self.gridLayout_19.addWidget(self.specHeisOutputMetada, 3, 3, 1, 1) - self.specHeisOutputMetadaToolPath = QtGui.QToolButton(self.taboutputSpectraHeis) - self.specHeisOutputMetadaToolPath.setObjectName(_fromUtf8("specHeisOutputMetadaToolPath")) - self.gridLayout_19.addWidget(self.specHeisOutputMetadaToolPath, 3, 4, 1, 1) - self.tabWidgetSpectraHeis.addTab(self.taboutputSpectraHeis, _fromUtf8("")) - self.gridLayout_23.addWidget(self.tabWidgetSpectraHeis, 0, 0, 1, 1) - - self.tabWidgetProject.addTab(self.tabSpectraHeis, _fromUtf8("")) - - self.tabWidgetSpectraHeis.setCurrentIndex(0) - - def retranslateUi(self): - - self.specHeisGraphClear.setText(_translate("MainWindow", "Clear", None)) - self.specHeisOpOk.setText(_translate("MainWindow", "Ok", None)) - self.specHeisOpCobIncInt.setItemText(0, _translate("MainWindow", "Time Interval", None)) - self.specHeisOpCebIncoherent.setText(_translate("MainWindow", "Incoherent Intergration", None)) - - self.tabWidgetSpectraHeis.setTabText(self.tabWidgetSpectraHeis.indexOf(self.tabopSpectraHeis), _translate("MainWindow", "Operation", None)) - self.label_54.setText(_translate("MainWindow", "Prefix", None)) - self.specHeisGraphToolPath.setText(_translate("MainWindow", "...", None)) - self.label_62.setText(_translate("MainWindow", "Intensity range (dB)", None)) - self.label_63.setText(_translate("MainWindow", "Time range (hours):", None)) - self.label_64.setText(_translate("MainWindow", "Time interval:", None)) - self.label_65.setText(_translate("MainWindow", "Wr Period", None)) - self.label_60.setText(_translate("MainWindow", "Channel List:", None)) - self.label_61.setText(_translate("MainWindow", "Frequency range", None)) - self.label_56.setText(_translate("MainWindow", "Save", None)) - self.label_57.setText(_translate("MainWindow", "ftp", None)) - self.label_58.setText(_translate("MainWindow", "Spectra Plot", None)) - self.label_53.setText(_translate("MainWindow", "Path", None)) - self.label_55.setText(_translate("MainWindow", "Show", None)) - self.label_59.setText(_translate("MainWindow", "RTI Plot", None)) - - self.tabWidgetSpectraHeis.setTabText(self.tabWidgetSpectraHeis.indexOf(self.tabgraphSpectraHeis), _translate("MainWindow", "Graphics", None)) - self.label_67.setText(_translate("MainWindow", "Path:", None)) - self.label_68.setText(_translate("MainWindow", "Blocks per file:", None)) - self.label_66.setText(_translate("MainWindow", "Type:", None)) - - self.tabWidgetSpectraHeis.setTabText(self.tabWidgetSpectraHeis.indexOf(self.taboutputSpectraHeis), _translate("MainWindow", "Output", None)) - self.specHeisOutputToolPath.setText(_translate("MainWindow", "...", None)) - self.specHeisOutputComdata.setItemText(0, _translate("MainWindow", ".fits", None)) - self.label_69.setText(_translate("MainWindow", "Metadata file:", None)) - self.specHeisOutputMetadaToolPath.setText(_translate("MainWindow", "...", None)) - - self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabSpectraHeis), _translate("MainWindow", "SpectraHeis", None)) - - self.__setToolTip() - - def __setToolTip(self): - - self.specHeisOpIncoherent.setToolTip('Example: 10') - - self.specHeisGgraphChannelList.setToolTip('Example: 0,2,3') - self.specHeisGgraphXminXmax.setToolTip('Example (Hz): -1000, 1000') - self.specHeisGgraphYminYmax.setToolTip('Example (dB): 5, 35') - self.specHeisGgraphTminTmax.setToolTip('Example (hours): 0, 24') - self.specHeisGgraphTimeRange.setToolTip('Example (hours): 8') \ No newline at end of file diff --git a/schainpy/gui/viewer/windows/ui_voltage.py b/schainpy/gui/viewer/windows/ui_voltage.py deleted file mode 100644 index 4536b0f..0000000 --- a/schainpy/gui/viewer/windows/ui_voltage.py +++ /dev/null @@ -1,414 +0,0 @@ - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) - -class Ui_VoltageTab(object): - - def setupUi(self): - - self.tabVoltage = QtGui.QWidget() - self.tabVoltage.setObjectName(_fromUtf8("tabVoltage")) - - self.gridLayout_3 = QtGui.QGridLayout(self.tabVoltage) - self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) - - self.frame_4 = QtGui.QFrame(self.tabVoltage) - self.frame_4.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_4.setFrameShadow(QtGui.QFrame.Raised) - self.frame_4.setObjectName(_fromUtf8("frame_4")) - - self.gridLayout_17 = QtGui.QGridLayout(self.frame_4) - self.gridLayout_17.setObjectName(_fromUtf8("gridLayout_17")) - self.volOpOk = QtGui.QPushButton(self.frame_4) - self.volOpOk.setObjectName(_fromUtf8("volOpOk")) - self.gridLayout_17.addWidget(self.volOpOk, 0, 0, 1, 1) - self.volGraphClear = QtGui.QPushButton(self.frame_4) - self.volGraphClear.setObjectName(_fromUtf8("volGraphClear")) - self.gridLayout_17.addWidget(self.volGraphClear, 0, 1, 1, 1) - self.gridLayout_3.addWidget(self.frame_4, 1, 1, 1, 1) - - - self.tabWidgetVoltage = QtGui.QTabWidget(self.tabVoltage) - self.tabWidgetVoltage.setObjectName(_fromUtf8("tabWidgetVoltage")) - self.tabopVoltage = QtGui.QWidget() - self.tabopVoltage.setObjectName(_fromUtf8("tabopVoltage")) - self.gridLayout = QtGui.QGridLayout(self.tabopVoltage) - self.gridLayout.setObjectName(_fromUtf8("gridLayout")) - - self.volOpCebRadarfrequency = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebRadarfrequency.setObjectName(_fromUtf8("volOpCebRadarfrequency")) - self.gridLayout.addWidget(self.volOpCebRadarfrequency, 0, 0, 1, 1) - - self.volOpRadarfrequency = QtGui.QLineEdit(self.tabopVoltage) - self.volOpRadarfrequency.setObjectName(_fromUtf8("volOpRadarfrequency")) - self.gridLayout.addWidget(self.volOpRadarfrequency, 0, 1, 1, 4) - - self.volOpCebChannels = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebChannels.setObjectName(_fromUtf8("volOpCebChannels")) - self.gridLayout.addWidget(self.volOpCebChannels, 1, 0, 1, 1) - - self.volOpComChannels = QtGui.QComboBox(self.tabopVoltage) - self.volOpComChannels.setObjectName(_fromUtf8("volOpComChannels")) - self.volOpComChannels.addItem(_fromUtf8("")) - self.volOpComChannels.addItem(_fromUtf8("")) - self.gridLayout.addWidget(self.volOpComChannels, 1, 1, 1, 2) - - self.volOpChannel = QtGui.QLineEdit(self.tabopVoltage) - self.volOpChannel.setObjectName(_fromUtf8("volOpChannel")) - self.gridLayout.addWidget(self.volOpChannel, 1, 3, 1, 2) - - - self.volOpCebHeights = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebHeights.setObjectName(_fromUtf8("volOpCebHeights")) - self.gridLayout.addWidget(self.volOpCebHeights, 3, 0, 1, 1) - - self.volOpComHeights = QtGui.QComboBox(self.tabopVoltage) - self.volOpComHeights.setObjectName(_fromUtf8("volOpComHeights")) - self.volOpComHeights.addItem(_fromUtf8("")) - self.volOpComHeights.addItem(_fromUtf8("")) - self.gridLayout.addWidget(self.volOpComHeights, 3, 1, 1, 2) - - self.volOpHeights = QtGui.QLineEdit(self.tabopVoltage) - self.volOpHeights.setObjectName(_fromUtf8("volOpHeights")) - self.gridLayout.addWidget(self.volOpHeights, 3, 3, 1, 2) - - self.volOpCebSplitter = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebSplitter.setObjectName(_fromUtf8("volOpCebSplitter")) - self.gridLayout.addWidget(self.volOpCebSplitter, 5, 0, 1, 1) - - self.volOpSplitter = QtGui.QLineEdit(self.tabopVoltage) - self.volOpSplitter.setObjectName(_fromUtf8("volOpSplitter")) - self.gridLayout.addWidget(self.volOpSplitter, 5, 1, 1, 4) - - self.volOpCebProfile = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebProfile.setObjectName(_fromUtf8("volOpCebProfile")) - self.gridLayout.addWidget(self.volOpCebProfile, 6, 0, 1, 1) - - self.volOpComProfile = QtGui.QComboBox(self.tabopVoltage) - self.volOpComProfile.setObjectName(_fromUtf8("volOpComProfile")) - self.volOpComProfile.addItem(_fromUtf8("")) - self.volOpComProfile.addItem(_fromUtf8("")) - self.volOpComProfile.addItem(_fromUtf8("")) - self.gridLayout.addWidget(self.volOpComProfile, 6, 1, 1, 2) - - self.volOpProfile = QtGui.QLineEdit(self.tabopVoltage) - self.volOpProfile.setObjectName(_fromUtf8("volOpProfile")) - self.gridLayout.addWidget(self.volOpProfile, 6, 3, 1, 2) - - self.volOpCebCombiner = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebCombiner.setObjectName(_fromUtf8("volOpCebCombiner")) - self.gridLayout.addWidget(self.volOpCebCombiner, 7, 0, 1, 1) - - self.volOpCombiner = QtGui.QLineEdit(self.tabopVoltage) - self.volOpCombiner.setObjectName(_fromUtf8("volOpCombiner")) - self.gridLayout.addWidget(self.volOpCombiner, 7, 1, 1, 4) - - self.volOpCebFilter = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebFilter.setObjectName(_fromUtf8("volOpCebFilter")) - self.gridLayout.addWidget(self.volOpCebFilter, 8, 0, 1, 1) - - self.volOpFilter = QtGui.QLineEdit(self.tabopVoltage) - self.volOpFilter.setObjectName(_fromUtf8("volOpFilter")) - self.gridLayout.addWidget(self.volOpFilter, 8, 1, 1, 4) - -# spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout.addItem(spacerItem, 6, 4, 1, 1) -# spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout.addItem(spacerItem1, 8, 4, 1, 1) -# spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout.addItem(spacerItem2, 3, 4, 1, 1) - - - -# spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) -# self.gridLayout.addItem(spacerItem3, 1, 4, 1, 1) - - - self.volOpCebDecodification = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebDecodification.setObjectName(_fromUtf8("volOpCebDecodification")) - self.gridLayout.addWidget(self.volOpCebDecodification, 9, 0, 1, 1) - - self.volLabCodeMode = QtGui.QLabel(self.tabopVoltage) - self.volLabCodeMode.setObjectName(_fromUtf8("volLabCodeMode")) - self.gridLayout.addWidget(self.volLabCodeMode, 9, 1, 1, 1) - - self.volOpComMode = QtGui.QComboBox(self.tabopVoltage) - self.volOpComMode.setObjectName(_fromUtf8("volOpComMode")) - self.volOpComMode.addItem(_fromUtf8("")) - self.volOpComMode.addItem(_fromUtf8("")) - self.gridLayout.addWidget(self.volOpComMode, 9, 2, 1, 3) - - self.volLabCodeType = QtGui.QLabel(self.tabopVoltage) - self.volLabCodeType.setObjectName(_fromUtf8("volLabCodeType")) - self.gridLayout.addWidget(self.volLabCodeType, 10, 1, 1, 1) - - self.volOpComCode = QtGui.QComboBox(self.tabopVoltage) - self.volOpComCode.setObjectName(_fromUtf8("volOpComCode")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.volOpComCode.addItem(_fromUtf8("")) - self.gridLayout.addWidget(self.volOpComCode, 10, 2, 1, 3) - - self.volLabCode = QtGui.QLabel(self.tabopVoltage) - self.volLabCode.setObjectName(_fromUtf8("volLabCode")) - self.gridLayout.addWidget(self.volLabCode, 11, 1, 1, 1) - - self.volOpCode = QtGui.QLineEdit(self.tabopVoltage) - self.volOpCode.setObjectName(_fromUtf8("volOpCode")) - self.gridLayout.addWidget(self.volOpCode, 11, 2, 1, 3) - - self.volOpCebFlip = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebFlip.setObjectName(_fromUtf8("volOpCebFlip")) - self.gridLayout.addWidget(self.volOpCebFlip, 12, 0, 1, 1) - - self.volOpFlip = QtGui.QLineEdit(self.tabopVoltage) - self.volOpFlip.setObjectName(_fromUtf8("volOpFlip")) - self.gridLayout.addWidget(self.volOpFlip, 13, 1, 1, 4) - - self.volOpCebCohInt = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebCohInt.setObjectName(_fromUtf8("volOpCebCohInt")) - self.gridLayout.addWidget(self.volOpCebCohInt, 13, 0, 1, 1) - - self.volOpCohInt = QtGui.QLineEdit(self.tabopVoltage) - self.volOpCohInt.setObjectName(_fromUtf8("volOpCohInt")) - self.gridLayout.addWidget(self.volOpCohInt, 13, 1, 1, 4) - - self.volOpCebAdjustHei = QtGui.QCheckBox(self.tabopVoltage) - self.volOpCebAdjustHei.setObjectName(_fromUtf8("volOpCebAdjustHei")) - self.gridLayout.addWidget(self.volOpCebAdjustHei, 14, 0, 1, 1) - - self.volOpAdjustHei = QtGui.QLineEdit(self.tabopVoltage) - self.volOpAdjustHei.setObjectName(_fromUtf8("volOpAdjustHei")) - self.gridLayout.addWidget(self.volOpAdjustHei, 14, 1, 1, 4) - - self.tabWidgetVoltage.addTab(self.tabopVoltage, _fromUtf8("")) - - self.tabgraphVoltage = QtGui.QWidget() - self.tabgraphVoltage.setObjectName(_fromUtf8("tabgraphVoltage")) - self.gridLayout_6 = QtGui.QGridLayout(self.tabgraphVoltage) - self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6")) - spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_6.addItem(spacerItem4, 12, 3, 1, 1) - self.volGraphIntensityRange = QtGui.QLineEdit(self.tabgraphVoltage) - self.volGraphIntensityRange.setObjectName(_fromUtf8("volGraphIntensityRange")) - self.gridLayout_6.addWidget(self.volGraphIntensityRange, 9, 1, 1, 6) - self.volGraphPrefix = QtGui.QLineEdit(self.tabgraphVoltage) - self.volGraphPrefix.setObjectName(_fromUtf8("volGraphPrefix")) - self.gridLayout_6.addWidget(self.volGraphPrefix, 2, 1, 1, 6) - self.volGraphToolPath = QtGui.QToolButton(self.tabgraphVoltage) - self.volGraphToolPath.setObjectName(_fromUtf8("volGraphToolPath")) - self.gridLayout_6.addWidget(self.volGraphToolPath, 1, 5, 1, 2) - self.volGraphPath = QtGui.QLineEdit(self.tabgraphVoltage) - self.volGraphPath.setObjectName(_fromUtf8("volGraphPath")) - self.gridLayout_6.addWidget(self.volGraphPath, 1, 1, 1, 4) - self.label_14 = QtGui.QLabel(self.tabgraphVoltage) - self.label_14.setObjectName(_fromUtf8("label_14")) - self.gridLayout_6.addWidget(self.label_14, 6, 0, 1, 1) - spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_6.addItem(spacerItem5, 3, 3, 1, 1) - self.label_8 = QtGui.QLabel(self.tabgraphVoltage) - self.label_8.setObjectName(_fromUtf8("label_8")) - self.gridLayout_6.addWidget(self.label_8, 8, 0, 1, 1) - self.label_49 = QtGui.QLabel(self.tabgraphVoltage) - self.label_49.setObjectName(_fromUtf8("label_49")) - self.gridLayout_6.addWidget(self.label_49, 4, 3, 1, 1) - self.label_51 = QtGui.QLabel(self.tabgraphVoltage) - self.label_51.setObjectName(_fromUtf8("label_51")) - self.gridLayout_6.addWidget(self.label_51, 9, 0, 1, 1) - self.volGraphCebshow = QtGui.QCheckBox(self.tabgraphVoltage) - self.volGraphCebshow.setText(_fromUtf8("")) - self.volGraphCebshow.setObjectName(_fromUtf8("volGraphCebshow")) - self.gridLayout_6.addWidget(self.volGraphCebshow, 6, 3, 1, 1) - self.label_12 = QtGui.QLabel(self.tabgraphVoltage) - self.label_12.setObjectName(_fromUtf8("label_12")) - self.gridLayout_6.addWidget(self.label_12, 1, 0, 1, 1) - self.label_13 = QtGui.QLabel(self.tabgraphVoltage) - self.label_13.setObjectName(_fromUtf8("label_13")) - self.gridLayout_6.addWidget(self.label_13, 2, 0, 1, 1) - self.label_52 = QtGui.QLabel(self.tabgraphVoltage) - self.label_52.setObjectName(_fromUtf8("label_52")) - - self.gridLayout_6.addWidget(self.label_52, 11, 0, 1, 1) - spacerItem6 = QtGui.QSpacerItem(40, 12, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_6.addItem(spacerItem6, 14, 5, 1, 2) - spacerItem7 = QtGui.QSpacerItem(18, 12, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_6.addItem(spacerItem7, 14, 3, 1, 1) - - self.volLabScopeType = QtGui.QLabel(self.tabgraphVoltage) - self.volLabScopeType.setObjectName(_fromUtf8("volLabScopeType")) - self.gridLayout_6.addWidget(self.volLabScopeType, 7, 0, 1, 1) - - self.volComScopeType = QtGui.QComboBox(self.tabgraphVoltage) - self.volComScopeType.setObjectName(_fromUtf8("volComScopeType")) - self.volComScopeType.addItem(_fromUtf8("")) - self.volComScopeType.addItem(_fromUtf8("")) - self.gridLayout_6.addWidget(self.volComScopeType, 7, 1, 1, 6) - - self.volGraphChannelList = QtGui.QLineEdit(self.tabgraphVoltage) - self.volGraphChannelList.setObjectName(_fromUtf8("volGraphChannelList")) - self.gridLayout_6.addWidget(self.volGraphChannelList, 8, 1, 1, 6) - - - self.volGraphHeightrange = QtGui.QLineEdit(self.tabgraphVoltage) - self.volGraphHeightrange.setObjectName(_fromUtf8("volGraphHeightrange")) - self.gridLayout_6.addWidget(self.volGraphHeightrange, 11, 1, 1, 6) - self.label_50 = QtGui.QLabel(self.tabgraphVoltage) - self.label_50.setObjectName(_fromUtf8("label_50")) - self.gridLayout_6.addWidget(self.label_50, 4, 4, 1, 1) - self.volGraphCebSave = QtGui.QCheckBox(self.tabgraphVoltage) - self.volGraphCebSave.setText(_fromUtf8("")) - self.volGraphCebSave.setObjectName(_fromUtf8("volGraphCebSave")) - self.gridLayout_6.addWidget(self.volGraphCebSave, 6, 4, 1, 1) - self.tabWidgetVoltage.addTab(self.tabgraphVoltage, _fromUtf8("")) - - self.taboutputVoltage = QtGui.QWidget() - self.taboutputVoltage.setObjectName(_fromUtf8("taboutputVoltage")) - self.gridLayout_12 = QtGui.QGridLayout(self.taboutputVoltage) - self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12")) - self.label_36 = QtGui.QLabel(self.taboutputVoltage) - self.label_36.setObjectName(_fromUtf8("label_36")) - self.gridLayout_12.addWidget(self.label_36, 0, 0, 1, 1) - self.label_37 = QtGui.QLabel(self.taboutputVoltage) - self.label_37.setObjectName(_fromUtf8("label_37")) - self.gridLayout_12.addWidget(self.label_37, 1, 0, 1, 1) - self.volOutputPath = QtGui.QLineEdit(self.taboutputVoltage) - self.volOutputPath.setObjectName(_fromUtf8("volOutputPath")) - self.gridLayout_12.addWidget(self.volOutputPath, 1, 2, 1, 1) - self.volOutputToolPath = QtGui.QToolButton(self.taboutputVoltage) - self.volOutputToolPath.setObjectName(_fromUtf8("volOutputToolPath")) - self.gridLayout_12.addWidget(self.volOutputToolPath, 1, 3, 1, 1) - self.volOutputComData = QtGui.QComboBox(self.taboutputVoltage) - self.volOutputComData.setObjectName(_fromUtf8("volOutputComData")) - self.volOutputComData.addItem(_fromUtf8("")) - self.gridLayout_12.addWidget(self.volOutputComData, 0, 2, 1, 2) - spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_12.addItem(spacerItem8, 5, 2, 1, 1) - self.volOutputblocksperfile = QtGui.QLineEdit(self.taboutputVoltage) - self.volOutputblocksperfile.setObjectName(_fromUtf8("volOutputblocksperfile")) - self.gridLayout_12.addWidget(self.volOutputblocksperfile, 3, 2, 1, 1) - self.label_7 = QtGui.QLabel(self.taboutputVoltage) - self.label_7.setObjectName(_fromUtf8("label_7")) - self.gridLayout_12.addWidget(self.label_7, 3, 0, 1, 1) - self.label_35 = QtGui.QLabel(self.taboutputVoltage) - self.label_35.setObjectName(_fromUtf8("label_35")) - self.gridLayout_12.addWidget(self.label_35, 4, 0, 1, 1) - self.volOutputprofilesperblock = QtGui.QLineEdit(self.taboutputVoltage) - self.volOutputprofilesperblock.setObjectName(_fromUtf8("volOutputprofilesperblock")) - self.gridLayout_12.addWidget(self.volOutputprofilesperblock, 4, 2, 1, 1) - self.tabWidgetVoltage.addTab(self.taboutputVoltage, _fromUtf8("")) - self.gridLayout_3.addWidget(self.tabWidgetVoltage, 0, 1, 1, 1) - - self.tabWidgetProject.addTab(self.tabVoltage, _fromUtf8("")) - - self.tabWidgetVoltage.setCurrentIndex(0) - - def retranslateUi(self): - - self.volOpOk.setText(_translate("MainWindow", "Ok", None)) - self.volGraphClear.setText(_translate("MainWindow", "Clear", None)) - self.volOpComHeights.setItemText(0, _translate("MainWindow", "Value", None)) - self.volOpComHeights.setItemText(1, _translate("MainWindow", "Index", None)) - self.volOpComChannels.setItemText(0, _translate("MainWindow", "Value", None)) - self.volOpComChannels.setItemText(1, _translate("MainWindow", "Index", None)) - self.volOpCebProfile.setText(_translate("MainWindow", "Select Profiles", None)) - self.volOpComProfile.setItemText(0, _translate("MainWindow", "Profile List", None)) - self.volOpComProfile.setItemText(1, _translate("MainWindow", "Profile Range", None)) - self.volOpComProfile.setItemText(2, _translate("MainWindow", "List of Profile Ranges", None)) - self.volOpCebDecodification.setText(_translate("MainWindow", "Decoder:", None)) - self.volOpCebCohInt.setText(_translate("MainWindow", "Coherent Integration:", None)) - self.volOpCebFlip.setText(_translate("MainWindow", "Flip:", None)) - self.volLabCodeType.setText(_translate("MainWindow", "Code type:", None)) - self.volOpCebChannels.setText(_translate("MainWindow", "Select Channels:", None)) - self.volOpCebHeights.setText(_translate("MainWindow", "Select Heights:", None)) - self.volOpCebFilter.setText(_translate("MainWindow", "Range Window Filter:", None)) - self.volOpCebSplitter.setText(_translate("MainWindow", "Split Profiles: ", None)) - self.volOpCebCombiner.setText(_translate("MainWindow", "Combine Profiles: ", None)) - self.volOpCebRadarfrequency.setText(_translate("MainWindow", "Radar frequency (MHz):", None)) - self.volLabCodeMode.setText(_translate("MainWindow", "Mode:", None)) - self.volLabCode.setText(_translate("MainWindow", "Code:", None)) - self.volOpComCode.setItemText(0, _translate("MainWindow", "Read from header", None)) - self.volOpComCode.setItemText(1, _translate("MainWindow", "Barker 3", None)) - self.volOpComCode.setItemText(2, _translate("MainWindow", "Barker 4", None)) - self.volOpComCode.setItemText(3, _translate("MainWindow", "Barker 5", None)) - self.volOpComCode.setItemText(4, _translate("MainWindow", "Barker 7", None)) - self.volOpComCode.setItemText(5, _translate("MainWindow", "Barker 11", None)) - self.volOpComCode.setItemText(6, _translate("MainWindow", "Barker 13", None)) - self.volOpComCode.setItemText(7, _translate("MainWindow", "Barker 3 + Comp.", None)) - self.volOpComCode.setItemText(8, _translate("MainWindow", "Barker 4 + Comp.", None)) - self.volOpComCode.setItemText(9, _translate("MainWindow", "Barker 5 + Comp.", None)) - self.volOpComCode.setItemText(10, _translate("MainWindow", "Barker 7 + Comp.", None)) - self.volOpComCode.setItemText(11, _translate("MainWindow", "Barker 11+ Comp.", None)) - self.volOpComCode.setItemText(12, _translate("MainWindow", "Barker 13+ Comp.", None)) - self.volOpComCode.setItemText(13, _translate("MainWindow", "User defined", None)) - self.volOpComMode.setItemText(0, _translate("MainWindow", "Time", None)) - self.volOpComMode.setItemText(1, _translate("MainWindow", "Frequency", None)) - self.volOpCebAdjustHei.setText(_translate("MainWindow", "Calibrate H0:", None)) - - self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.tabopVoltage), _translate("MainWindow", "Operation", None)) - - self.volGraphToolPath.setText(_translate("MainWindow", "...", None)) - self.label_14.setText(_translate("MainWindow", "Scope:", None)) - self.label_8.setText(_translate("MainWindow", "Channel List:", None)) - self.label_49.setText(_translate("MainWindow", "Show:", None)) - self.label_51.setText(_translate("MainWindow", "Amplitude/Intensity:", None)) - self.label_12.setText(_translate("MainWindow", "Path :", None)) - self.label_13.setText(_translate("MainWindow", "Figure name:", None)) - self.label_52.setText(_translate("MainWindow", "Height range:", None)) - self.label_50.setText(_translate("MainWindow", "Save:", None)) - - self.volLabScopeType.setText(_translate("MainWindow", "Scope type:", None)) - self.volComScopeType.setItemText(0, _translate("MainWindow", "I&Q", None)) - self.volComScopeType.setItemText(1, _translate("MainWindow", "Power", None)) - - self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.tabgraphVoltage), _translate("MainWindow", "Graphics", None)) - - self.label_36.setText(_translate("MainWindow", "Type:", None)) - self.label_37.setText(_translate("MainWindow", "Path:", None)) - self.volOutputToolPath.setText(_translate("MainWindow", "...", None)) - self.volOutputComData.setItemText(0, _translate("MainWindow", ".rawdata", None)) - self.label_7.setText(_translate("MainWindow", "Blocks per File: ", None)) - self.label_35.setText(_translate("MainWindow", "Profiles per Block: ", None)) - self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.taboutputVoltage), _translate("MainWindow", "Output", None)) - - self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabVoltage), _translate("MainWindow", "Voltage", None)) - - self.__setToolTip() - - def __setToolTip(self): - - self.volOpChannel.setToolTip('Example: 1,2,3,4,5') - self.volOpHeights.setToolTip('Example: 90,180') - self.volOpFilter.setToolTip('Example: 2') - self.volOpProfile.setToolTip('Example:0,127') - self.volOpCohInt.setToolTip('Example: 128') - self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3') - self.volOpOk.setToolTip('If you have finished, please Ok ') - # tool tip gui volGraph - self.volGraphIntensityRange.setToolTip('Height range. Example: 50,100') - self.volGraphHeightrange.setToolTip('Amplitude. Example: 0,10000') - - \ No newline at end of file diff --git a/schainpy/model/proc/jroproc_voltage.py b/schainpy/model/proc/jroproc_voltage.py index ac33b0c..6ce7724 100644 --- a/schainpy/model/proc/jroproc_voltage.py +++ b/schainpy/model/proc/jroproc_voltage.py @@ -362,7 +362,7 @@ class deFlip(Operation): class setAttribute(Operation): ''' - Set an arbitrary attribute to dataOut + Set an arbitrary attribute(s) to dataOut ''' def __init__(self): diff --git a/schainpy/model/serializer/__init__.py b/schainpy/model/serializer/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/schainpy/model/serializer/__init__.py +++ /dev/null diff --git a/schainpy/model/serializer/data.py b/schainpy/model/serializer/data.py deleted file mode 100644 index 4c025ee..0000000 --- a/schainpy/model/serializer/data.py +++ /dev/null @@ -1,114 +0,0 @@ -''' -Created on Jul 15, 2014 - -@author: Miguel Urco -''' -from .serializer import DynamicSerializer - -DEFAULT_SERIALIZER = None #'cPickle', 'msgpack', "yaml" - -from schainpy.model.data.jrodata import * - -CLASSNAME_KEY = 'classname__' - -def isObject(myObj): - - return hasattr(myObj,'__dict__') - -def isDictFormat(thisValue): - - if type(thisValue) != type({}): - return False - - if CLASSNAME_KEY not in list(thisValue.keys()): - return False - - return True - -def obj2Dict(myObj, keyList=[]): - - if not keyList: - keyList = list(myObj.__dict__.keys()) - - myDict = {} - - myDict[CLASSNAME_KEY] = myObj.__class__.__name__ - - for thisKey, thisValue in list(myObj.__dict__.items()): - - if thisKey not in keyList: - continue - - if not isObject(thisValue): - myDict[thisKey] = thisValue - continue - - ## If this value is another class instance - myDict[thisKey] = obj2Dict(thisValue) - - return myDict - -def dict2Obj(myDict): - ''' - ''' - - if CLASSNAME_KEY not in list(myDict.keys()): - return None - - className = eval(myDict[CLASSNAME_KEY]) - - myObj = className() - - for thisKey, thisValue in list(myDict.items()): - - if thisKey == CLASSNAME_KEY: - continue - - if not isDictFormat(thisValue): - setattr(myObj, thisKey, thisValue) - continue - - myNewObj = dict2Obj(thisValue) - setattr(myObj, thisKey, myNewObj) - - return myObj - -def dict2Serial(myDict, serializer=DEFAULT_SERIALIZER): - - SERIALIZER = DynamicSerializer(serializer) - - mySerial = SERIALIZER.dumps(myDict) - - return mySerial - -def serial2Dict(mySerial, serializer=DEFAULT_SERIALIZER): - - SERIALIZER = DynamicSerializer(serializer) - - myDict = SERIALIZER.loads(mySerial) - - return myDict - -def obj2Serial(myObj, serializer=DEFAULT_SERIALIZER, **kwargs): - - SERIALIZER = DynamicSerializer(serializer) - - myDict = obj2Dict(myObj, **kwargs) - mySerial = dict2Serial(myDict, serializer) - - return mySerial - -def serial2Obj(mySerial, metadataDict = {}, serializer=DEFAULT_SERIALIZER): - - SERIALIZER = DynamicSerializer(serializer) - - myDataDict = serial2Dict(mySerial, serializer) - - if not metadataDict: - myObj = dict2Obj(myDataDict) - return myObj - - metadataDict.update(myDataDict) - myObj = dict2Obj(metadataDict) - - return myObj \ No newline at end of file diff --git a/schainpy/model/serializer/serializer.py b/schainpy/model/serializer/serializer.py deleted file mode 100644 index c5e0ffe..0000000 --- a/schainpy/model/serializer/serializer.py +++ /dev/null @@ -1,108 +0,0 @@ -''' -Created on Jul 17, 2014 - -@author: roj-idl71 -''' - -DEFAULT_SERIALIZER = None - -try: - import pickle - DEFAULT_SERIALIZER = 'cPickle' -except: - pass - -try: - import msgpack_numpy - DEFAULT_SERIALIZER = 'msgpack' -except: - pass - -# import jsonpickle -# import yaml - -class Serializer(object): - - def __init__(self): - - self.serializer = None - - def dumps(self, obj, **kwargs): - - return self.serializer.dumps(obj, **kwargs) - - def loads(self, obj, **kwargs): - return self.serializer.loads(obj, **kwargs) - -class cPickleSerializer(Serializer): - - def __init__(self): - self.serializer = cPickle - - def dumps(self, obj, **kwargs): - return self.serializer.dumps(obj, 2) - - def loads(self, obj, **kwargs): - return self.serializer.loads(obj) - -class msgpackSerializer(Serializer): - - def __init__(self): - - self.serializer = msgpack_numpy - - def dumps(self, obj, **kwargs): - return self.serializer.packb(obj) - - def loads(self, obj, **kwargs): - return self.serializer.unpackb(obj) - -# class jsonpickleSerializer(Serializer): -# -# def __init__(self): -# -# self.serializer = jsonpickle -# -# def dumps(self, obj, **kwargs): -# return self.serializer.encode(obj, **kwargs) -# -# def loads(self, obj, **kwargs): -# return self.serializer.decode(obj, **kwargs) -# -# class yamlSerializer(Serializer): -# -# def __init__(self): -# -# self.serializer = yaml -# -# def dumps(self, obj, **kwargs): -# return self.serializer.dump(obj, **kwargs) -# -# def loads(self, obj, **kwargs): -# return self.serializer.load(obj, **kwargs) - -class DynamicSerializer(Serializer): - - def __init__(self, module = None): - - if not DEFAULT_SERIALIZER: - raise ImportError("Install a python serializer like cPickle or msgpack") - - if not module: - module == DEFAULT_SERIALIZER - - if module == 'cPickle': - self.serializer = cPickleSerializer() -# -# if module == 'jsonpickle': -# self.serializer = jsonpickleSerializer() -# -# if module == 'yaml': -# self.serializer = yamlSerializer() - - if module == 'msgpack': - self.serializer = msgpackSerializer() - - -if __name__ == '__main__': - pass \ No newline at end of file diff --git a/schainpy/model/serializer/test/DynamicObject.py b/schainpy/model/serializer/test/DynamicObject.py deleted file mode 100644 index 39e4100..0000000 --- a/schainpy/model/serializer/test/DynamicObject.py +++ /dev/null @@ -1,815 +0,0 @@ -''' -The DynamicObject module supports dynamic loading of YAML -defined objects into Python class objects. Object can -be sub-classed to allow direct binding of methods having -matching signatures. - -$Id$ -''' - -import urllib.request, urllib.parse, urllib.error -import os -import re -import yaml # YAML Ain't Markup Language -import numpy as np -import copy -import inspect -import PrecisionTime -import time -import sys -import datetime -import collections - -# Replacement Loader for PyYAML to keep dictionaries in-order: -import OrderedYAML -#OrderedYAML.collections - -class Object(object): - """ Loads a YAML defined python class dynamically using the supplied URI, - which may be a file, directory, web hyper-link, or hyper-linked directory. """ - - # Dictionary containing all known Object class names and corresponding class objects - dynamicClasses = collections.OrderedDict() - - def __init__(self, object_uri=None, revision=None, recursive=False): - if isinstance(object_uri, file): - # URI is a yaml file - read it. - self.yaml = file.read() - elif object_uri == None: - self.yaml = None - elif isinstance(object_uri, str): - if object_uri.endswith('.yml'): - # URI is a web hyper-linked yaml file - read it. - self.yaml = urllib.request.urlopen(object_uri).read() - else: - # URI is a (hyper-linked?) directory - try reading it. - #print "URI is a directory." - try: - self.files = self.__parseLink(object_uri, recursive) - except IOError: - # URI is a local directory - get a list of YAML files in it - self.files = self.__getYamlFiles(object_uri, recursive) - - # For each YAML file found, create a new DynamicObject of it: - self.yaml = [] - for fn in self.files: - self.yaml.append(Object(fn)) - else: - print("Invalid URI supplied: %s"%(object_uri,)) - - def __parseLink(self, object_uri, recursive): - """ Returns a listing of all YAML files located in the - hyper-link directory given by page. """ - page = urllib.request.urlopen(object_uri).read() - #print "URI is a URL directory: %s"%(object_uri,) - pattern = re.compile(r'
') - - # List of files contained in the directory at the given URL, ignoring - # any "?" / GET query-string locations given: - files = [x[9:-2] for x in pattern.findall(page) if not x[9:-2].startswith('?')] - #print files - - yamlFiles = [] - dirs = [] - for fn in files: - if not fn.startswith('/'): # Ignore absolute paths... - path = os.path.join(object_uri, fn) - #print path - - # Keep list of YAML files found... - if fn.endswith('.yml'): - yamlFiles.append(path) - - # Keep list of directories found... - elif recursive and fn.endswith('/'): - dirs.append(path) - - if recursive: - #print dirs - for path in dirs: - yamlFiles += self.__parseLink(path,recursive) - - return yamlFiles - - def __getYamlFiles(self, local_dir, recursive): - """ Returns a listing of all YAML files located in the given - directory, recursing if requested. """ - yamlFiles = [] - dirs = [] - for fn in os.listdir(local_dir): - path = os.path.join(local_dir, fn) - - # List of YAML files found... - if fn.endswith('.yml'): - yamlFiles.append(path) - - # List of directories found... - elif recursive and os.path.isdir(path): - dirs.append(path) - - # Recurse if desired: - if recursive: - for path in dirs: - yamlFiles += self.__getYamlFiles(path,recursive) - - return yamlFiles - - def equals(self, obj, compare_time_created=True): - """ Returns True iff self has identical attributes - (numerically) to obj (no extras) """ - - if not isinstance(obj, Object): return False - - self_keys = list(self.__dict__.keys()) - obj_keys = list(obj.__dict__.keys()) - if not self_keys == obj_keys: - return False - for key in self_keys: - obj_keys.remove(key) - - self_value, obj_value = self.__dict__[key], obj.__dict__[key] - if isinstance(self_value, Object): - if not self_value.equals(obj_value, compare_time_created): - return False - elif isinstance(self_value, np.ndarray): - m1 = list(map(repr,self_value.flat)) - m2 = list(map(repr,obj_value.flat)) - ret = m1 == m2 - if not ret: - return False - else: - if not self_value == obj_value: - # Return False iff the different times are important - return key == '__time_created' and not compare_time_created - - return obj_keys == [] # no more keys --> the objects are identical - - def sizeof(self): - """ Recursively computes the size in bytes of the given Dynamic Object """ - sz = 0 - values = list(self.__dict__.values()) - for val in values: - if isinstance(val, Object): sz += val.sizeof() - elif isinstance(val, np.ndarray): sz += val.nbytes - elif hasattr(val, 'dtype') and hasattr(val.dtype, 'itemsize'): sz += val.dtype.itemsize - else: sz += sys.getsizeof(val) - return sz - - # Automatic methods for accessing meta-data - getters = ['__object_name', '__revision_number', '__revision_id', '__revision_source', '__revision_tag', '__time_created'] - def getObjectName(self): return self.__class__.meta_attributes['__object_name'] - def getRevisionNumber(self): return self.__class__.meta_attributes['__revision_number'] - def getRevisionId(self): return self.__class__.meta_attributes['__revision_id'] - def getRevisionSource(self): return self.__class__.meta_attributes['__revision_source'] - def getRevisionTag(self): return self.__class__.meta_attributes['__revision_tag'] - def getTimeCreated(self): return getattr(self, "__time_created") - - """ - __getters = [('ObjectName', getObjectName), ('RevisionNumber', getRevisionNumber), - ('RevisionId', getRevisionId), ('RevisionSource', getRevisionSource), - ('RevisionTag', getRevisionTag)] - def __repr__(self): - meta_atts = repr([(x[0], x[1](self)) for x in Object.__getters]) - atts = repr(self.__dict__) - return "Object(%s, %s)"%(atts, meta_atts) - """ - - -class SignatureException(Exception): - """ Exception thrown when a data or method signature is unknown or invalid - for a particular Object. """ - def __init__(self, value): self.value = value - def __str__(self): return repr(self.value) - -class _IDLTag(object): - """ IDLTag (aka Interface Definition Language Tag) is an abstract helper class - used by the Factory to define built-in tags used - specifically for our IDL """ - def __init__(self, yamlString): - self.yamlString = yamlString - def __repr__(self): - return self.yamlString - -class _Reference(_IDLTag): - """ Helper class for Factory: Objects can be composed - of other objects, requiring a Reference to the other object. """ - def __repr__(self): - return "Ref(%s)"%(self.yamlString,) - -class _Method(_IDLTag): - """ Helper class for Factory: Objects have methods - associated with them - this tag tells the Factory that a method - signature follows (in dict format) """ - def __repr__(self): - return "Method(%r)"%(self.yamlString,) - -class Binary(Object): - def __init__(self, binary_type, value=None): - self.binary_type = binary_type - self.value = value - -import Lookup - -class BuiltinDtype(_IDLTag): - """ Helper class for Factory: Object parameters each - have a certain data type (either dtype.xxxx for numpy compatible data - types, or one of the generic python data types (i.e. int, bool, str...) - - __addYamlConstructor in Factory registers all of the tags - listed as keys in the dtypes dictionary.""" - - def __init__(self, yamlString, tag=None): - self.tag = tag[1:] - super(BuiltinDtype, self).__init__(yamlString) - #print self.tag - try: self.dtype = Lookup.numpy_dtypes[self.tag] - except KeyError: self.dtype = Lookup.builtin_objects[self.tag] - - def __repr__(self): - return "_BuiltinType(%s,%s)"%(self.yamlString, self.tag) - -# Register hexadecimal representation of numpy dtypes in YAML - -class _Parameter: - """ Helper class for Factory: Contains the name, default - value, and length (if an array) of an object initialization parameter. """ - - def __init__(self, name, hasDefault=False, default=None, length=None, classType=None): - self.name = name - self.hasDefault = hasDefault - self.default = default - self.length = length - if isinstance(classType, None.__class__) and not isinstance(default, None.__class__): - self.classType = default.__class__ - else: - self.classType = classType - -class _UnresolvedType: - """ Used to indicate a data type which has not yet been parsed (i.e. for - recursive data-types. """ - - def __init__(self, yamlObject): - # Either the name of the class we couldn't resolve, or a dictionary - # containing the name and a default value - self.yamlObject = yamlObject - -class UnresolvedTypeException(Exception): - """ Raised when a !ref tag is used, but the reference cannot be resolved """ - pass - -def get_class(kls): - """ Returns a pointer to the class instance with the name kls - Function acquired from http://stackoverflow.com/questions/452969/ """ - parts = kls.split('.') - module = ".".join(parts[:-1]) - m = __import__( module ) - for comp in parts[1:]: - m = getattr(m, comp) - return m - -# Aliased constructor & representer adders for easily swapping between Ordered and non-Ordered: -def add_constructor(tag, constructor): - #yaml.add_constructor(tag, constructor) - OrderedYAML.Loader.add_constructor(tag, constructor) -def add_representer(cls, representer): - #yaml.add_representer(cls, representer) - OrderedYAML.Dumper.add_representer(cls, representer) - -# Implicit constructor for _Reference objects using the !ref tag: -def __ref_constructor(loader, node): - if isinstance(node, yaml.nodes.MappingNode): - return _Reference(loader.construct_mapping(node)) - else: - return _Reference(loader.construct_scalar(node)) -add_constructor('!ref', __ref_constructor) - -# Method constructor using !method tag: -def __method_constructor(loader, node): - if isinstance(node, yaml.nodes.MappingNode): - return _Method(loader.construct_mapping(node)) - else: - return _Method(loader.construct_scalar(node)) -add_constructor('!method', __method_constructor) - -# Generic constructor for any _BuiltinDtype -def __dtype_constructor(loader, node): - if isinstance(node, yaml.nodes.SequenceNode): - ret = BuiltinDtype(loader.construct_sequence(node), tag=node.tag) - elif isinstance(node, yaml.nodes.MappingNode): - ret = BuiltinDtype(loader.construct_mapping(node), tag=node.tag) - else: - ret = BuiltinDtype(loader.construct_scalar(node), tag=node.tag) - return ret - -# Register YAML constructors for each builtin type: -for dtype in list(Lookup.numpy_dtypes.keys()) + list(Lookup.builtin_objects.keys()): - add_constructor('!%s'%(dtype,), __dtype_constructor) - -class FactoryLoader(OrderedYAML.Loader): - """ A YAML Loader specifically designed to load YAML object definitions - (as opposed to actual instances of the objects) """ - - def construct_yaml_timestamp(self, node): - """ Make empty timestamps (None/null) acceptable, otherwise parse the timestamp """ - if node.value == '': - name = 'YAML_DEFN_LOADED_INCORRECTLY' # in case we forget to fix the name... - return _Parameter(name, hasDefault=False, classType=datetime.datetime) - else: - return yaml.constructor.SafeConstructor.construct_yaml_timestamp(self, node) - -# Override default timestamp constructor: -FactoryLoader.add_constructor( - 'tag:yaml.org,2002:timestamp', - FactoryLoader.construct_yaml_timestamp -) - -import DynamicYAML -class Factory: - """ Load a YAML defined python class and create a class with initialization - provided by this factory. This is intended as an abstract class to be sub-classed - to enable complex initialization on object instantiation. - - Factory subclasses should override __buildClass().""" - - def __init__(self, dynamic_object=None, yaml=None, typeCheck='strong', parse=True, revision_dict=None): - if revision_dict != None: self.revision_dict = revision_dict # Remember for when we build each individual class - else: - self.revision_dict = {\ - "__revision_number": 0, - "__revision_id": 'unknown', - "__revision_source": 'unknown', - "__revision_tag": 'unknown'} - if parse: - if dynamic_object: - self.parse(dynamic_object, typeCheck=typeCheck) - else: - dyno = Object() - dyno.yaml = yaml - self.parse(dyno, typeCheck=typeCheck) - - def parse(self, dynamic_object, typeCheck='strong'): - """ - Initializer for a Factory, converting the given dynamic_object - containing a (text) YAML object definition into the corresponding class-type - with initializer. - - typeCheck parameter can be one of 'strong' or 'cast': - 'strong': Class initializer should raise a TypeError when given - anything but the correct type - 'cast': Class initializer should attempt to cast any input to the correct type - """ - - # Remember what kind of type-checking to do: - if typeCheck not in ['strong', 'cast']: - raise Exception('Incorrect input for typeCheck: %s\nExpected "strong" or "cast"'%(typeCheck)) - self.typeCheck = typeCheck - - # Get a list of the objects to build: - if isinstance(dynamic_object.yaml, list): - objects = dynamic_object.yaml - else: - objects = [dynamic_object] - - # Generate a dictionary of classes from the DynamicObjects given: - self.classes = dict() - for obj in objects: - - # This loader breaks nothing anymore #everything currently - loader = FactoryLoader(obj.yaml) - #loader = yaml.Loader(obj.yaml) - - # Dictionary with method and data signatures for the current object: - objDefn = [] - while loader.check_data(): - objDefn.append(loader.get_data()) - loader.dispose() - - # Parse the dictionary into a class definition: - objClass = self.__buildClass(objDefn) - self.classes.update(objClass) - - def parseMethodSignature(self, sigName, methDict): - """ Returns the python method corresponding to the given signature - (given signature should be in the loaded YAML dict format. - - Override this method for recognizing complex method signatures. """ - - raise SignatureException("Object abstract base class doesn't support any method signatures.") - - def parseDataSignature(self, sigName, sig): - """ Returns the Parameter object corresponding to the given signature. - - This method should be overridden for recognizing complex data signatures - (don't forget to call super(sig) for built-in data types though!) """ - - # Is the object an array with explicit default elements?: - if isinstance(sig.yamlString, list): - #length = len(sig.yamlString) - if 'dtype' in sig.tag: - default = np.array(sig.yamlString, dtype=sig.dtype) - elif 'binary' == sig.tag: - default = Binary(sig.yamlString["type"]) - else: - default = sig.yamlString - return _Parameter(sigName, True, default, length=None) - - # Is the object an array with length and default value given?: - if isinstance(sig.yamlString, dict) and "len" in list(sig.yamlString.keys()): - length = sig.yamlString["len"] - - # Shape is given as something like [[],[]], not [2,2] - convert - if isinstance(length, list): - - def get_shape(lst): - """ Gets the shape of a list recursively filled with empty lists """ - if lst == []: return [0] - return [len(lst)] + get_shape(lst[0]) - - if len(length) > 0: - if isinstance(length[0], list): - length = get_shape(length) - else: - pass - else: - length = [0] # convert [] to [0] (numpy interprets [] as [1] for shapes) - - - if 'complex' in sig.tag: - imag = sig.yamlString["default"]["imag"] - real = sig.yamlString["default"]["real"] - default = sig.dtype(real) + sig.dtype(imag*1j) - elif 'binary' == sig.tag: - default = Binary(sig.yamlString["type"]) - else: - default = sig.dtype(sig.yamlString["default"]) - - return _Parameter(sigName, True, default, length) - - # The object is singular, with a given value: - if 'complex' in sig.tag: - imag = sig.yamlString["imag"] - real = sig.yamlString["real"] - default = sig.dtype(real) + sig.dtype(imag*1j) - return _Parameter(sigName, True, default) - elif 'binary' == sig.tag: - default = Binary(sig.yamlString["type"]) - return _Parameter(sigName, False, default, classType=Binary) - elif 'timestamp' in sig.tag: - if isinstance(sig.yamlString, dict): - if sig.tag in ['timestamp_picosecond', 'timestamp_ps']: - try: s = sig.yamlString['second'] - except KeyError: s = sig.yamlString['s'] - try: ps = sig.yamlString['picosecond'] - except KeyError: ps = sig.yamlString['ps'] - return _Parameter(sigName, True, PrecisionTime.psTime(s, ps)) - elif sig.tag in ['timestamp_nanosecond', 'timestamp_ns']: - try: s = sig.yamlString['second'] - except KeyError: s = sig.yamlString['s'] - try: ns = sig.yamlString['nanosecond'] - except KeyError: ns = sig.yamlString['ns'] - return _Parameter(sigName, True, PrecisionTime.nsTime(s, ns)) - else: - if sig.tag in ['timestamp_picosecond', 'timestamp_ps']: - return _Parameter(sigName, False, classType=PrecisionTime.psTime) - elif sig.tag in ['timestamp_nanosecond', 'timestamp_ns']: - return _Parameter(sigName, False, classType=PrecisionTime.nsTime) - else: - default = sig.dtype(sig.yamlString) - return _Parameter(sigName, True, default) # not binary - - - - def __parsePythonType(self, sigName, sig): - """ Returns a _Parameter object, similar to parseDataSignature, but - for a basic python type. """ - - if isinstance(sig, collections.OrderedDict): - default = dict(sig) # Type-check user-defined !!maps as dicts, not OrderedDicts. - else: - default = sig # The signature sig is the default value itself - return _Parameter(sigName, True, default) - - def __parseReferenceSignature(self, sigName, ref_object, objClasses): - """ Takes a reference object ref_object to be named sigName, and - produces a _Parameter object with default value of None. """ - - # List of names of classes we've created so far: - #print [x for x in objClasses] - names = list(objClasses.keys()) - - if ref_object.yamlString in names: - defaultType = objClasses[ref_object.yamlString] - return _Parameter(sigName, classType=defaultType) - else: - try: - # Try to find the class type in globals: - className = objClasses[str(ref_object.yamlString)] - defaultType = get_class(className) - except (ValueError, KeyError): - defaultType = _UnresolvedType(ref_object.yamlString) - #raise NameError("Invalid reference to module %s"%(className,)) - - return _Parameter(sigName, classType=defaultType) - - def __buildInitializer(self, className, classData): - """ Constructs the initializer for an object which expects parameters - listed in classData as input upon initialization. """ - - # Type of type-checking to use: - strong = (self.typeCheck == 'strong') - #cast = (self.typeCheck == 'cast') - - def typeCheck(param, arg): - """ - Checks to see if the type of arg matches that of the corresponding param, - casting arg to the correct type if desired. - """ - if isinstance(arg, param.classType): return arg - if isinstance(arg, np.ndarray) and arg.dtype.type == param.classType: - if not param.hasDefault: return arg - if param.default.shape == (): return arg - if param.default.shape[-1] == 0: return arg - if arg.shape == param.default.shape: return arg - if isinstance(arg, None.__class__): return arg - if strong: - raise TypeError("Incorrect input type on strong type-checking."+\ - " Expected %s - got %s"%(param.classType,arg.__class__)) - else: - # If the parameter corresponding to the given argument has a non-NoneType default - # value, then attempt to cast the argument into the correct parameter type - if param.hasDefault and param.default != None: - if isinstance(param.default, np.ndarray): - return np.array(arg, dtype=param.default.dtype) - else: - return param.default.__class__(arg) - else: - return param.classType(arg) - - """ - attributes = {"__object_name": className, - "__revision_number": self.svn_revision_number, - "__revision_id": 'unknown', - "__revision_source": 'unknown', - "__revision_tag": 'unknown'} - """ - attributes = {} # Create new attributes dict for this particular class object - attributes.update(self.revision_dict) # Revision info now passed into the factory - attributes['__object_name'] = className - - def init(_self, *args, **kwargs): - """ Dynamically generated initializer. """ - - # meta-data goes in the class, not the objects (commented the following out): - """ - # Initialize automatic class data - for attr,value in attributes.items(): - try: - value = kwargs[attr] # Are we given a value to over-ride with? - del kwargs[attr] # Ignore the meta attribute later - except KeyError: - pass - setattr(_self, attr, value) - """ - - # Set default values first (assume no parameters): - for param in classData: - if param.length: - if isinstance(param.length, int): param.length = [param.length] - default = np.empty(param.length, dtype=param.classType) - if param.hasDefault: - # Initialize array with default array value given: - flatIter = default.flat - for i in range(len(flatIter)): - flatIter[i] = copy.deepcopy(param.default) - else: - # Initialize to None if no default given: - default.fill(None) - else: - default = param.default - setattr(_self, param.name, copy.deepcopy(default)) - - # Set attributes given by standard args: - for i in range(len(args)): - arg = typeCheck(classData[i], args[i]) - setattr(_self, classData[i].name, arg) - - # Set named attributes (given by dictionary kwargs): - for key,value in list(kwargs.items()): - - try: keyIndex = [param.name for param in classData].index(key) - except ValueError: - raise TypeError("'%s' is an invalid keyword argument"%(key,)) - arg = typeCheck(classData[keyIndex],value) - #setattr(_self, key, value) - setattr(_self, key, arg) - - - # Object instantiation / creation time (if not already present): - if '__time_created' not in kwargs: - setattr(_self, "__time_created", np.float64(time.time())) - - return init, attributes - - def __findClass(self, className, localClasses): - """ Looks for the given className first in the given dictionary of localClasses - then in the global definitions, returning the corresponding class object. Raises - a KeyError if the class cannot be found. """ - - # If class definition was in the YAML file, extend that one: - if className in list(localClasses.keys()): - return localClasses[className] - - # Else try finding the class definition in our global scope: - try: classObj = get_class(className) - except KeyError: - raise KeyError("Class '%s' not found in given YAML scope or global scope."%(className,)) - return classObj - - def __buildClass(self, objDefn): - """ Takes an object definition list / dictionary objDefn (loaded from a YAML - object definition file) and creates a class, dynamically binding - method and data signatures to the new class. - - This method only performs a basic binding of method and data signatures to - the new class. Object(s) having more complex initialization requirements - should be given their own Factory subclass, overriding this - and other methods.""" - - # objDefn is a list of dictionaries found in the YAML file - build each one... - objClasses = dict() - objClassesRev = dict() - - # A list of all _Parameter objects created, used to resolve recursive - # or "tangled" data structures - allClassData = [] - - for document in objDefn: - # Each document can contain multiple objects - build each one. - # (NOTE: objects can cross reference each other in the same document - # need to resolve Reference objects as last step) - for objClassName in list(document.keys()): - - # The dictionary containing method & data signatures: - objDict = document[objClassName] - - # Extract data / attribute definitions (signatures) from the YAML dictionary - # as well as method signatures and which classes this class extends: - classData = [] - classMethods = dict() - classBases = [Object] - - # List structured documents result in a list of dicts each with one key: - if isinstance(objDict, list): keys = [list(param.keys())[0] for param in objDict] - # Otherwise the parameter names are just the keys of the dict - else: keys = list(objDict.keys()) # if key not found, raises AttributeError - - for sigName in keys: - #print sigName - sig = objDict[sigName] - #for f in _BuiltinDtype.python_dtypes: print f.__class__ - if sigName == '__extends': - if isinstance(sig, str): - sig = [sig] - if isinstance(sig, list): - for className in sig: - newBase = self.__findClass(className, objClasses) - - # Remove Object extension if newBase extends it already: - if Object in classBases and Object in inspect.getmro(newBase): - classBases.remove(Object) - classBases += [newBase] - else: - raise TypeError("Incorrect format for extending classes - %s"%(sig,)) - elif isinstance(sig, BuiltinDtype): - classData.append(self.parseDataSignature(sigName, sig)) - elif isinstance(sig, Lookup.python_dtypes): - classData.append(self.__parsePythonType(sigName, sig)) - elif isinstance(sig, _Reference): - classData.append(self.__parseReferenceSignature(sigName, sig, objClasses)) - elif isinstance(sig, _Method): - classMethods[sigName] = self.parseMethodSignature(sigName, sig.yamlString) - elif isinstance(sig, (PrecisionTime.nsTime, PrecisionTime.psTime)): - classData.append(_Parameter(sigName, True, sig)) - elif isinstance(sig, _Parameter): # sig is already a parameter (we skipped a step) - sig.name = sigName # we didn't know the name during load time - fill that in now - classData.append(sig) - else: - msg = "Factory abstract base class doesn't " +\ - "support the following signature: %r \"%s\""%(sig.__class__,str(sig)) - print(sig.__class__) - raise SignatureException(msg) - - # Built-in attribute for all Dynamic Objects: - classData.append(_Parameter('__time_created', classType=np.float64)) - - # Turn the object data / attributes into a usable __init__ method: - classMethods["__init__"], meta_attributes = self.__buildInitializer(objClassName, classData) - - # Keep a record of the _Parameters created for later type resolution - allClassData.extend(classData) - - """ - __automaticMethods = { - "getObjectName": lambda _self: getattr(_self, '__object_name'), - "getRevisionNumber": lambda _self: getattr(_self, '__revision_number'), - "getRevisionId": lambda _self: getattr(_self, '__revision_id'), - "getRevisionSource": lambda _self: getattr(_self, '__revision_source'), - "getRevisionTag": lambda _self: getattr(_self, '__revision_tag') - } - classMethods.update(__automaticMethods) - """ - - # Put the method signatures into a namespace for the new class, - # then dynamically build the class from this namespace. - classNamespace = classMethods - classNamespace["meta_attributes"] = meta_attributes - cls = type(str(objClassName), tuple(classBases), classNamespace) - objClasses[objClassName] = cls - objClassesRev['%s.%s'%(objClassName,cls.meta_attributes["__revision_number"])] = cls - - # Create and register a constructor (loading) and representer (dumping) for the new class cls - def construct_dynamic_object(loader, node): - kwargs = loader.construct_mapping(node) - # Remove revision control from loaded objects (info is in the class object!) - for arg in list(kwargs.keys()): - if arg in getattr(Object, 'getters') and arg != '__time_created': - del kwargs[arg] - return cls(**kwargs) - revision = cls.meta_attributes["__revision_number"] - DynamicYAML.Loader.add_constructor('!%s.%s'%(str(objClassName),revision), construct_dynamic_object) - - represent_dynamic_object = DynamicYAML.Dumper.represent_dynamic_object - DynamicYAML.Dumper.add_representer(cls, represent_dynamic_object) - - def findClass(className): - """ Search for the most recently added class object with given className """ - try: - return objClasses[className] # Look for reference to object in same YAML defn file: - except KeyError: - # Now look for reference to class object loaded from any YAML defn file, loading the - # most recent version / revision (number) of the definition - for dynClass in list(Object.dynamicClasses.keys())[::-1]: - if dynClass.startswith(className): - return Object.dynamicClasses[dynClass] - - # Still unresolved - raise exception: - allDynamicClasses = repr(list(objClasses.keys()) + list(Object.dynamicClasses.keys())) - raise UnresolvedTypeException("Cannot resolve type '%s': Name not found in %s"%(className,allDynamicClasses)) - - - def resolve(param): - - # Reference is just a string - that's the class name: - if isinstance(param.classType.yamlObject, str): - className = str(param.classType.yamlObject) - param.classType = findClass(className) - return - - # Reference is a dict containing class name and / or default values: - if not isinstance(param.classType.yamlObject, dict): - raise UnresolvedTypeException("Cannot resolve reference of type '%s'"%(param.classType.yamlObject.__class__,)) - - # Definitely a dict: - refDict = param.classType.yamlObject - - # Determine the name of the class being referenced - try: - className = refDict["type"] - except KeyError: - raise KeyError("No 'type' key in reference dictionary for parameter '%s'"%(param.name,)) - - # Determine the class object corresponding to the class name - param.classType = findClass(className) - - try: - defaultParams = refDict["default"] - except KeyError: - defaultParams = None - - if defaultParams != None: - for sub_param in defaultParams: - if isinstance(sub_param.classType, _UnresolvedType): - resolve(sub_param) - param.default = param.classType( **defaultParams ) # Create the default object - param.hasDefault = True - else: - param.hasDefault = False # for good measure - - # Is it an object array?: - if "len" in list(refDict.keys()): - param.length = refDict["len"] - - # Resolve any unresolved data-types: - for param in allClassData: - if isinstance(param.classType, _UnresolvedType): - resolve(param) - - Object.dynamicClasses.update(objClassesRev) - return objClasses - -def load_defn(yaml): - """ Shortcut for producing a single DynamicObject class object from - the provided yaml definition in string format """ - return list(Factory(yaml=yaml).classes.values())[0] - - diff --git a/schainpy/model/serializer/test/DynamicSerializer.py b/schainpy/model/serializer/test/DynamicSerializer.py deleted file mode 100644 index 00e4c7b..0000000 --- a/schainpy/model/serializer/test/DynamicSerializer.py +++ /dev/null @@ -1,69 +0,0 @@ -# -# rps 6/9/2014 -# mit haystack obs -# -# wrapper for Karl's code - -import DynamicObject # used for serial/deserial of complex python objects -import Serializer # used for serial/deserial of complex python - -# -class DynamicSerializer: - # - #------------------------------------------------------ - # - def __init__(self,which='yaml'): - # - # choices are: yaml, msgpack, hdf5, json - # - self.err_f = False - self.whichList = ['yaml', 'msgpack', 'hdf5', 'json'] # from Serialzer.py - self.err_f,self.serializer = self.initSerializer(which) - # - #------------------------------------------------------ - # - def initSerializer(self,which): - # - # calls REU student code that works but hasn't been walked-through - # it's a dynamic serializer not strictly a yaml serializer - # - err_f = False - match_f = False - serializer = None - ii = 0 - while ii < len(self.whichList): - if (self.whichList[ii] == which): - match_f = True - break - ii = ii + 1 - # end while - if not match_f: - err_f = True - else: - serializer = which - serializer = Serializer.serializers[serializer]() - - return err_f,serializer - # end initSerializer - # - # -------------------------------------------------- - # - def loads(self,element): # borrows name from json module (json - to - python) - retval = self.serializer.fromSerial(element) # de-serialize - return retval - # end loads - # - # -------------------------------------------------- - # - def dumps(self,element): # borrows name from json module (python - to - json) - retval = self.serializer.toSerial(element) # serialize - return retval - # end dumps - # - # -------------------------------------------------- - # -# end class DynamicSerializer - -if __name__ == "__main__": - DynamicSerializer() - print("DynamicSerializer ran") \ No newline at end of file diff --git a/schainpy/model/serializer/test/DynamicYAML.py b/schainpy/model/serializer/test/DynamicYAML.py deleted file mode 100644 index 508ef55..0000000 --- a/schainpy/model/serializer/test/DynamicYAML.py +++ /dev/null @@ -1,220 +0,0 @@ -''' -Module containing YAML Loader and Dumper for DynamicObjects -as well as built-in data types (numpy, PrecisionTime, datetime, Binary, ...) - -$Id$ -''' - -import yaml -import OrderedYAML -import DynamicObject -import binascii -import numpy as np -import PrecisionTime -import Lookup -import pysvn - -def load_defn(source, rev='head', repo=""): - """ Import YAML definition(s) from given 'source' SVN location - with specific revision number 'rev'. Returns a dict of the object - names -> class object instances. - - NOTE: Object defns with same name & revision number will conflict / - cause issues (regardless of svn location). """ - client = pysvn.Client() - - if rev == 'head': - #yaml = client.cat(source) - rev = client.info(repo).revision.number - - if source.startswith('http'): - yaml = client.cat("%s?p=%d"%(source, rev)) - else: - pysvn_rev = pysvn.Revision(pysvn.opt_revision_kind.number, rev) - yaml = client.cat(source, pysvn_rev) - - revision_dict = {\ - "__revision_number": rev, - "__revision_id": 'unknown', - "__revision_source": source, - "__revision_tag": 'unknown'} - - return DynamicObject.Factory(yaml=yaml, revision_dict=revision_dict).classes - -class Loader(OrderedYAML.Loader): - - def __init__(self, stream): - OrderedYAML.Loader.__init__(self, stream) - - def construct_object(self, node, deep=False): - """ Unresolved tags on mapping nodes come from un-imported YAML definitions - import it """ - resolved = node.tag in self.yaml_constructors - resolved = resolved or any([node.tag.startswith(x) for x in self.yaml_multi_constructors]) - if isinstance(node, yaml.nodes.MappingNode) and not resolved: - data = self.construct_mapping(self, node) - self.constructed_objects[node] = data - del self.recursive_objects[node] - if '__revision_source' in data: - # TODO: Handle password authentication - client = pysvn.Client() - source = data['__revision_source'] - if source.startswith('http'): - rev = data['__revision_number'] - defn = client.cat("%s?p=%d"%(source, rev)) - else: - rev = pysvn.Revision(pysvn.opt_revision_kind.number, data['__revision_number']) - defn = client.cat(source, revision=rev) - DynamicObject.Factory(yaml=defn) # Register the object - - constructor = self.yaml_constructors["%s.%s"%(data['__revision_name'], data['__revision_number'])] - return constructor(node) - else: - raise Exception("Cannot load object with tag '%s' - cannot find YAML object definition (no __revision_source included)") - else: - return yaml.Loader.construct_object(self, node, deep=deep) - -class Dumper(OrderedYAML.Dumper): - - def __init__(self, stream, *args, **kwargs): - OrderedYAML.Dumper.__init__(self, stream, *args, **kwargs) - - def represent_dynamic_object(self, obj): - """ - Override the !!python/object:__main__.xxx syntax with - !ObjectName.zzz where zzz is the revision number of the Object obj - """ - - state = {} - state.update(list(obj.__dict__.items())) - state.update(list(obj.__class__.meta_attributes.items())) - name = obj.getObjectName() # obj.__class__.__name__ - revision = obj.getRevisionNumber() - return self.represent_mapping('!%s.%s' % (name, revision), state) - -# Dtypes to be stored as hex in YAML streams / strings -hex_dtypes = ['float', 'complex', 'half', 'single', 'double'] - -# Register hex constructors for the numpy / built-in dtypes: -dtypes = Lookup.numpy_dtypes - -# Inverse lookup for accessing tags given a class instance: -cls_dtypes = dict([(v,k) for (k,v) in list(dtypes.items())]) - -# Representer for numpy arrays: -def ndarray_representer(dumper, obj): - #if isinstance(obj, np.ndarray): - tag = 'dtype.'+obj.dtype.type.__name__ - hexlify = any([x in tag for x in hex_dtypes]) - np_ary = obj - #hex_ary = np.empty(np_ary.shape, dtype=yaml.nodes.ScalarNode) - np_flat, hex_flat = np_ary.flat, [] #hex_ary.flat - hex_flat.append(dumper.represent_sequence('tag:yaml.org,2002:seq', list(np_ary.shape), flow_style=True)) - if hexlify: - lst = [] - for i in range(len(np_flat)): - value = '%s'%(np_flat[i],) - node = dumper.represent_scalar('tag:yaml.org,2002:str', value, style='') - lst.append(node) - hex_flat.append(yaml.nodes.SequenceNode('tag:yaml.org,2002:seq', lst, flow_style=True)) - lst = [] - for i in range(len(np_flat)): - if hexlify: value = '%s'%(binascii.hexlify(np_flat[i]),) - else: value = '%s'%(np_flat[i],) - node = dumper.represent_scalar('tag:yaml.org,2002:str', value, style='') - if hexlify: lst.append(node) - else: hex_flat.append(node) - if hexlify: hex_flat.append(yaml.nodes.SequenceNode('tag:yaml.org,2002:seq', lst, flow_style=True)) - return yaml.nodes.SequenceNode('!%s'%(tag,), hex_flat, flow_style=True) -Dumper.add_representer(np.ndarray, ndarray_representer) - -# Constructor for ndarrays with arbitrary (specified) dtype: -def ndarray_constructor(loader, node, dtype, hexlify=False): - shape = loader.construct_sequence(node.value.pop(0)) - np_ary = np.empty(shape, dtype=dtype) - np_flat = np_ary.flat # Flat iterator - if hexlify: - node.value[1].tag = node.tag - node = node.value[1] # only look at hexlified values - for i in range(len(node.value)): - # Over-ride the 'tag:yaml.org,2002:str' tag with correct data type - node.value[i].tag = node.tag - value = loader.construct_object(node.value[i]) - #if hexlify: - # value = binascii.unhexlify(value) - # value = np.frombuffer(value, dtype=dtype) - np_flat[i] = value - return np_ary - -class __dtype_con: - - def __init__(self, tag): - # Whether or not to convert to hex: - hexlify = any([x in tag for x in hex_dtypes]) - dtype = dtypes[tag] - - # Mutable list containing constructor & representer info - self.fncn_attributes = [tag, hexlify, dtype] - - def dtype_constructor(loader, node): - tag, hexlify, dtype = self.fncn_attributes - if isinstance(node, yaml.nodes.SequenceNode): - return ndarray_constructor(loader, node, dtype, hexlify=hexlify) - else: # isinstance(node, yaml.nodes.ScalarNode): - value = loader.construct_scalar(node) - dtype = dtypes[node.tag[1:]] - if hexlify: - value = binascii.unhexlify(value) - value = np.frombuffer(value, dtype=dtype)[0] - else: - value = dtype(value) - return value - - def dtype_representer(dumper, obj): - tag, hexlify, dtype = self.fncn_attributes - if isinstance(obj, float): obj = np.float64(obj) - if hexlify: value = '%s'%(binascii.hexlify(obj),) - else: value = '%s'%(obj,) - try: tag = '!%s'%(cls_dtypes[obj.__class__]) # 'dtype.'+obj.__class__.__name__ # bullshit... - except KeyError: tag = '' - node = dumper.represent_scalar(tag, value, style='') - return node - - self.dtype_constructor = dtype_constructor - self.dtype_representer = dtype_representer - -keys = [x for x in list(dtypes.keys()) if x != 'dtype.int' and x != 'dtype.bool'] -print(keys) - -n = len(keys) -print(n) -i=0 - -for tag in keys: - dtype = __dtype_con(tag) - dtype_constructor = dtype.dtype_constructor - dtype_representer = dtype.dtype_representer - Loader.add_constructor('!%s'%(tag,), dtype_constructor) - Dumper.add_representer(dtypes[tag], dtype_representer) - -# Precision time constructors & representers: -def ns_rep(dumper, obj): - state = {'second': obj.__dict__['second'], 'nanosecond': obj.__dict__['nanosecond']} - return dumper.represent_mapping('!timestamp_ns', state) -def ps_rep(dumper, obj): - state = {'second': obj.__dict__['second'], 'picosecond': obj.__dict__['picosecond']} - return dumper.represent_mapping('!timestamp_ps', state) -def ns_con(loader, node): return PrecisionTime.nsTime(**loader.construct_mapping(node)) -def ps_con(loader, node): return PrecisionTime.psTime(**loader.construct_mapping(node)) - -Dumper.add_representer(PrecisionTime.nsTime, ns_rep) -Dumper.add_representer(PrecisionTime.psTime, ps_rep) -Loader.add_constructor('!timestamp_ns', ns_con) -Loader.add_constructor('!timestamp_nanosecond', ns_con) -Loader.add_constructor('!timestamp_ps', ps_con) -Loader.add_constructor('!timestamp_picosecond', ps_con) - -# Binary object constructor & representer: -def bin_rep(dumper, obj): return dumper.represent_mapping('!binary', obj.__dict__) -def bin_con(loader, node): return DynamicObject.Binary(**loader.construct_mapping(node)) -Dumper.add_representer(DynamicObject.Binary, bin_rep) -Loader.add_constructor('!binary', bin_con) diff --git a/schainpy/model/serializer/test/Lookup.py b/schainpy/model/serializer/test/Lookup.py deleted file mode 100644 index 9a5040e..0000000 --- a/schainpy/model/serializer/test/Lookup.py +++ /dev/null @@ -1,61 +0,0 @@ -''' -Helper module for DynamicObject module - contains dictionaries -of data types built-in to our YAML IDL, converting backing and forth between -strings / YAML tags and python class instances. - -$Id$ -''' - -import datetime -import numpy as np -import PrecisionTime -import DynamicObject -Binary = DynamicObject.Binary -import platform -import collections - -# Implicit Types: -python_dtypes = tuple([bool,int,int,float,str,datetime.datetime,list, - set,dict,tuple,str]) - -# Numpy Data-types: -numpy_dtypes = {'dtype.bool': bool, 'dtype.int': np.int, 'dtype.int8': np.int8, - 'dtype.int16': np.int16, 'dtype.int32': np.int32, 'dtype.int64': np.int64, - 'dtype.uint8': np.uint8, 'dtype.uint16': np.uint16, 'dtype.uint32': np.uint32, - 'dtype.uint64': np.uint64, 'dtype.float': np.float, 'dtype.float16': np.float16, - 'dtype.float32': np.float32, 'dtype.float64': np.float64, 'dtype.complex': np.complex, - 'dtype.complex64': np.complex64, 'dtype.complex128': np.complex128, - 'dtype.byte': np.byte, 'dtype.short': np.short, 'dtype.intc': np.intc, - 'dtype.longlong': np.longlong, 'dtype.intp': np.intp, 'dtype.ubyte': np.ubyte, - 'dtype.ushort': np.ushort, 'dtype.uintc': np.uintc, 'dtype.uint': np.uint, - 'dtype.uintc': np.uintc, 'dtype.uint': np.uint, 'dtype.ulonglong': np.ulonglong, - 'dtype.uintp': np.uintp, 'dtype.half': np.half, 'dtype.single': np.single, - 'dtype.double': np.double, 'dtype.longfloat': np.longfloat, - 'dtype.csingle': np.csingle, 'dtype.clongfloat': np.clongfloat, 'dtype.long': np.long} - -if platform.architecture()[0] != '32bit': # 64bit - certain numpy types exist - numpy_dtypes.update({'dtype.float128': np.float128, 'dtype.complex256': np.complex256}) - bit32 = False -else: - bit32 = True -#else: # 32 bit - fix 32 bit integer issue. -# np.int32 = np.int -# bit32 = True - -# Built-in objects: -builtin_objects = {'binary': Binary, 'nsTime': PrecisionTime.nsTime, 'psTime': PrecisionTime.psTime, - 'timestamp_ns': PrecisionTime.nsTime, 'timestamp_ps': PrecisionTime.psTime, - 'timestamp_nanosecond': PrecisionTime.nsTime, 'timestamp_picosecond': PrecisionTime.psTime, - 'datetime': datetime.datetime, 'Binary': Binary} - -builtin_objects_simple = {'nsTime': PrecisionTime.nsTime, 'psTime': PrecisionTime.psTime, - 'binary': Binary, 'datetime': datetime.datetime, - 'Binary': Binary} - -# Inverse lookup for accessing tags given a class instance: -cls_dtypes = dict([(v,k) for (k,v) in list(numpy_dtypes.items())]) -obj_dtypes = dict([(v,k) for (k,v) in list(builtin_objects_simple.items())]) - -# Pointer to the list of all Object classes created, as located in the Object module / class: -dynamicClasses = DynamicObject.Object.dynamicClasses - diff --git a/schainpy/model/serializer/test/OrderedYAML.py b/schainpy/model/serializer/test/OrderedYAML.py deleted file mode 100644 index 711fd4f..0000000 --- a/schainpy/model/serializer/test/OrderedYAML.py +++ /dev/null @@ -1,89 +0,0 @@ -''' -A YAML Loader and Dumper which provide ordered dictionaries in place -of dictionaries (to keep the order of attributes as -found in the original YAML object file). - -This module is modified from a submission on pyyaml.org: -http://pyyaml.org/attachment/ticket/161/use_ordered_dict.py - -$Id$ -''' - -import yaml -import collections - -class Loader(yaml.loader.Loader): - """ YAML Loader producing OrderedDicts in place of dicts """ - - def __init__(self, stream): - yaml.loader.Loader.__init__(self, stream) - - def construct_ordered_mapping(self, node, deep=False): - """ Replacement mapping constructor producing an OrderedDict """ - if not isinstance(node, yaml.MappingNode): - raise yaml.constructor.ConstructorError(None, None, - "expected a mapping node, but found %s" % node.id, - node.start_mark) - mapping = collections.OrderedDict() - for key_node, value_node in node.value: - key = self.construct_object(key_node, deep=deep) - if not isinstance(key, collections.Hashable): - raise yaml.constructor.ConstructorError("while constructing a mapping", node.start_mark, - "found unhashable key", key_node.start_mark) - value = self.construct_object(value_node, deep=deep) - mapping[key] = value - return mapping - # yaml.constructor.BaseConstructor.construct_mapping = construct_ordered_mapping - - def construct_mapping(self, node, deep=False): - return self.construct_ordered_mapping(node, deep=deep) - - def construct_yaml_map_with_ordered_dict(self, node): - data = collections.OrderedDict() - yield data - value = self.construct_mapping(node) - data.update(value) - -class Dumper(yaml.dumper.Dumper): - """ YAML Dumper producing documents from OrderedDicts """ - - def __init__(self, stream, *args, **kwargs): - yaml.dumper.Dumper.__init__(self, stream, *args, **kwargs) - - def represent_ordered_mapping(self, tag, mapping, flow_style=None): - """ Replacement mapping representer for OrderedDicts """ - value = [] - node = yaml.MappingNode(tag, value, flow_style=flow_style) - if self.alias_key is not None: - self.represented_objects[self.alias_key] = node - best_style = True - if hasattr(mapping, 'items'): - mapping = list(mapping.items()) - for item_key, item_value in mapping: - node_key = self.represent_data(item_key) - node_value = self.represent_data(item_value) - if not (isinstance(node_key, yaml.ScalarNode) and not node_key.style): - best_style = False - if not (isinstance(node_value, yaml.ScalarNode) and not node_value.style): - best_style = False - value.append((node_key, node_value)) - if flow_style is None: - if self.default_flow_style is not None: - node.flow_style = self.default_flow_style - else: - node.flow_style = best_style - return node - # yaml.representer.BaseRepresenter.represent_mapping = represent_ordered_mapping - - def represent_mapping(self, tag, mapping, flow_style=None): - return self.represent_ordered_mapping(tag, mapping, flow_style=flow_style) - -# Loader.add_constructor( -# u'tag:yaml.org,2002:map', -# Loader.construct_yaml_map_with_ordered_dict -# ) -# -# Dumper.add_representer( -# collections.OrderedDict, -# yaml.representer.SafeRepresenter.represent_dict -# ) diff --git a/schainpy/model/serializer/test/PrecisionTime.py b/schainpy/model/serializer/test/PrecisionTime.py deleted file mode 100644 index 7db41e5..0000000 --- a/schainpy/model/serializer/test/PrecisionTime.py +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/local/midas/bin/python - -"""PrecisionTime.py is a collection of python classes to manipulate times with high -precision using integer logic. - -Written by "Bill Rideout":mailto:wrideout@haystack.mit.edu May 24, 2007 - -$Id$ -""" -import types - -class nsTime: - """nsTime is a class to handle times given as UT second (integer) and nanosecond (integer) - - If nanosecond > 1E9, seconds will be added to second - """ - - def __init__(self, second, nanosecond): - self.second = int(second) - if self.second < 0: - raise ValueError('seconds must be greater than 0, not %i' % (self.second)) - nanosecond = int(nanosecond) - if nanosecond < 0: - raise ValueError('nanoseconds must be greater 0, not %i' % (nanosecond)) - addSec = nanosecond / 1000000000 - if addSec > 0: - self.second += addSec - self.nanosecond = nanosecond % 1000000000 - self.totalNS = int(self.nanosecond) + int(self.second) * 1000000000 - - - def __add__(self, other): - """__add__ another nsTime to this one and return a new one as result - """ - nsResult = self.nanosecond + other.nanosecond - addSec = int(nsResult / 1000000000) - newSec = self.second + other.second + addSec - newNS = nsResult % 1000000000 - return(nsTime(newSec, newNS)) - - - def increase(self, other): - """increase adds other to self, changing self (rather than creating a new object) - """ - nsResult = self.nanosecond + other.nanosecond - addSec = int(nsResult / 1000000000) - self.second = self.second + other.second + addSec - self.nanosecond = nsResult % 1000000000 - self.totalNS = int(self.nanosecond) + int(self.second) * 1000000000 - - - def __sub__(self, other): - """__sub__ another nsTime from this one and return a new one as result - """ - nsResult = self.nanosecond - other.nanosecond - if nsResult < 0: - addSec = 1 - nsResult += 1000000000 - else: - addSec = 0 - newSec = (self.second - other.second) - addSec - return(nsTime(newSec, nsResult)) - - - def multiply(self, factor): - """multiply this nsTime times an integer - """ - if type(factor) not in (int, int): - raise ValueError('Illegal type %s passed into nsTime.multiply' % (str(type(factor)))) - newTotalNS = self.totalNS * factor - newSeconds = int(newTotalNS / 1000000000) - newNanoseconds = int(newTotalNS - (newSeconds * 1000000000)) - return(nsTime(newSeconds, newNanoseconds)) - - - def integerDivision(self, other): - """integerDivision returns the total number of other nsTimes that fit in self - """ - return(int(self.totalNS / other.totalNS)) - - def getUnixTime(self): - """ getUnixTime() returns a Unix style time as a float. """ - return(float(self.second) + float(self.nanosecond)/1.0e9) - - def __mod__(self, other): - """__mod__ implements self % other. - """ - if type(other) in (int, int): - return self.totalNS % other - else: - return self.totalNS % other.totalNS - - def __eq__(self, other): - """ equality of two nsTime objects """ - if not (hasattr(other, 'second') and hasattr(other, 'nanosecond')): return False - return self.__cmp__(other) == 0 - - def __cmp__(self, other): - """compare two nsTime objects - """ - result = cmp(self.second, other.second) - if result != 0: - return(result) - - return(cmp(self.nanosecond, other.nanosecond)) - - - def __str__(self): - return '%d.%09d' % (self.second, self.nanosecond) - - -class psTime: - """psTime is a class to handle times given as UT second (integer) and picosecond (integer) - - If picosecond > 1E12, seconds will be added to second - """ - - def __init__(self, second, picosecond): - self.second = int(second) - if self.second < 0: - raise ValueError('seconds must be greater than 0, not %i' % (self.second)) - picosecond = int(picosecond) - if picosecond < 0: - raise ValueError('picoseconds must be greater 0, not %i' % (picosecond)) - addSec = picosecond / 1000000000000 - if addSec > 0: - self.second += addSec - self.picosecond = picosecond % 1000000000000 - self.totalPS = int(self.picosecond) + int(self.second) * 1000000000000 - - - def __add__(self, other): - """__add__ another psTime to this one and return a new one as result - """ - psResult = self.picosecond + other.picosecond - addSec = int(psResult / 1000000000000) - newSec = self.second + other.second + addSec - newPS = psResult % 1000000000000 - return(psTime(newSec, newPS)) - - - def increase(self, other): - """increase adds other to self, changing self (rather than creating a new object) - """ - psResult = self.picosecond + other.picosecond - addSec = int(psResult / 1000000000000) - self.second = self.second + other.second + addSec - self.picosecond = psResult % 1000000000000 - self.totalPS = int(self.picosecond) + int(self.second) * 1000000000000 - - - def __sub__(self, other): - """__sub__ another psTime from this one and return a new one as result - """ - psResult = self.picosecond - other.picosecond - if psResult < 0: - addSec = 1 - psResult += 1000000000000 - else: - addSec = 0 - newSec = (self.second - other.second) - addSec - return(psTime(newSec, psResult)) - - - def multiply(self, factor): - """multiply this psTime times an integer - """ - if type(factor) not in (int, int): - raise ValueError('Illegal type %s passed into psTime.multiply' % (str(type(factor)))) - newTotalPS = self.totalPS * factor - newSeconds = int(newTotalPS / 1000000000000) - newPicoseconds = int(newTotalPS - (newSeconds * 1000000000000)) - return(psTime(newSeconds, newPicoseconds)) - - - def integerDivision(self, other): - """integerDivision returns the total number of other psTimes that fit in self - """ - return(int(self.totalPS / other.totalPS)) - - def getUnixTime(self): - """ getUnixTime() returns a Unix style time as a float. """ - return(float(self.second) + float(self.picosecond)/1.0e12) - - def __mod__(self, other): - """__mod__ implements self % other. - """ - if type(other) in (int, int): - return self.totalPS % other - else: - return self.totalPS % other.totalPS - - def __eq__(self, other): - """ equality of two psTime objects """ - if not (hasattr(other, 'second') and hasattr(other, 'picosecond')): return False - return self.__cmp__(other) == 0 - - def __cmp__(self, other): - """compare two psTime objects - """ - result = cmp(self.second, other.second) - if result != 0: - return(result) - - return(cmp(self.picosecond, other.picosecond)) - - - def __str__(self): - return '%d.%12d' % (self.second, self.picosecond) - diff --git a/schainpy/model/serializer/test/Serializer.py b/schainpy/model/serializer/test/Serializer.py deleted file mode 100644 index 53fee8f..0000000 --- a/schainpy/model/serializer/test/Serializer.py +++ /dev/null @@ -1,372 +0,0 @@ -''' -Module containing classes with serialization and de-serialization services. - -$Id$ -''' - -import Lookup -import numpy as np -import zlib -import binascii -import yaml -import DynamicObject -import DynamicYAML -import PrecisionTime -import datetime -import re -import os -#import json -import jsonpickle -import jpickle -import h5py -import msgpack - -class CompressionException(Exception): pass - -class Serializer: - """ Base class for pickle-like serialization - of DynamicObjects (with compression available) """ - - def __init__(self): - pass - - def dump(self, obj, file_name, compression=None): - """ Dumps obj to file_name, serializing the obj with toSerial() """ - string = self.dumps(obj, compression) - open(file_name, 'w').write(string) - - def dumps(self, obj, compression=None): - """ Returns serialized string representing obj, using toSerial() to serialize """ - if compression == 'gzip': - return zlib.compress(self.toSerial(obj)) - elif compression in [None, '']: - return self.toSerial(obj) - else: - raise CompressionException("Invalid decompression type '%r'"%(compression,)) - - def load(self, file_name, compression=None): - """ Returns the Object located in file_name, using fromSerial() to deserialize """ - string = open(file_name, 'r').read() - return self.loads(string, compression) - - def loads(self, string, compression=None): - """ Returns the Object serialized as the given string """ - if compression == 'gzip': - return self.fromSerial(zlib.decompress(string)) - elif compression in [None, '']: - return self.fromSerial(string) - else: - raise CompressionException("Invalid compression type '%r'"%(compression,)) - - def fromSerial(self, string): - """ Deserializes the given string """ - return string - - def toSerial(self, obj): - """ Serializes the given object """ - return repr(obj) - -class YAMLSerializer(Serializer): - """ Serializes a Object to/from YAML format """ - - def __init__(self): - Serializer.__init__(self) - - def fromSerial(self, string): - loader = DynamicYAML.Loader - return yaml.load(string, Loader=loader) - - def toSerial(self, obj): - dumper = DynamicYAML.Dumper - return yaml.dump(obj, Dumper=dumper) - -# Regular expression taken from yaml.constructor.py -timestamp_regexp_str = str(\ - r'^(?P[0-9][0-9][0-9][0-9])' - r'-(?P[0-9][0-9]?)' - r'-(?P[0-9][0-9]?)' - r'(?:(?:[Tt]|[ \t]+)' - r'(?P[0-9][0-9]?)' - r':(?P[0-9][0-9])' - r':(?P[0-9][0-9])' - r'(?:\.(?P[0-9]*))?' - r'(?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?)' - r'(?::(?P[0-9][0-9]))?))?)?$') -timestamp_regexp = re.compile(timestamp_regexp_str, re.X) - -def construct_timestamp(value): - """ Taken & modified from yaml.constructor.py """ - - match = timestamp_regexp.match(value) - #print "&%s&"%(value,) - #print timestamp_regexp_str - values = match.groupdict() - year = int(values['year']) - month = int(values['month']) - day = int(values['day']) - if not values['hour']: - return datetime.date(year, month, day) - hour = int(values['hour']) - minute = int(values['minute']) - second = int(values['second']) - fraction = 0 - if values['fraction']: - fraction = values['fraction'][:6] - while len(fraction) < 6: - fraction += '0' - fraction = int(fraction) - delta = None - if values['tz_sign']: - tz_hour = int(values['tz_hour']) - tz_minute = int(values['tz_minute'] or 0) - delta = datetime.timedelta(hours=tz_hour, minutes=tz_minute) - if values['tz_sign'] == '-': - delta = -delta - data = datetime.datetime(year, month, day, hour, minute, second, fraction) - if delta: - data -= delta - return data - -class MessagePackSerializer(Serializer): - """ Serializes a Object to/from MessagePack format """ - - def __fromSerial(self, msg_dict): - if not isinstance(msg_dict, (dict, list, tuple)): - return msg_dict # msg_dict is a value - return it - if isinstance(msg_dict, dict) and '__meta_attributes' in msg_dict: - meta_attr = msg_dict['__meta_attributes'] - msg_dict.pop('__meta_attributes') - if 'type' in meta_attr: - if meta_attr['type'] == 'datetime': - return construct_timestamp(str(msg_dict['ts'])) - elif meta_attr['type'] == 'nsTime': - msg_dict.pop('totalNS') - elif meta_attr['type'] == 'psTime': - msg_dict.pop('totalPS') - try: dtype = Lookup.cls_dtypes[meta_attr['type']] - except KeyError: dtype = Lookup.builtin_objects[meta_attr['type']] - return dtype(**msg_dict) - else: - for key in list(msg_dict.keys()): - msg_dict[key] = self.__fromSerial(msg_dict[key]) - cls = Lookup.dynamicClasses['%s.%s'%(meta_attr['__object_name'],meta_attr['__revision_number'])] - return cls(**msg_dict) - elif msg_dict == (): - return [] - elif isinstance(msg_dict[0], str) and msg_dict[1] in Lookup.numpy_dtypes and\ - isinstance(msg_dict, tuple) and len(msg_dict) == 2: - value = binascii.unhexlify(msg_dict[0]) - return np.frombuffer(value, dtype=Lookup.numpy_dtypes[msg_dict[1]])[0] - - tup = isinstance(msg_dict, tuple) - if tup and len(msg_dict) > 1 and msg_dict[0] in list(Lookup.numpy_dtypes.keys()): - msg_flat = list(msg_dict) - dtypeName = msg_flat.pop(0) - dtype = Lookup.numpy_dtypes[dtypeName] - shape = msg_flat.pop(0) - obj = np.empty(shape, dtype=dtype) - np_flat = obj.flat - for i in range(len(np_flat)): - if isinstance(msg_flat[i], float): - value = msg_flat[i] - else: - value = self.__fromSerial((msg_flat[i], dtypeName)) - np_flat[i] = value - return obj - else: - return msg_dict - - def fromSerial(self, string): - msg_dict = msgpack.unpackb(string) - return self.__fromSerial(msg_dict) - - def __toSerial(self, obj): - - if isinstance(obj, (PrecisionTime.nsTime, PrecisionTime.psTime, DynamicObject.Binary, datetime.datetime)): - msg_dict = {} - if isinstance(obj, datetime.datetime): - msg_dict['ts'] = obj.isoformat(' ') - else: - msg_dict.update(obj.__dict__) - msg_dict['__meta_attributes'] = {'type': obj.__class__.__name__} - return msg_dict - elif isinstance(obj, DynamicObject.Object): - msg_dict = {} - for key, value in list(obj.__dict__.items()): - msg_dict[key] = self.__toSerial(value) - - msg_dict['__meta_attributes'] = obj.__class__.meta_attributes - return msg_dict - elif isinstance(obj, np.ndarray): - np_flat = obj.flat - msg_flat = [] - msg_flat.append(Lookup.cls_dtypes[obj.dtype.type]) # dtype is first element - msg_flat.append(obj.shape) # shape of array is second element - for i in range(len(np_flat)): - toSer = self.__toSerial(np_flat[i]) - if isinstance(toSer, tuple): - msg_flat.append(toSer[0]) - else: - msg_flat.append(toSer) - return list(msg_flat) - - is_builtin = obj.__class__ in list(Lookup.numpy_dtypes.values()) - #is_python = isinstance(obj, Lookup.python_dtypes) - if is_builtin: # and not is_python: - try: - #print obj.__class__ - msg_dict = (binascii.hexlify(obj), Lookup.cls_dtypes[obj.__class__]) - return msg_dict - except TypeError: # numpy dtype is a built-in python type... force the hexlify: - if not Lookup.bit32: - if obj.__class__ == int: return (binascii.hexlify(np.int64(obj)), 'dtype.int64') - elif obj.__class__ == float: return (binascii.hexlify(np.float64(obj)), 'dtype.float64') - else: - #print np.int32(obj).__class__, obj.__class__ - if obj.__class__ == int: return (binascii.hexlify(np.int32(obj)), 'dtype.int32') - elif obj.__class__ == float: return (binascii.hexlify(np.float32(obj)), 'dtype.float32') - raise - else: - return obj - - def toSerial(self, obj): - #if Lookup.bit32 and np.int32 != np.int: np.int32 = np.int - toSer = self.__toSerial(obj) - #print toSer - value = msgpack.packb(toSer) - return value - -class HDF5Serializer(Serializer): - """ Serializes a Object to/from HDF5 format """ - - tmp_num = 0 - - def __fromSerial(self, grp): - - if isinstance(grp, h5py.Dataset): - return grp.value - - elif isinstance(grp, h5py.Group) and '__type' in list(grp.keys()): - typ = grp['__type'].value - if typ == 'datetime': - return construct_timestamp(str(grp['ts'].value)) - elif typ == '_null': - return None - elif typ == 'tuple': - return tuple(grp['tuple']) - elif typ == 'empty_list': - return [] - try: cls = Lookup.builtin_objects_simple[typ] - except KeyError: cls = Lookup.dynamicClasses[typ] - args = [] - for key in list(grp.keys()): - fromSer = self.__fromSerial(grp[key]) - args.append((key, fromSer)) - kwargs = dict(args) - kwargs.pop('__type') - return cls(**kwargs) - #else: - # return grp.value - - - def fromSerial(self, string): - HDF5Serializer.tmp_num += 1 - fn = 'tmp%d.hdf5'%(HDF5Serializer.tmp_num-1,) - fp = open(fn, 'wb') - fp.write(string) - fp.flush(), fp.close() - - root = h5py.File(fn, driver='core') - try: - fromSer = self.__fromSerial(root['dataset']) - except: - root.flush(), root.close() - os.remove(fn) - raise - - root.flush(), root.close() - os.remove(fn) - - return fromSer - - def __toSerial(self, obj, grp, name): - - if isinstance(obj, datetime.datetime): - sub_grp = grp.create_group(name) - sub_grp['__type'] = 'datetime' - sub_grp['ts'] = obj.isoformat(' ') - - elif isinstance(obj, tuple(Lookup.builtin_objects_simple.values())): - sub_grp = grp.create_group(name) - sub_grp['__type'] = Lookup.obj_dtypes[obj.__class__] - for key, value in list(obj.__dict__.items()): - if value != None and key not in ['totalNS', 'totalPS']: - sub_grp[key] = value - - elif obj == None: - sub_grp = grp.create_group(name) - sub_grp['__type'] = '_null' - - elif isinstance(obj, DynamicObject.Object): - # Create the new group and assign unique identifier for this type of DynamicObject - sub_grp = grp.create_group(name) - tag = '%s.%s'%(obj.getObjectName(), obj.getRevisionNumber()) - sub_grp['__type'] = tag - # Put all of the DynamicObject's attributes into the new h5py group - for key, value in list(obj.__dict__.items()): - self.__toSerial(value, sub_grp, key) - - elif isinstance(obj, tuple): - sub_grp = grp.create_group(name) - sub_grp['__type'] = 'tuple' - sub_grp['tuple'] = obj - - elif isinstance(obj, list) and len(obj) == 0: - sub_grp = grp.create_group(name) - sub_grp['__type'] = 'empty_list' - - else: - grp[name] = obj - - def toSerial(self, obj): - HDF5Serializer.tmp_num += 1 - fn = 'tmp%d.hdf5'%(HDF5Serializer.tmp_num,) - root = h5py.File(fn, driver='core') - try: - self.__toSerial(obj, root, 'dataset') - except: - root.flush(), root.close() - os.remove(fn) - raise - root.flush(), root.close() - - fp = open(fn, 'rb') - msg = fp.read() - fp.close() - os.remove(fn) - - return msg - -# Alias for the standard json serializer: -class jsonSerializer(Serializer): - def fromSerial(self, string): - #return json.loads(string) - return jsonpickle.decode(string) - def toSerial(self, string): - #return json.dumps(string) - return jsonpickle.encode(string, max_depth=500) - -# Dict mapping from .serializer type to corresponding class object: -serializers = {'yaml': YAMLSerializer, - 'msgpack': MessagePackSerializer, - 'hdf5': HDF5Serializer, - 'json': jsonSerializer} - -instances = {'yaml': YAMLSerializer(), - 'msgpack': MessagePackSerializer(), - 'hdf5': HDF5Serializer(), - 'json': jsonSerializer()} - -serial_types = dict([(v,u) for u,v in list(serializers.items())]) - -compression_types = ['gzip', ''] diff --git a/schainpy/model/serializer/test/__init__.py b/schainpy/model/serializer/test/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/schainpy/model/serializer/test/__init__.py +++ /dev/null diff --git a/schainpy/model/serializer/test/serialtest.py b/schainpy/model/serializer/test/serialtest.py deleted file mode 100644 index 577c4bd..0000000 --- a/schainpy/model/serializer/test/serialtest.py +++ /dev/null @@ -1,186 +0,0 @@ - -# -# when Serializer is imported alone, fault indicates this package is -# dependent on lookup, but don't import Lookup, instead: -# -import DynamicObject # dependent on pysvn -import Serializer # dependent on Dynamic Object - -import msgpack -import redis - -import numpy as np - -class NamedObject(): - - #--------------------------------------------- - @staticmethod - def indexListMatch(list_of_lists, name, value, name2=None, value2=None, unique_f=False): - # - # for each list's attribute compare with value - # if match, return True plus list - # else return False plus empty list - # - # search needs to be named part of class for object else . is unrecognized - # - # unique_f finds non-uniqueness - - - index = [] # return empty indices - list_data = [] # return empty list - ii = 0 - for theList in list_of_lists: - - cmd0 = "theList.%s == value" % (name) - cmd1 = "isInlist(theList.%s,value)" % name - # if name is valid then - # match name against value - # match name (as list) against value - if (eval(cmd0) or eval(cmd1)): - if (name2 != None): - cmd2 = "theList.%s == value2" % name2 - cmd3 = "isInlist(theList.%s,value2)" % name2 - if (eval(cmd2) or eval(cmd3)): - if (unique_f): - index = index + [ii] - list_data = list_data + [theList] # save list of lists if non-unique - # don't exit on match, may be non-unique - else: - list_data = theList # save the list - index = [ii] - break - else: - if (unique_f): - index = index + [ii] - list_data = list_data + [theList] # list of lists if non-unique - else: - list_data = theList - index = [ii] - break # exit on match - #endif - ii = ii + 1 - #end for - - return index, list_data # return indices of matches and list (or list of lists) - - #end indexListMatch - - #--------------------------------------------- - @staticmethod - def namedListMatch(list_of_lists, name, value, name2=None, value2=None, unique_f=None): - # - # for each list's attribute compare with value - # if match, return True plus list - # else return False plus empty list - # - # search needs to be named part of class for object else . is unrecognized - # - # unique_f finds non-uniqueness ('None' is same as False) - - match_f = False - list_data = [] # initialize - - for theList in list_of_lists: - - cmd0 = "theList.%s == value" % (name) - cmd1 = "isInlist(theList.%s,value)" % name - # if name is valid then - # match name against value - # match name (as list) against value - if (eval(cmd0) or eval(cmd1)): - if (name2 != None): - cmd2 = "theList.%s == value2" % name2 - cmd3 = "isInlist(theList.%s,value2)" % name2 - if (eval(cmd2) or eval(cmd3)): - match_f = True - if (unique_f): - list_data = list_data + [theList] # save list of lists if non-unique - # don't exit on match, may be non-unique - else: - list_data = theList # save the list - break - else: - match_f = True - if (unique_f): - list_data = list_data + [theList] # list of lists if non-unique - else: - list_data = theList - break # exit on match - #endif - #end for - - return match_f, list_data # return match, and list (or list of lists) - - #end namedListMatch - - #--------------------------------------------- - @staticmethod - def combineLists(object): - # - # used for dumping elements in list of lists for debugging - # - ret_list =[] - ii = 0 - while ii < len(object): - ret_list = ret_list + [object[ii].list] # not a real list, so can't use built-in list iterator - ii = ii + 1 - return ret_list - - # end combineLists - - - -class StateListObject(NamedObject): - def __init__(self, concurrent=None, hierarchical=None, history=None, state=None): - self.concurrent = concurrent - self.hierarchical = hierarchical - self.history = history - self.state = state - self.list = [self.concurrent, self.hierarchical, self.history, self.state ] -#end class StateListObject - -source_object = "my test string" - -serializer = "yaml" -# -# python versioning issue (ver 2.7 -> else path) -# -if isinstance(serializer,Serializer.Serializer): - serial_type = Serializer.serial_types[serializer] -else: - serial_type = serializer - serializer = Serializer.serializers[serializer]() - - - -datastr = serializer.toSerial(source_object) - -dest_object = serializer.fromSerial(datastr) - -print("dest_object=",dest_object) - -myObject = StateListObject(hierarchical="yes",state=np.array([1,2,3.0])) - -datastr = serializer.toSerial(myObject) - -packed = msgpack.packb(datastr) - -try: - r= redis.StrictRedis(host='localhost',port=6379,db=0) -except Exception as eobj: - print("is the redis server running?",eobj) -else: - - r.set('baz',packed) # converts to string - x = r.get('baz') - -unpacked = msgpack.unpackb(x) - -dest_object = serializer.fromSerial(unpacked) - -print("val1=",dest_object.hierarchical) -val2 = dest_object.state -print("val2=",val2) -# can numpy array be used as array? -print(val2.shape) - diff --git a/schainpy/model/serializer/test/test _serializer_speed.py b/schainpy/model/serializer/test/test _serializer_speed.py deleted file mode 100644 index 5b891d3..0000000 --- a/schainpy/model/serializer/test/test _serializer_speed.py +++ /dev/null @@ -1,175 +0,0 @@ -''' -Created on Jul 16, 2014 - -@author: roj-idl71 -''' -""" -Dependencies: - - pip install tabulate simplejson python-cjson ujson yajl msgpack-python - -""" - -from timeit import timeit -from tabulate import tabulate - -setup = '''d = { - 'words': """ - Lorem ipsum dolor sit amet, consectetur adipiscing - elit. Mauris adipiscing adipiscing placerat. - Vestibulum augue augue, - pellentesque quis sollicitudin id, adipiscing. - """, - 'boolean' : False, - 'list': range(10), - 'dict': dict((str(i),'a') for i in xrange(10)), - 'int': 100, - 'float': 100.123456, -}''' - -setup = '''import numpy; -import datetime; -d = { - 'words': """ - Lorem ipsum dolor sit amet, consectetur adipiscing - elit. Mauris adipiscing adipiscing placerat. - Vestibulum augue augue, - pellentesque quis sollicitudin id, adipiscing. - """, - 'boolean' : False, - 'list': range(10), - 'dict': dict((str(i),'a') for i in xrange(10)), - 'int': 100, - 'float': 100.123456, - 'datetime' : datetime.datetime(2001,1,1,10,10,10) -}''' - - -setup_pickle = '%s ; import pickle ; src = pickle.dumps(d)' % setup -setup_pickle2 = '%s ; import pickle ; src = pickle.dumps(d, 2)' % setup -setup_cpickle = '%s ; import cPickle ; src = cPickle.dumps(d)' % setup -setup_cpickle2 = '%s ; import cPickle ; src = cPickle.dumps(d, 2)' % setup -setup_json = '%s ; import json; src = json.dumps(d)' % setup -setup_ujson = '%s ; import ujson; src = ujson.encode(d)' % setup -setup_cjson = '%s ; import cjson; src = cjson.encode(d)' % setup -setup_simplejson = '%s ; import simplejson; src = simplejson.dump(d)' % setup -setup_jsonpickle = '%s ; import jsonpickle; src = jsonpickle.encode(d)' % setup -setup_yaml = '%s ; import yaml; src = yaml.dump(d)' % setup -setup_msgpack = '%s ; import msgpack; src = msgpack.dumps(d)' % setup -setup_msgpack_np = '%s; import msgpack_numpy as msgpack; src = msgpack.dumps(d)' % setup - -tests = [ - # (title, setup, enc_test, dec_test, result) - ('cPickle (binary)', 'import cPickle; %s' % setup_cpickle2, 'cPickle.dumps(d, 2)', 'r = cPickle.loads(src)', 'print r'), - ('cPickle (ascii)', 'import cPickle; %s' % setup_cpickle, 'cPickle.dumps(d, 0)', 'r = cPickle.loads(src)', 'print r'), - ('pickle (binary)', 'import pickle; %s' % setup_pickle2, 'pickle.dumps(d, 2)', 'r = pickle.loads(src)', 'print r'), - ('pickle (ascii)', 'import pickle; %s' % setup_pickle, 'pickle.dumps(d, 0)', 'r = pickle.loads(src)', 'print r'), - ('jsonpickle', 'import jsonpickle; %s' % setup_jsonpickle, 'jsonpickle.encode(d)', 'r = jsonpickle.decode(src)', 'print r'), -# ('msgpack-numpy-python', '%s' % setup_msgpack_np, 'msgpack.dumps(d)', 'r = msgpack.loads(src)', 'print r'), - ('ujson', 'import ujson; %s' % setup_ujson, 'ujson.encode(d)', 'r = ujson.decode(src)', 'print r'), -# ('msgpack-python', 'import msgpack; %s' % setup_msgpack, 'msgpack.dumps(d)', 'r = msgpack.loads(src)', 'print r'), -# ('json', 'import json; %s' % setup_json, 'json.dumps(d)', 'r = json.loads(src)', 'print r'), -# ('python-cjson-1.0.5', 'import cjson; %s' % setup_cjson, 'cjson.encode(d)', 'r = cjson.decode(src)', 'print r'), -# ('simplejson-3.3.1', 'import simplejson; %s' % setup_json, 'simplejson.dumps(d)', 'r = simplejson.loads(src)', 'print r'), - ('yaml', 'import yaml; %s' % setup_yaml, 'yaml.dump(d)', 'r = yaml.load(src)', 'print r'), -] - -loops = 1 -enc_table = [] -dec_table = [] - -print "Running tests (%d loops each)" % loops - -for title, mod, enc, dec, msg in tests: - print title - - ### Getting the package size - exec mod - size = len("".join(src)) - - print " [Encode]", enc - result = timeit(enc, mod, number=loops) - enc_table.append([title, result, size]) - - print " [Decode]", dec - result = timeit(dec, mod, number=loops) - dec_table.append([title, result]) - - print " Result" - result = timeit(msg, mod+';'+dec, number=1) - -enc_table.sort(key=lambda x: x[1]) -enc_table.insert(0, ['Package', 'Seconds', 'Size']) - -dec_table.sort(key=lambda x: x[1]) -dec_table.insert(0, ['Package', 'Seconds']) - -print "\nEncoding Test (%d loops)" % loops -print tabulate(enc_table, headers="firstrow") - -print "\nDecoding Test (%d loops)" % loops -print tabulate(dec_table, headers="firstrow") - -""" -OUTPUT: - -Running tests (15000 loops each) -pickle (ascii) - [Encode] pickle.dumps(d, 0) - [Decode] pickle.loads(src) -pickle (binary) - [Encode] pickle.dumps(d, 2) - [Decode] pickle.loads(src) -cPickle (ascii) - [Encode] cPickle.dumps(d, 0) - [Decode] cPickle.loads(src) -cPickle (binary) - [Encode] cPickle.dumps(d, 2) - [Decode] cPickle.loads(src) -json - [Encode] json.dumps(d) - [Decode] json.loads(src) -simplejson-3.3.1 - [Encode] simplejson.dumps(d) - [Decode] simplejson.loads(src) -python-cjson-1.0.5 - [Encode] cjson.encode(d) - [Decode] cjson.decode(src) -ujson-1.33 - [Encode] ujson.dumps(d) - [Decode] ujson.loads(src) -yajl 0.3.5 - [Encode] yajl.dumps(d) - [Decode] yajl.loads(src) -msgpack-python-0.3.0 - [Encode] msgpack.dumps(d) - [Decode] msgpack.loads(src) - -Encoding Test (15000 loops) -Package Seconds --------------------- --------- -ujson-1.33 0.232215 -msgpack-python-0.3.0 0.241945 -cPickle (binary) 0.305273 -yajl 0.3.5 0.634148 -python-cjson-1.0.5 0.680604 -json 0.780438 -simplejson-3.3.1 1.04763 -cPickle (ascii) 1.62062 -pickle (ascii) 14.0497 -pickle (binary) 15.4712 - -Decoding Test (15000 loops) -Package Seconds --------------------- --------- -msgpack-python-0.3.0 0.240885 -cPickle (binary) 0.393152 -ujson-1.33 0.396875 -python-cjson-1.0.5 0.694321 -yajl 0.3.5 0.748369 -simplejson-3.3.1 0.780531 -cPickle (ascii) 1.38561 -json 1.65921 -pickle (binary) 5.20554 -pickle (ascii) 17.8767 -""" \ No newline at end of file diff --git a/schainpy/speedTools.bash b/schainpy/speedTools.bash deleted file mode 100644 index 70024c9..0000000 --- a/schainpy/speedTools.bash +++ /dev/null @@ -1,11 +0,0 @@ -#Use this script in order to find the slowest module or function in your python code. -#Reference: http://lukauskas.co.uk/articles/2014/02/12/how-to-make-python-faster-without-trying-that-much/ - -#!/bin/sh - -script = "testRawData.py" -output = "profile.pdf" - -python -m cProfile -o profile.pstats $script - -gprof2dot -f pstats profile.pstats | dot -Tpdf -o $output \ No newline at end of file diff --git a/schainpy/zerorpc/MyClient01.py b/schainpy/zerorpc/MyClient01.py deleted file mode 100644 index 11bbfb5..0000000 --- a/schainpy/zerorpc/MyClient01.py +++ /dev/null @@ -1,147 +0,0 @@ -''' -Created on Jul 11, 2014 - -@author: roj-idl71 -''' -import time -from gevent import sleep - -import zerorpc -from schainpy.model import * -from schainpy.serializer.DataTranslate import serial2Obj, serial2Dict -# import schainpy.model.io.jroIO_usrp - -def createObjVolt(): - ''' - This function creates a processing object "VoltProc" with some operations. - such as: "CohInt", "Scope", etc - These class are found inside schainpy.model.proc and schainpy.model.graphics - ''' - procObj = VoltageProc() - - opObj = CohInt() - procObj.addOperation(opObj, 1) - - opObj = Scope() - procObj.addOperation(opObj, 2) - - return procObj - -def createObjSpec(): - ''' - This function creates a processing object "SpecProc" with some operation objects - such as: "IncohInt", "SpectraPlot", "RTIPlot", etc - These class are found inside schainpy.model.proc and schainpy.model.graphics - ''' - - procObj = SpectraProc() - - opObj = IncohInt() - procObj.addOperation(opObj, objId = 1) - - opObj = SpectraPlot() - procObj.addOperation(opObj, objId = 2) - - opObj = RTIPlot() - procObj.addOperation(opObj, objId = 3) - - opObj = SpectraPlot() - procObj.addOperation(opObj, objId = 4) - - opObj = RTIPlot() - procObj.addOperation(opObj, objId = 5) - - return procObj - -def processingSpec(procObj, dataInObj): - - procObj.setInput(dataInObj) - procObj.run(nFFTPoints = 16) - - procObj.call(opType = "external", - opId = 1, - n=1) - - procObj.call(opType = "external", - opId = 2, - id=191, - zmin=-100, - zmax=-40) - - procObj.call(opType = "external", - opId = 3, - id=192, - zmin=-100, - zmax=-40, - timerange=10*60) - -# procObj.call(opType = "self", -# opName = "selectChannels", -# channelList = [0,1]) -# -# procObj.call(opType = "self", -# opName = "selectHeights", -# minHei = 300, -# maxHei = 400) -# -# procObj.call(opType = "external", -# opId = 4, -# id=193, -# zmin=-100, -# zmax=-40) -# -# procObj.call(opType = "external", -# opId = 5, -# id=194, -# zmin=-100, -# zmax=-40, -# timerange=10*60) - -def printSpeed(deltaTime, mySerial): - - #################### - size = len(mySerial)/1024. - vel = 1.0*size / deltaTime - - print("Index [", replayerObj.getProfileIndex(), "]: ", end=' ') - print("Total time %5.2f ms, Data size %5.2f KB, Speed %5.2f MB/s" %(deltaTime, size, vel)) - #################### - -if __name__ == '__main__': - - procObj = createObjSpec() - - replayerObj = zerorpc.Client() - replayerObj.connect("tcp://127.0.0.1:4242") - - serializer = replayerObj.getSerializer() - - ini = time.time() - mySerialMetadata = replayerObj.getSerialMetaData() - deltaTime = (time.time() - ini)*1024 - - printSpeed(deltaTime, mySerialMetadata) - - myMetaDict = serial2Dict(mySerialMetadata, - serializer = serializer) -# print myMetaDict - while True: - ini = time.time() - mySerialData = replayerObj.getSerialData() - deltaTime = (time.time() - ini)*1024 - - if not mySerialData: - print("No more data") - break - -# myDataDict = SERIALIZER.loads(mySerialData) -# print myDataDict -# continue - - printSpeed(deltaTime, mySerialData) - - dataInObj = serial2Obj(mySerialData, - metadataDict=myMetaDict, - serializer = serializer) - processingSpec(procObj, dataInObj) - sleep(1e-1) \ No newline at end of file diff --git a/schainpy/zerorpc/MyClient02.py b/schainpy/zerorpc/MyClient02.py deleted file mode 100644 index 246fc39..0000000 --- a/schainpy/zerorpc/MyClient02.py +++ /dev/null @@ -1,13 +0,0 @@ -''' -Created on Jul 11, 2014 - -@author: roj-idl71 -''' - -import zerorpc - -if __name__ == '__main__': - c = zerorpc.Client() - c.connect("tcp://127.0.0.1:4242") - c.load("file2") # AAAHH! The previously loaded model gets overwritten here! - print(c.getModelName()) \ No newline at end of file diff --git a/schainpy/zerorpc/MyServer.py b/schainpy/zerorpc/MyServer.py deleted file mode 100644 index 8d40540..0000000 --- a/schainpy/zerorpc/MyServer.py +++ /dev/null @@ -1,33 +0,0 @@ -''' -Created on Jul 11, 2014 - -@author: roj-idl71 -''' -# import sys -import datetime -import zerorpc - -from schainpy.model.io.jrodataIO import USRPReaderAPI -# from schainpy.serializer.DataTranslate import serial2Obj - -if __name__ == '__main__': - - replayerObj = USRPReaderAPI(serializer='msgpack') - - replayerObj.setup(path='/Volumes/DATA/haystack/passive_radar/', - startDate=datetime.date(2000,1,1), - endDate=datetime.date(2015,1,1), - startTime=datetime.time(0,0,0), - endTime=datetime.time(23,59,59), - online=1, - nSamples=500, - channelList = [0,1,2,3,4,5,6,7]) - - replayerObj.start() - - print("Initializing 'zerorpc' server") - s = zerorpc.Server(replayerObj) - s.bind("tcp://0.0.0.0:4242") - s.run() - - print("End") \ No newline at end of file diff --git a/schainpy/zerorpc/__init__.py b/schainpy/zerorpc/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/schainpy/zerorpc/__init__.py +++ /dev/null diff --git a/schainpy/zerorpc/test/testServer.py b/schainpy/zerorpc/test/testServer.py deleted file mode 100644 index 29517ca..0000000 --- a/schainpy/zerorpc/test/testServer.py +++ /dev/null @@ -1,177 +0,0 @@ -''' -Created on Jul 15, 2014 - -@author: roj-idl71 -''' - -import sys -import yaml -import numpy -import jsonpickle - -# import schainpy.serializer.DynamicSerializer as DynamicSerializer - - - -def isNotClassVar(myObj): - - return not hasattr(myObj,'__dict__') - -def isDictFormat(thisValue): - - if type(thisValue) != type({}): - return False - - if '__name__' not in list(thisValue.keys()): - return False - - return True - -def obj2Dict(myObj): - - myDict = {} - - myDict['__name__'] = myObj.__class__.__name__ - - for thisKey, thisValue in list(myObj.__dict__.items()): - - if isNotClassVar(thisValue): - myDict[thisKey] = thisValue - continue - - ## If this value is another class instance - myNewDict = obj2Dict(thisValue) - myDict[thisKey] = myNewDict - - return myDict - -def dict2Obj(myDict): - ''' - ''' - - if '__name__' not in list(myDict.keys()): - return None - - className = eval(myDict['__name__']) - - myObj = className() - - for thisKey, thisValue in list(myDict.items()): - - if thisKey == '__name__': - continue - - if not isDictFormat(thisValue): - setattr(myObj, thisKey, thisValue) - continue - - myNewObj = dict2Obj(thisValue) - setattr(myObj, thisKey, myNewObj) - - return myObj - -class myTestClass3(object): - - def __init__(self): - ''' - ''' - self.y1 = 'y1' - self.y2 = 'y2' - -class myTestClass2(object): - - def __init__(self): - ''' - ''' - self.x1 = 'x1' - self.x2 = 'x2' - self.otherObj = myTestClass3() - - -class myTestClass(object): - - flagNoData = True - value1 = 1 - value2 = 2 - myObj = None - - def __init__(self): - - ''' - ''' - self.flagNoData = True - self.value1 = 1 - self.value2 = 2 - self.myObj = myTestClass2() - - def get_dtype(self): - - ''' - ''' - return self.value1 - - def set_dtype(self, value): - - ''' - ''' - - self.value1 = value - - dtype = property(get_dtype, set_dtype) - -def myMsgPackTest(): - - import msgpack - import msgpack_numpy as m - import numpy as np - - x = np.random.rand(5) - x_enc = m.encode(x) - x_rec = m.decode(x_enc) - - print(x_rec) -# -# x_enc = msgpack.packb(x, default=m.encoder) -# x_rec = msgpack.unpackb(x_enc, object_hook=m.decoder) - -if __name__ == '__main__': - - myMsgPackTest() - - sys.exit() - - serializerObj = DynamicSerializer.DynamicSerializer('json') - serializerObj = jsonpickle - - myTestObj = myTestClass() - - myTestObj.flagNoData = False - myTestObj.value1 = [1+3.4j,4,'5',] - myTestObj.value2 = {'x2': numpy.complex(1,2),'x1': 'x1'} -# myTestObj.myObj.x2 = numpy.arange(15, dtype=numpy.complex) - - myDict = obj2Dict(myTestObj) - - myNewObj = dict2Obj(myDict) - -# print myDict -# print myTestObj.__dict__ -# print myNewObj.__dict__ - -# sys.exit() - print(myDict) - - newSerial = serializerObj.encode(myDict) -# print newSerial - - newDict = serializerObj.decode(newSerial) - print(newDict) - - myNewObj = dict2Obj(newDict) - - print() - print() - print(50*'###') - print(myTestObj.__dict__) - print(myNewObj.__dict__) - \ No newline at end of file diff --git a/schainpy/zerorpc/test/testServer_Voltage.py b/schainpy/zerorpc/test/testServer_Voltage.py deleted file mode 100644 index 8b2daca..0000000 --- a/schainpy/zerorpc/test/testServer_Voltage.py +++ /dev/null @@ -1,46 +0,0 @@ -''' -Created on Jul 15, 2014 - -@author: roj-idl71 -''' - -import sys -import pickle - -from schainpy.model.data.jrodata import Voltage -# from schainpy.model.io.jrodataIO import USRPReaderMP -from schainpy.serializer.DynamicSerializer import DynamicSerializer -from schainpy.serializer.DataTranslate import obj2Dict, dict2Obj - - -if __name__ == "__main__": - - serializerObj = DynamicSerializer('yaml') - - myTestObj = Voltage() - - myDict = obj2Dict(myTestObj) - - myNewObj = dict2Obj(myDict) - -# print myDict -# print myTestObj.__dict__ -# print myNewObj.__dict__ -# -# print -# print '#############################' -# print -# newValue = serializerObj.dumps(myDict) -# print newValue -# -# newValue = serializerObj.loads(newValue) -# print newValue - - - print('###########CPICKLE##################') - print(myDict) - newSerialized = pickle.dumps(myDict, 2) -# print newValue - - newDict = pickle.loads(newSerialized) - print(newDict) \ No newline at end of file diff --git a/setup.py b/setup.py index 3f28ddf..0518d4d 100644 --- a/setup.py +++ b/setup.py @@ -35,14 +35,9 @@ setup( 'schainpy.model.utils', 'schainpy.utils', 'schainpy.gui', - 'schainpy.gui.figures', - 'schainpy.gui.viewcontroller', - 'schainpy.gui.viewer', - 'schainpy.gui.viewer.windows', 'schainpy.cli', }, package_data = {'': ['schain.conf.template'], - 'schainpy.gui.figures': ['*.png', '*.jpg'], 'schainpy.files': ['*.oga'] }, include_package_data = False,