From 941c73d3733766afde1e30229f9564644825a90e Mon Sep 17 00:00:00 2001 From: DreamSourceLab <support@dreamsourcelab.com> Date: Wed, 10 Aug 2016 15:12:13 +0800 Subject: [PATCH] Fix some minor display/platform issues --- DSView/DSView.qrc | 17 --- DSView/darkstyle/style.qss | 5 + DSView/icons/Blackman.png | Bin DSView/icons/Flat_top.png | Bin DSView/icons/Hamming.png | Bin DSView/icons/Hann.png | Bin DSView/icons/Rectangle.png | Bin DSView/icons/about.png | Bin DSView/icons/close.png | Bin DSView/icons/export.png | Bin DSView/icons/fft.png | Bin DSView/icons/file.png | Bin DSView/icons/file_cn.png | Bin 1362 -> 0 bytes DSView/icons/file_dis.png | Bin DSView/icons/file_dis_cn.png | Bin 1224 -> 0 bytes DSView/icons/instant.png | Bin DSView/icons/instant_cn.png | Bin 1262 -> 0 bytes DSView/icons/instant_dis.png | Bin DSView/icons/instant_dis_cn.png | Bin 1352 -> 0 bytes DSView/icons/math.png | Bin DSView/icons/math_dis.png | Bin DSView/icons/maximize.png | Bin DSView/icons/measure.png | Bin DSView/icons/measure_cn.png | Bin 1316 -> 0 bytes DSView/icons/measure_dis.png | Bin DSView/icons/measure_dis_cn.png | Bin 1414 -> 0 bytes DSView/icons/minimize.png | Bin DSView/icons/next.png | Bin DSView/icons/params.png | Bin DSView/icons/params_cn.png | Bin 1388 -> 0 bytes DSView/icons/params_dis.png | Bin DSView/icons/params_dis_cn.png | Bin 1619 -> 0 bytes DSView/icons/pre.png | Bin DSView/icons/protocol.png | Bin DSView/icons/protocol_cn.png | Bin 3269 -> 0 bytes DSView/icons/protocol_dis.png | Bin DSView/icons/protocol_dis_cn.png | Bin 1454 -> 0 bytes DSView/icons/restore.png | Bin DSView/icons/search-bar.png | Bin DSView/icons/search-bar_cn.png | Bin 1580 -> 0 bytes DSView/icons/search-bar_dis.png | Bin DSView/icons/search-bar_dis_cn.png | Bin 1888 -> 0 bytes DSView/icons/settings.png | Bin DSView/icons/single.png | Bin DSView/icons/single_dis.png | Bin DSView/icons/start.png | Bin DSView/icons/start_cn.png | Bin 1401 -> 0 bytes DSView/icons/start_dis.png | Bin DSView/icons/start_dis_cn.png | Bin 1495 -> 0 bytes DSView/icons/stop.png | Bin DSView/icons/stop_cn.png | Bin 830 -> 0 bytes DSView/icons/trigger.png | Bin DSView/icons/trigger_cn.png | Bin 1141 -> 0 bytes DSView/icons/trigger_dis.png | Bin DSView/icons/trigger_dis_cn.png | Bin 1453 -> 0 bytes DSView/icons/wiki.png | Bin DSView/pv/data/mathstack.cpp | 10 +- DSView/pv/dialogs/calibration.cpp | 11 +- DSView/pv/dialogs/deviceoptions.cpp | 23 ++-- DSView/pv/dialogs/deviceoptions.h | 3 +- DSView/pv/dialogs/fftoptions.cpp | 36 +++--- DSView/pv/dialogs/fftoptions.h | 3 +- DSView/pv/dialogs/protocolexp.cpp | 4 + DSView/pv/dialogs/protocollist.cpp | 4 + DSView/pv/dialogs/search.cpp | 1 + DSView/pv/dialogs/waitingdialog.cpp | 4 +- DSView/pv/dock/dsotriggerdock.cpp | 6 +- DSView/pv/dock/measuredock.cpp | 2 + DSView/pv/dock/triggerdock.cpp | 3 + DSView/pv/mainwindow.cpp | 10 +- DSView/pv/mainwindow.h | 7 +- DSView/pv/prop/binding/binding.cpp | 4 + DSView/pv/sigsession.cpp | 4 +- DSView/pv/sigsession.h | 2 + DSView/pv/toolbars/trigbar.cpp | 1 + DSView/pv/view/analogsignal.cpp | 1 + DSView/pv/view/decodetrace.cpp | 13 +- DSView/pv/view/devmode.cpp | 2 + DSView/pv/view/dsosignal.cpp | 6 +- DSView/pv/view/ruler.cpp | 25 ++-- DSView/pv/view/trace.cpp | 9 +- DSView/pv/view/trace.h | 1 + DSView/pv/view/view.cpp | 38 ++++-- DSView/pv/view/view.h | 1 + DSView/pv/view/viewport.cpp | 14 +-- DSView/pv/widgets/decodergroupbox.cpp | 1 + DSView/res/DSCope1.def.dsc | 78 ++++++------ DSView/res/DSLogic0.def.dsc | 34 +++--- DSView/res/DSLogic2.def.dsc | 163 +++++++++++++------------- libsigrok4DSL/hardware/DSL/dscope.c | 6 +- libsigrok4DSL/hardware/DSL/dsl.h | 1 + libsigrok4DSL/hardware/DSL/dslogic.c | 51 +++++--- libsigrok4DSL/hardware/demo/demo.c | 7 +- libsigrok4DSL/libsigrok.h | 3 + 94 files changed, 357 insertions(+), 257 deletions(-) mode change 100755 => 100644 DSView/icons/Blackman.png mode change 100755 => 100644 DSView/icons/Flat_top.png mode change 100755 => 100644 DSView/icons/Hamming.png mode change 100755 => 100644 DSView/icons/Hann.png mode change 100755 => 100644 DSView/icons/Rectangle.png mode change 100755 => 100644 DSView/icons/about.png mode change 100755 => 100644 DSView/icons/close.png mode change 100755 => 100644 DSView/icons/export.png mode change 100755 => 100644 DSView/icons/fft.png mode change 100755 => 100644 DSView/icons/file.png delete mode 100644 DSView/icons/file_cn.png mode change 100755 => 100644 DSView/icons/file_dis.png delete mode 100644 DSView/icons/file_dis_cn.png mode change 100755 => 100644 DSView/icons/instant.png delete mode 100644 DSView/icons/instant_cn.png mode change 100755 => 100644 DSView/icons/instant_dis.png delete mode 100755 DSView/icons/instant_dis_cn.png mode change 100755 => 100644 DSView/icons/math.png mode change 100755 => 100644 DSView/icons/math_dis.png mode change 100755 => 100644 DSView/icons/maximize.png mode change 100755 => 100644 DSView/icons/measure.png delete mode 100644 DSView/icons/measure_cn.png mode change 100755 => 100644 DSView/icons/measure_dis.png delete mode 100644 DSView/icons/measure_dis_cn.png mode change 100755 => 100644 DSView/icons/minimize.png mode change 100755 => 100644 DSView/icons/next.png mode change 100755 => 100644 DSView/icons/params.png delete mode 100644 DSView/icons/params_cn.png mode change 100755 => 100644 DSView/icons/params_dis.png delete mode 100644 DSView/icons/params_dis_cn.png mode change 100755 => 100644 DSView/icons/pre.png mode change 100755 => 100644 DSView/icons/protocol.png delete mode 100755 DSView/icons/protocol_cn.png mode change 100755 => 100644 DSView/icons/protocol_dis.png delete mode 100644 DSView/icons/protocol_dis_cn.png mode change 100755 => 100644 DSView/icons/restore.png mode change 100755 => 100644 DSView/icons/search-bar.png delete mode 100644 DSView/icons/search-bar_cn.png mode change 100755 => 100644 DSView/icons/search-bar_dis.png delete mode 100644 DSView/icons/search-bar_dis_cn.png mode change 100755 => 100644 DSView/icons/settings.png mode change 100755 => 100644 DSView/icons/single.png mode change 100755 => 100644 DSView/icons/single_dis.png mode change 100755 => 100644 DSView/icons/start.png delete mode 100644 DSView/icons/start_cn.png mode change 100755 => 100644 DSView/icons/start_dis.png delete mode 100755 DSView/icons/start_dis_cn.png mode change 100755 => 100644 DSView/icons/stop.png delete mode 100644 DSView/icons/stop_cn.png mode change 100755 => 100644 DSView/icons/trigger.png delete mode 100644 DSView/icons/trigger_cn.png mode change 100755 => 100644 DSView/icons/trigger_dis.png delete mode 100644 DSView/icons/trigger_dis_cn.png mode change 100755 => 100644 DSView/icons/wiki.png diff --git a/DSView/DSView.qrc b/DSView/DSView.qrc index b2799fa..f58808f 100644 --- a/DSView/DSView.qrc +++ b/DSView/DSView.qrc @@ -36,25 +36,8 @@ <file>icons/gear.png</file> <file>icons/wiki.png</file> <file>icons/wait.gif</file> - <file>icons/file_cn.png</file> - <file>icons/file_dis_cn.png</file> - <file>icons/instant_cn.png</file> - <file>icons/measure_cn.png</file> - <file>icons/measure_dis_cn.png</file> - <file>icons/params_cn.png</file> - <file>icons/params_dis_cn.png</file> - <file>icons/protocol_dis_cn.png</file> - <file>icons/search-bar_cn.png</file> - <file>icons/search-bar_dis_cn.png</file> - <file>icons/start_cn.png</file> - <file>icons/stop_cn.png</file> - <file>icons/trigger_cn.png</file> - <file>icons/trigger_dis_cn.png</file> - <file>icons/protocol_cn.png</file> <file>icons/instant_dis.png</file> - <file>icons/instant_dis_cn.png</file> <file>icons/start_dis.png</file> - <file>icons/start_dis_cn.png</file> <file>icons/settings.png</file> <file>darkstyle/style.qss</file> <file>icons/export.png</file> diff --git a/DSView/darkstyle/style.qss b/DSView/darkstyle/style.qss index 6b3fc4e..2145551 100755 --- a/DSView/darkstyle/style.qss +++ b/DSView/darkstyle/style.qss @@ -881,6 +881,11 @@ QDockWidget { titlebar-normal-icon: url(:/qss_icons/rc/undock.png); } +QDockWidget::title { + border: 1px solid #282727; + background-color: #2b2a2a; +} + QDockWidget::close-button, QDockWidget::float-button { border: 1px solid transparent; border-radius: 2px; diff --git a/DSView/icons/Blackman.png b/DSView/icons/Blackman.png old mode 100755 new mode 100644 diff --git a/DSView/icons/Flat_top.png b/DSView/icons/Flat_top.png old mode 100755 new mode 100644 diff --git a/DSView/icons/Hamming.png b/DSView/icons/Hamming.png old mode 100755 new mode 100644 diff --git a/DSView/icons/Hann.png b/DSView/icons/Hann.png old mode 100755 new mode 100644 diff --git a/DSView/icons/Rectangle.png b/DSView/icons/Rectangle.png old mode 100755 new mode 100644 diff --git a/DSView/icons/about.png b/DSView/icons/about.png old mode 100755 new mode 100644 diff --git a/DSView/icons/close.png b/DSView/icons/close.png old mode 100755 new mode 100644 diff --git a/DSView/icons/export.png b/DSView/icons/export.png old mode 100755 new mode 100644 diff --git a/DSView/icons/fft.png b/DSView/icons/fft.png old mode 100755 new mode 100644 diff --git a/DSView/icons/file.png b/DSView/icons/file.png old mode 100755 new mode 100644 diff --git a/DSView/icons/file_cn.png b/DSView/icons/file_cn.png deleted file mode 100644 index 00096c509581fc2426e123cf58cdef3c27234a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1362 zcmXw(2~g5m7{DK(sFWaOO5zok$7&mCZR+ZJ{Z+I9jhxk-B3%Qe5?I8{Rl#oTGIv2& zOHDVmY_&u37&WtOJR-F`YCYS5h&IJr$};y)O*8L%-^}m(ec#NRdGBR~(}ImL78n44 zaR>#X!<noLLo~ccB0rpglM#=yCkX&-n=TMiXDkth27(Z3puxEQI^2$}q1I1iUr=C_ zz%N;lz~zG*)p81qRtsPRF_Yr>Y@UG4<$$$D8|+|?(eVH-FO|=ZPY{5=adJ<XV!u#6 zGghbC3fPHEuw9EYf-6S4%5E-8kP^#hf_=OdoxbYJaCTDM;aFJZgSrQ@Y#1BraAYi> z!{)?;2Sk<b2nJvKllgH>u&{FC-8U_Oo0!Pt2*9E|w*_Wsofg3s9A<*+n&%Dx=vjq8 zeh~@BCZk#o5#tHMv8j1Q|97r$+RUuai|(0Dl*z2U%(kr`(sYI=I9YkgtcF@e0d9n7 zHJze1aa>=>Ss$$~(8E|OhbChr;;y?FlBJv9&fm96cM$zlZ2CbX$Cnyh{HST3(iFW} zUdULJWyoM&zh(qIruaT57*Q;4ka1g+Sn=_1gcW@aRS_Z^S#*{8Q`THsS%0>(vvY9C z9;~k;0$h5^+Uo5++Q?!#mia>7!!t885zUPKZq%AxHwT2Vs+C2pHY_hU*WF?=Dg4jm z%zU@Bv^1@Qg9G=+i>TpRSb`^Pk*~#z4aI8N@MJBGMza<)jv7BAAIZ(ji^JnRk=7D= z#{pMIvvUL@5tX@W7q7iMaTs33?iUqGeuE7bhfCS~<iDWL!j}eF*HezhsK)+H-S2}r z_3&~oGoy%B(c(&-s|qdqWuv_<<)n}bH5c?|`<GnWS<zQKRNFkrsWb0-&EJT>BYP%9 ze)@qGRMB^gUEo1lnwX!T-^pSm)D4%ULX`*+Mjx-eD)GNLa9rVD<Xzl(;J#Ymxq^HN zc$TLFl%&B<bdI*WobB(Vuc}emkq9<6VK$bQE~ulZ5X`g~EhrxID5Tj*L-#oz1n!<^ zYwtg%qdwnj3uBm@?I0QTdgq&x%EH5MiT)X>$9tSY<L4%pmSgpC=X&vmvqF;%DO&`7 z=WBy8JtKk2@0HqW8{zEIh`Zj&(2|9PWVu{EGP71=zHWJXN?J<lKQa{1u-A-*#<$*e zQO<p+$wMEW&wPS3e&l;Edi2WW%OBnG2+zuaN>j|KIdh!Js|!+k$7_DhtYfXTo_^yh z<CeDi<G=|~Q+++*ZR4FlTc_3Qj`@xHL;Zt;KUYS%upI2|Es8SI(i&q3K~t@qy5Ttq za}N^8U7oV~@(T+S@y|AeVHG1KBwk@!z8~TAu=7ewFMPL-HtUm<vhs=YCXbkIDofZU z?+HA>sNpUp#+oc}r6RBmH2Gw9G=eeoGz6*kwx;}*9@#F{BhQs5fZIEv-Ox7un8=oj zK<0oq7es9;^~&^7tReSfT`A&soxighB{Y(2kG!Y3L1^$^Z~xgY^2o#T-hdZ>+$@+p z^kOmG?zSq(0H}V=J(w*PL&_X+6S(aQU6U-?ug(caiq$x+B4zKEJdkcn>H(iBsTsk< zFjPH)8e?hb{E7>3;)GC0gLvQFyii52tfp>0q!^ddcSz_yXOtG_$=kt|x^_R0iSEXC zgAc-%XU8)>JGqTFxz-sXL**mtzSQG-lJv#AYSasQ8zX*0X*&=mt(wghd)bxZPINFF zs++LjrT%o=q@@ia6P_>mEezry-k%d&<Dv@{ZEEe;$GL*)8!CU>RDq+xUk3;Yq(RmG HF~|Q0GjCVq diff --git a/DSView/icons/file_dis.png b/DSView/icons/file_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/file_dis_cn.png b/DSView/icons/file_dis_cn.png deleted file mode 100644 index b6e24584d2bed42577493c96ca1c70cc01f42a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>FdgVpH-CK+`v}yw-Q*$HKN3^v?L?Hh+*ZrGaf)8o)VytOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1QA>utW5h7A2=LeEr}2 z8m7!SKQ}iuuY}>-nQ8lhVr(E~A(<sPsSGRLT~cRYV4m#h;uw<A_;$wmZV`8p<NHIe zK7QlRYU?U=NJ6kPJI(y|<=A%Hp6LhTuC3-2GGGy&E+DA#Q~D31oXr!lA^{Z+?%j<t zMK=Y6R{S$Oci>%zOF+?uJ1IBi3y-~A^=ZTH*@=%{`INpdb9z?1sxIVf_5E=BxKiP@ zrvFY~Si|h$74LBE3u{Vms?mwhdukc>F@JcNz3ZRm(mkG<f7^=pB|UmwD#7`p(Oe>V zGs88T^S|W|ur;*3-le6>UcIs99!ml50p?>jN*UY_8~B`kANRJAk%4{56nW+!PF|H) zKHE$?*8ROon4kHF$N^V|l^rJ@iAb>&@Ey=;D4*1I;+2Ff%LmQ|{f(N3Ec$d_AK+;C z%y2GeYww9&6P_~MU}*D+pRl#z2+(o9P&ZC&*tyek$GYEvw+_y5nDi&?qm6!Vy^;Nn zb=JvN784uFe2(r|=RN6%Z!UktwY>T}d*@t9Q_$Y!C9P<Ee$%yC*It)qr>3gfo0@JF zyWJ}ATle%WISJQ^?{c<B>GCRQO+W4Hbi&@~rf<>iS&iYGH+*+>zWpD`{?8ZW042sM zO^x49Yq}O#?GKh;I*mW9Mv&{F{W{Iij<;7G&XnKs@lbo<@{XS&dxCEDatDvUH>-ml zN<`@CT+_}6YWwx@(^QqZ+b>tvgfSc5pK@d0_8)c0tCwE*@VDKmW54z0KTP_*bJm%E z-NM8wEwMi^pY1Z2#L_o+RbBplG+~jr+UTqJMMPTf>=eIA^Bd1T70Efldh}EG9+N^T zhAFE=o%VlR%_N(8c&X&-hp}1y4%SzscD}li9KZc`*;+mk-75Bg#k(Ts_vLPF+q0x0 zFiZ6Pk!{uG^Xu0&9A<FvTzg^ChJ&BD=M+y$k6?H)nen*gAxrhS2g|!}%4xj&-OJ=3 z^5y!?SwXCOMW#dxEq5rMx=^XEXZO}Ex8l^SCgm@5PLPt|Tu}1o;sn=x##aT(YwD`M z&)l=l;UL@n{WfkdFYk!&yYRa(dh^M6nRDN*g};PJH6E9^-#R7AE`s-ZeU_#VlYabR zh7B^m!mlaEY|tsP?t1c5cJ76k)FbnLEU;y~dnB!<^S+(j_JE7O!j)FY^_v%{Tjk$> zX7*F3?w%FL8^+`Fq?Uh~m?>kcuedaeHNNBcy|$PTo&6^))%%Q#G~5FlbIx%*T+imc zD@Q6|{TG!5QXQ4|^KC+O<crRE&dK#UKF`nU&OMPub<?HqJzBl0c-EKw?3<S9D`dwp YutiokTPdH|0nD%rp00i_>zopr0P0f`>Hq)$ diff --git a/DSView/icons/instant.png b/DSView/icons/instant.png old mode 100755 new mode 100644 diff --git a/DSView/icons/instant_cn.png b/DSView/icons/instant_cn.png deleted file mode 100644 index 0e5860945bdcd8295e5349b56df5d1b62eb57f15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1262 zcmXxje>~H990%~vjAOJdg?dCxQ#zG-a4Y$7P0a19g-S*U$HopD^YuWkTGCzD4l|*h zN>`^Nl8b0vw7R0zI%~&6n#ZPV(H=Ew9ye*jeb+tikN4;O_&ndQ&*$;@{PFoAHu@{9 z{Th1!02ZP}>_xhtrR+XKR)*F5_ejI!(-I2-z}>eLs%{g`6+v4V+D*09*f`_2kvbiX zqo0VH0EZR9*<2oI?U2(DS_UH&!7R++vGZXzmjhN}Jc)?gTRfbbU&>==Wy7EyFAqW# z_epuobW4-~v-6mMJcq|16O3iDkIRCK(|JsglD}k$JAAsFU6_%ZjzoE&SK3{Tu$_e& z={ydblLe%%la?pg{&&8Jm%#-8EFFLIe=MAvm&fG5z$mZ3gV<-5SR5P9WrCJzr8fX* z2^0|)mwim1FqD(Le|4y4*Lk)~n6`}WQxheP-P7splQ`^=@G>ggB~j;9Lz7>;G%U-# z=-}*m%ny5lLJ%ZYI5}Py5?)`%9vJ=nBR;~q^6S_EdiGDxw+~V^6K?{cEOpsSFBq4s zmiKA;G}|=`>V^086;=Lc53RHle8)d@$@79byW_zHfk5DmI%}oS?$3*+)4xr1NEJG< zbu%;DL^C3Dr8f1T#6LJ#<#dAtk;N!90bFId%$8>!Jgf~g%uvE9eU1r~5O=PxlYN%I zn4TqEM5EE1pJPk5*3d%SPNSFa<cmYKfq$xMYinC|I$g$yafsD*Ex2m7M*QG758P`O zg8SfhQ}nMp#7#{zEx-Kr?Af#TdcD3kC^(peer*`Q{HS=`B3@gVGPl!T3^&x*Uq+cr zg@?B`u0_8)CJyz{jdm^)$86>8`<1~&BJsEW{(dL$xB8(^4eh2RdHRXbXpDKXIZkbI zjO2sy({X-X8v=4{{M0H{lJscSixLK7v<xVz29X`Xb|T&mcei@Q`;u{5KZSQLGt8Z) z_L>insrqkephZs)+G2N4kMTfpaj)y-M#qnvMN!Ss`swK-y9`y;Zjf?GGiSodT-(~( zNRb6Dr?eC@nOsz_ExL1Zfx<h?WWE}ys;Zg{CrXP_c5SGQnc_)C79xb^MlF6U*GS*& zB6yp*Mn-tx9};2?l(jXlyWKs{DJ`9!-?%{arK}hj9Bg_tHJd6N-z3tgRKNFkcD_qa zN=niemp`<j-BTzO8OV-7Q?Dz{W3eV>2R^il0kqo9Ed(<BA(2SBwrtrFziG#YwR%#a zv;IDdEWxT*)mhKo?Nhk9d|^H8ithnXsMj`#_2@=zNQ^(pgT{&an6RF(eJ>t0C4Xzp z$B3rzov!47T3E*DCF-1^OX-1e>-m`j9^`-|D-a+MkBx{<)}O0u*;5Aw3zYGmZiCP& zlXy(zU2?s{ihp$WR&oWzy4_QzY)!VOp15LjW~>?*fLb`buibmzj^BXNhBhwQgjwf; z4{~`lEodqy2s?oRZ_ZcV8F~SERx8S<kDR{sn(7XG4-GwTHi{zGr--`IX$i_m$b{pk zmgi%9($LbN=}2>T!z>B)VW8k_jtMqBFY|3oj460!h`&C;W<0$*_2ow2Yt4;&B$e_m z)0OeZ?iEQlOwxwtOtU0KUR15cf}t~s?Kkb6Q4_P@nB6N*aWX3%c4MC|kL8-t(w_0a TMts0l<XZ!X8XeKGGp+nz2#qoq diff --git a/DSView/icons/instant_dis.png b/DSView/icons/instant_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/instant_dis_cn.png b/DSView/icons/instant_dis_cn.png deleted file mode 100755 index 4477a5449749763ae6aa12712b7dbb0cf0d05286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmXw(do<K(7{}ka#2BG5Y=z_2WJxzFOIilM(TtNz*b`x0B4#s}W`5J8<V+mLt#TQf z7&+Z+ED=eHX~-UzHN{3Fx{NZ(r81@+qm=eH?b$z`_c`bDeBS4r?>|poNYGv*yagTr zU__%rp-A7ZE1Vwk9zcJ}L7D-Z8p#E~_)lG-%AAcY5vUK-0x9|mJ%Wk3TRUEJ^E;wM zz&<=Ug~b824KgZ%R>KH_lDLOBbT&+9F#*xQZUe&cI_}3}r*Y`XDKMxvk?lsP@psBe zir1;OFrASEc4<uvkcokA62>|V^W!;5Acp--ryG7>PUjv<jYm`txYOBEh+v!!ABg8L z>C9x%X*s2fp#R^09_LUJ(0t39`(N{8F&Ifq7%a-pOA)50)57U+Y7(gV@c2gnutXZ< z6P|MVeMDeN^e^jv?v+so_W8ot8(rb(2Yc{#czL#YCa<{22}h&mlETb{lq)R{P3&$R zKT6uF#;o$8vWZ3%_GKtnY@G6?-+o6*^3nOICuhHoL8Vyw<(aqk+HBEIr}8wGRRMRx zMf+m;#qve2bpEBMc0Z(YoNVF{RR#G1&Q<$M&v9i5L$$TFLhu^=vG2*l@J*T{PU$`n z`c#EjTw8h~*ohbAq!Fc^@9FKW%Us-OzcCM>Z~|O^O*yIJbLT=|<7wTZ6cmrgv#TB{ zAQFke=EKtJ>W%fKCu${<uXza`zzbWHUa9nyNF*Zvy?YDI#}%#bxg<tO@Y(^CO5}^S z#ZM%}#wzrMLSe9Vbr_$oU5MVwzu(%r=qgB-xl_8eZUO2DM>C6ev$Oa?nJgVUQJ6FK zto5s#z@TI>zi*3l1>>Pl^@px`7gHfiOUrGjwnE7cX9k1uN~6)-x$^gP4(Zez$=VDo zP9UWuiWANIaRUC_+}xdoIJ0xT2~AqmnKmUw=_T++JzwbR5((PDeW1$E-B}EehM9Vz zI}De1frli?oKl<WwtUo0ESbr|Olt$i6bc&~3yTVqobJYwdNgp!D!I1&!HI?GYiwxv z)oR_krI#WumR+=E^Je#tA3tsY8E#54X0#_tkG)0Me+G#lj8%{U0SIPie>(=ll@?Z3 zmHCi8gGuUGQ+yJPsMYFEGcz+^dU|?VS-m)_py1J?M{kE`{<;3NUmHVka6RJe>`d(L z?)Jt`4Xw7G9v&X%ZW0ZgsxG}(cl(Fx5lOn2v?AzwFp{xz9(&qw4S{5u_f{^KpDzvN zmxh)%HM!K8Wdt~op`r2d6QNFJ0o9?~Mn^_&hG(E-FmF1)X}wgjJ{0oZ{e%$a(!C+~ zbHldw-srZ3NO|ANu^XC55Zi9k2FMVzI2y#AWKc--NO^KLM`ey8c=)NY0+iq4_V&a* z*4J}oX|t`6(uhF&{3;{_+akY3%6Y-p#x|F~syjD%oHmGBlAGMUddU{$5NJ&;>z?q> zR$iHOFCf{WqLmUy_v{vV@@={J;M^Ey{BYp2DtNbJcBXF^n!2JFM<f?cx*IVi^4)q9 zJRt6wiuLJ2zg}44fdka4HN`uses=)dK;L?C%mp*k`OgM;%6ngux69r1F4-Osy<IBO zJ}aPxLQ_zpA-OR(S}}Tm)r7xGbiQfaVfUPi>shWIiq#XI1I?~EFqeOAkmgo&rlcc) zL-2asFr6i9uIDnxQXBUZKB;Y^{2o)np&-mtv}(!^Yh#dIg;5mkvm&!aHAog<YcB;6 vt`8O~n-9);y-R<mKKs|%`sXz`$DdYE9p2@WiH$1`$iV<KN)XiG8<+Vn-hx(s diff --git a/DSView/icons/math.png b/DSView/icons/math.png old mode 100755 new mode 100644 diff --git a/DSView/icons/math_dis.png b/DSView/icons/math_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/maximize.png b/DSView/icons/maximize.png old mode 100755 new mode 100644 diff --git a/DSView/icons/measure.png b/DSView/icons/measure.png old mode 100755 new mode 100644 diff --git a/DSView/icons/measure_cn.png b/DSView/icons/measure_cn.png deleted file mode 100644 index 71619a88f91a8ad749904213a4d14c6db90247a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1316 zcmXw(dsLEV7{FhYQoN(J<w#9T3$0K$b>4~$6|B4sGnbU4gcLXNGfRg`u4P$TWEf%F zOv}6^rXF-`DyMYqoHWbIG*X#cHnPu4POYJ1A9eP}^E~JLp5ObN^PclQ@9Eg+NNbDF zEC2x3R0=sBsousgUy0;IllP~Pf)P-XG6Ar3Fa`=-saS(RGl;r7+-z*cYTE!}6L#U* z2Nb>++MWfa^M#<cv6q4%D+obkW@f68Er8g39&o_8x*^=c$anAs$AxTGIs_VQdxH>a z^MMMP45PXZVsn|mZ_yTmbTG!wSNuazHbck+bb-OBTYebM&P?Sn5LF1;)UBlmHaFr# zhLFeRv49#kVZ4Ib$MadjR3?}=6i)uH?cj5{OdbRldZk?mTWQp2Y>2}IH>U<R0AM;z zC2yyti{Z<C#mV8Tdh*+HB7!llQDG8U_eM-yfJG{~`M0n&CKjjLg@NWgbhhLw&h!q) z-e9t9ivIMD`3V;s7E0}=FHzL4vh=Or`8ehVh0Z<5c;rW&lgM<>MuyBq+S$6P`kbuj z5!LiyeN&&okv)X|r-!0$^0D{koJCvV+)$)VMB;Rd=;1;YP;TIK4W)l!1C=oKKkccX zUjo1Wvh5x4&7cpIV{acAxJS7DvpQIvr#&3EYI^wJR1SwTxZp!lv#_%~@{6f#0cSCb z`rJboqme!lU?e<>Do&}mb?d4wo1<AKRu*k6=t&+uq%TB9pQw&$;g-T0Wz4GZS!wlC z&bAd#{&DJ>c5DjWqKnjQIWyi2hYo+P$U4Rt^q-rX)2v^v;C5*mZAVP6QV5$(jsWbV zzm7dIx%u=kszITLt+Z~wu_)z5xa@wMGfOD6PZ`;IUbM8)HZ3GxRX!Fv80VZ%(R}Zt z%(~bp=vhDu-0@{xFQwwuTRf>mcSOB8WmM@l?y8t{E~KQP-c&i2S!;vfv;@At+yTtz zh_LU1OWOkQM~6CbSj)d1Eeq|uX|!|VG(A;oS4at4j5D?IllRrs3F}^q>5@FK2S0wP zsJ)X}x+Nu-ICBzqB3%DN9p5JMT5%ixI!c$MF_60tCtSn1;`eY}b`#)MdcFP7B{cb4 zZa_hTCbFRGT7Q3$W@m~^?9l$ogRzP8BtXDBn|4ZRWxhP3AgXrdn`TkDUZ(P*&661V zYw$hsY#uA$Y1ne7I(~HIXn(DI-Tqgy#XvK8-^AXI{m&*k>MDmhH*z{UBO-m@oY}V; zW$;t|?*F{k8hHbEBivDv8}1@6_F@E=<05Tc$M#s1dHp~sb7eOsqB@prccI31;_)R% z?F=DfxR*9cMR@n=qW0uw7v(bDcI{N9#4J8)3@9EykUA*)BXjdJ@>=q+KB#2R{ty9S z+oWSc`NKeMg7(W9+>E69fOv!dWVzu^2^pilu++e!(Zej&!{3bAOD5i;K4}e|A;~M& z$52(EVi#egF6^eHplslj#6#TH!aiQSP?K5U45AOsCB7d`>bepiL_c{y$kQw%N_Vz; z*ap83kH1kMcc1G}!SxBp8>*TMLaO@zd>yT|fgdYj-2Clj2YK#~ESmNBNNf3BBH?<C zxLA$mZs$uinyprAi;HTD+GUDbq0_OX0Vu{o6-a{Zyf^DgsvW7Xgzu{!q|u_&USiHe zt_N@)ccWf-T3o)^nxbFcl^3L8`RZbtF9%CT&qIv*O)oB-bFq7B-S)`vaod(G4|?c5 U6C%TFkk0^6!=uTKVJRp61M5Rcs{jB1 diff --git a/DSView/icons/measure_dis.png b/DSView/icons/measure_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/measure_dis_cn.png b/DSView/icons/measure_dis_cn.png deleted file mode 100644 index d023a23dd03d2b3354fd458411cc4804f8259bbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 zcmV;11$p|3P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-yn6%RKq#}>vx00007bVXQnL3MO!Z*l;suFOaP000bh zMObu1WpiV4X>fFDZ*Bk+2_Yi@000VfMObu0Z*X~XX=iA30IUzpIsgCw4s=CWbVG7w zVRUJ4ZXk4NZDjy8_YVmG000SeMObuGZ)S9NVRB^vU2y+80000BbVXQnL}_zlY+-3_ zWpV(wz_gD5000PdMObuKVRCM1Zf5|%8|H@q000McMObuGZ*_8GWdQa6gX;hQ00?wN zSad^gZEa<4bO83umcIZ100wkLSaeirbZlh+sP57y000D0Nkl<ZXo2mQPiP!f9LGQJ z&8|tB#D6Jj+IlErTQL0-_s?vhhxX!0l7lz#U=j4tn;-=}^iq(B2lZk-hzEs&2-=<` zc<7;$o!MEowh`mSVCh;^TBO-#cRM@pd6?N`+ce3(%-|Z>FD&!kZ{K^r-*<lR_h*FG zn(YkPYXjn<PoUT66X-Si1bU5aPaqZd0LO6z@Dz{+{<dwq={U|fup78(+jcctCxI6L zVcYiAxO&?VaVxRoID^0}@C@)d&;(9J^D6Kj@H_B6kO36%9q_ho+jn9qCjk!t0@w#U z4V(dnI{w=aoQuXgJLGQw3&4kQl_wDc0dPAS4*_R^7lCgg*-qdNaE#D!Ka#)fIF1!p zc@hLPP>;roz{j?2SAZ`&)_iT-_K(1M;Fn0YhcIqpA?Yl18)!x2<qrA1=qU)j0k9(p z{Yev$9cPMl^t9!P^zqxi4kSh3kq4d+p52-4(hpg?Wh9YC0d4@}(NjgTI`CICZf7YC z+yrg`*Gb?SB|)GCoFoj&WmbdK1q#u)O`rk11q>4wyhdE*u`6+}VdR0RpLv$h^;O%p zgCvZI3fgYMxVdiIw%TON3QU7|6!@O7ml-qMyAj5KZ=<sxHQ8ty0~T-qxXWrwkOX|- zdBPWD)Lxhp(1d~N1J5~*^C$NgtgS#3Hi7|R<}wOOQv!nU+C2{Z5GhT9fCW58n3;^u zGbIoZw!u#j7Noewx1oW5qMuP>=qim05!$J>mgRDJk5VcX1VPuCq8nJ2C8d<DOeS+f z2%#c<o7-kW;J-#Uw)LC2UZYQ-*Dy+>`daC@yDZNP=O$m7kn;A!)+lvluje){Gmt-> zpOjx!O2rG!fT;}+wgxU1a+A|0wzOf~P7Cd4mb~&@$(<umVqd2b12pj}L2d0W`Nv>B zd+dmmi=EOo**N*wh=4elyQHs`rb>1FnO0(4rba%<XD3e2d+tn4b71|QYFEQ`e=8P? z_eoth_UC{ZfqBoJDK&@4W;t5%YO^i1oOkC+zcz*THtt~lCmv8KQKeBkTfVxZ+D-JY z-hai09tfIKMYrsYWG7!*FSgc$Q5HIMB=^aVl>D@HuX#$LM>ktPnJY{WSX@M=%Om;x zSUx{8mX?&)%&mcog?uJ!YCLQqh$pi7(@M?HRJ_`3*REH7rslf0+!cY(eRGSdsU2+? z*MUl@c){`Na|%5wV3)GwlBM<1##%P<KnxfWP-^~3rP(b+Y9W_Dx<4({0=hNc3{v|? zGKWvDU4Lb-ACO(~fLpueD>7^5fq$ZOO&{M10kbsvbNx`D*e3@Le>Cs8Gqn~cQYmr1 z)$-r0m4Eu8kSk1wnZ>^hAmx!o!jJWp7f|tPvp#9I60i@o$)ueQvx>|P4vKS)hJMEy z&Q0YGic6~EzUDTWNvFBw`|4GYOX=aE*Qwuq*H>h^vP7oK50dJC4{QhY3G^EO0?eMs UOLmr@eE<Le07*qoM6N<$f|p2lG5`Po diff --git a/DSView/icons/minimize.png b/DSView/icons/minimize.png old mode 100755 new mode 100644 diff --git a/DSView/icons/next.png b/DSView/icons/next.png old mode 100755 new mode 100644 diff --git a/DSView/icons/params.png b/DSView/icons/params.png old mode 100755 new mode 100644 diff --git a/DSView/icons/params_cn.png b/DSView/icons/params_cn.png deleted file mode 100644 index 86e2811f49cfa8c45504590b009cf3432cddfc74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1388 zcmXxkdpOg390&04n#)FViAL01Cejfnv>YkqvUPGBippi!Sa#7i)G79h6&1xEmo9pC za+Zi=V&;_FI*&sxxuxjLr4prFB2CVcvvr>H$M^erp4aF7{XEb2`^WcUfS-?+#%2uw zfEFI-Nl;XK<wB?__9N?7G8F}xhznx@u%T7CU<Eri7%Nbnjra9ZA6GTd#@a@pi{#(Q zE0pb?#Exe$L3vd-PC@J03i2eeVwjXfHibb48<A!f3fEBj0Y>6!CM7PO4Jx&}e^Tg% z@5&?*l~GeRg+>BS%i2gq2dV4?G05x`B9jEd6W5e+&F{l0tQaa$5oLmUiRh|=5lTKn zWYQ`0I3O{eQeHv*zw=4V7!vrrmhs{L*Z~HOMxwKUth=y9VQR`)FojJefwH*)D*#lm zcu)7>_;a&iy$Q!d3|-&03GO>>GD0N>UA8n28$PNMsA*n)^MvlmaER!#c^3U1Vy8+{ zU^pf}T~qU~{Sve$-izCo^R5bsyIoe6wWrSDSjTWF<%#posR*WvA8+|L5~Al^`^fU> ze8YUPyjec#;vmZToZXkOE~y{Ym$0O|v^f>l<V}K!GihjXYPT#NRn$OhF&5IoU;EI| z@Q)jyV-<_g?7g9Fc-#7g(6|<X4<@`&6eaKPZay*~=at4(TBhpImJ26O{;c{WLyU$0 z0hbVpx!#SDnA6VxASF&fWXs$BjmWcm1Ly74X<spvER!DR`<Y2yK(UIwFO%hnR<(ym zm1JD&+r+cDxG(z5-UzD_&NRz+8moh!uWpK$J3<^lwOoN_fA_kO#b;q!RDjgKXfiKg zQcGa8sw3Ic(GD}YBEC~Hk!#XJSMOTHmDQ-}9mVvv%g)z45*O7Z^<O8S5A=~pG-m5^ z7r!C_T$~AJ6jORU4Lr8MhH7NdaaJ7_bj}M?s3L60ZDw3MilhE&*GAZ{H=w1~INCT$ zDt&!-B700b3RTFGKa#y!j060?ziCMfJBny_xo5j%<De&>9F#nfWjyGN=a7v1(*@&} zP1e)f@t@`(!D+nu;>nWLbU{uCcF=~j<Os!488xfA9a31M+Dm<i4`wW#qvh)%Ve~Ma z7bC{TPOMK(DDo=MzoGuo2{QXZm=T0&fdMI{+aK4gOJl$d4;-dNAH0)n-EeB74SEVk zZ(aPwuxF;c)4JAR4BZ($ioW|HzdyvCiIAv)YS&;VujhYip>h{r$UcFsm!^X0j4#GQ zODGoWQAEYUvRhet)cTTH0&4AO$q8h&t6`9Z)q)Y^3>v6tpEI{xxXIUP<h1RjOr)xY z#=F86v2Zx8H#y^t-Su8CfU;aA%5g5mkzAdg$pv0o0oz2v#|SGwX4gG1U_QiaCfe%1 z63=zTN4g0Y*7Quv%_xTlJRAABgFJQsA!r~rlk-jL|5SGKR{KmP=OHiMJZ>(#?-XW4 zlzLS#Jv{c**G(_)tAo@Nvx;6D80kbj_WWu({R~$rrHU~*DH^$s4+=S9uscI;2;w%b zy~fMEkgoI$pw_28m+9j#=y-b|9CmcS4+ByoqWnRPN!3J9oAabdunn@pk9jX*AT*wC zwsJ79SbXa_p{`MAW6G`WmFa`rv!k+G;<r?OwQE5y9YKr?XP)2l40&b0!<g#JhS)B0 zO39()A%l8Ra%)Hz@Zn!}i&MOr6+~=@?T@8fZGvxigznOAd!HxcE-Z1}BX-v&J-xI~ z3tw9i!Y7Q}n}IL9s^x92@b&XfJ4~=B93YFfbaL5SK9CXD4&C%`?y3rq3M=d>+V4bG mfulAAUHa-gyvbYnhIV*D;QeWGXqw_v0eCMz&nl0o^nU?(TxmA| diff --git a/DSView/icons/params_dis.png b/DSView/icons/params_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/params_dis_cn.png b/DSView/icons/params_dis_cn.png deleted file mode 100644 index fcb8a6115a2f9bab5859f2a4023ee9e55595a4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1619 zcmXw(dpOg39LIk%Y;)V{7>!&ysx`Oiap#mfLoUg^FlMv4ZOzXm<d7UGDvx!Y+o{Oy zj9em7E2A)?rHn445DKS6t&6jDp8j}$KhN{}yuP33`8?0}`4;$kyD2MZC;$MU>`rj@ zlT;IF;PR3)Najnvq#ziCkR$+5;YkBIXP}}ffiTeB%LVpI4vn-l#BI5r@DsTNgAU0c zmCgieIedZyDS;B?Oim&(X$+7?PXvBLY}1o)1u1u;GmbE6F;oy}K=N%QROKgSk|U+6 zE=Wrt1Lo^UgrtLzb`H=fU}_|j41_T@q`KnI;j|=De56EW0`1(^GZGA!;-E-oA}uin z;A+lFSAhM0Kbc7)1D`f>7k_C^^n?U*A_%PU&)=0Wd8y`41LMg+&C+8m0LW>(J3IJO zbKYN!h*u3z?fcWTWio8wsl1q2<J#-IBTvTQc1HUEv}hC-MU9GDg%s@lg4M@|hCkuO z?$dQO*?j^rsy>}dRSIx2i)9n4Qg1K%h4Ki$SB^Lrq28ZgO0iANyoj+eJUD(yj@_5l zKl{>pz0`E>_WJXr<pxTK+DDA|5X={^2Irgqilc*a6>Gl;T`8A#0DkyN)VDwpZSL?H z)U<!^XDzNG*SgXTz8kasG*=dYrm38O=*VF8`{**|Ff);<NHv?q)NAU;{5dk(z2C!H zu4~8f&q5#69RvZ_V{h6dYoc}d6pM-Q-RyXX5v{PxR+ja^1-25MH;FA>BXQMpbTf#` zE9Pqr7PigpIrMBJbmvLW+<eSq+nleZujWqk*SmKT6wFB_yC7G&W(-AC>O{Rm(nJ?( z`XGQK2W4Aj6AeVeZ{5aQo*}xX9`ftd#x{Lg?SV`K3zNLpjwkGZYpgk$@r?e!>X4zD zc7=e&2<61`SNJNkY<XfrZ}3n}zP(U@55QF1S0N;cjSn@Sv9YTw94pk7eeU)71dEv` zxI08M!jYj(8XfFQ&%FsabJ2DNV5Qg^S)o_Lt+$6*E!l3l8xid{kdf_^12-kN!oMl6 z0(YZy;=Rz-uepKScra}{DEEkn^61NyqC+52H4PrD^bVE?bmnYbQEVDT{IFUnBeiH} z^yz8aO@)Z>h}hYvX&oZh9i6K4<~ZsVlz<DXsDN(^Pl?_$F55Nc`f(K+p}%;m$RhpN z%2Uu1+kH=Lt&=&mkx|BhDEoO>&S`R<d2(Qo)BqjWaY4lX-6=!9_?%dX7eE?6S0gAc zvTZKVIQpb89nmrKNRy{-ul-eb@>KU|MXzxSNqf(;oeV^t27-Dy<x)dqV`B$(^h#>B z+F-MH1~?3zgUQSPFjFF3Cx>XPkloxKEQf#X$wzKf(<Z`2_$vP!6SlF|(Q!5f_0}7B zU(fiDcM6SB7vuODGIs`Q{H}U_6y6V_ShX3TpRLzsQj)59OAN!VF+)~3R(0}%N5jPI z!d$*QlC{r5=pzm`t9y@A8!E3GE+WuvFzeqBFUQHXl1l2mdduoqFS49#XL<w+k;Laz zfp?JL3|0`fDK~uN!IfH`xGk=vu}VNQLXYY|N1SeG&4Zzy*9D<xMceE#ZLWV=D0zi0 z&rhw~uJcdd@31(dChoXlbqgote44DU#7YN@AcfZz1a)6M#Njlf8(;Pow5>(kF)j?m zSj3F53w!&AlMV8HVoZCT&f)yEhGXA~-2qGG?|oDE)pIVDK7H`vWR|bj?D2Pl(OdK8 z9oI#o$~`?n4{2eVVV4J$mhf@KExs>x%+gkF!KVAcAj50RfXQ^h1;5&0&tPo+runuR z$@1qqyUR=0PT35;1zT!^tK+6BjBQ$DEZP0_LoFdV&oGL*YVxKn!{}7p>Q1BP4@CAo z_=x{r3daIH$f2gSW;PxREWBBq{t}stYRcl%cd@~RVxDP#%0Cf`v=~rz#&P~=o_CLi zJf$@tZg+`RdEs_swO`TuS(Z?)(nI*-mhXpsHf5cEH_MDEM3A3oU?xn=BG>e(j>x&F zg3r);@aWSG7kpy6TYJ&fA>qD%&mIfZo9GCr=xnNL2)1N5#$}ah4^eJLR2KV3jotM0 z5$e~}I9?U<*Y3A2a99S((MK!}{Bf<2aFh8OpNZtd3?<Lxo8lwmH@RM}rJE&xC*bbl K?aXl`9{UgV%F}lM diff --git a/DSView/icons/pre.png b/DSView/icons/pre.png old mode 100755 new mode 100644 diff --git a/DSView/icons/protocol.png b/DSView/icons/protocol.png old mode 100755 new mode 100644 diff --git a/DSView/icons/protocol_cn.png b/DSView/icons/protocol_cn.png deleted file mode 100755 index f1af4fec243d36267a544397932c5ba138de3388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3269 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 DdL~PV diff --git a/DSView/icons/protocol_dis.png b/DSView/icons/protocol_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/protocol_dis_cn.png b/DSView/icons/protocol_dis_cn.png deleted file mode 100644 index 005d3add3fc9c515a3efb0f8d805f9ff7eae43e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1454 zcmXw(c{JNu6o7x0mRPGyjaW+Bv@w>Uwv$>$f(mUdDXKD-FbOGHM4~i0qG*SPqSmy= zR;MVz5c?9X>2%OhJB?bZs<pJW#8QSy+B1LLchC9m_wIS`p7UOkn~S5o3|IyL0C^{r zJzAKJL?L}xxLy|Dxh+f}3hGJ(04Q{eLM%&9L0t%?XigU$q^1vjr)Z(q7<1;IugJlh zhM?0z$W)-5(}xlwIhqjJ<068n1PYBnCIQMIofASXBjR>sN;H)a96|#s75mN#slr!E z#bHINHjO~U0cKl@AYlb0s$3%DY1gn+9N<ei5b3gCn-d~}!mvV>3N-TS?+UTB2w%oh zNd!_bz*B!Gx`NcV{d8&&4iFr~Fa59Ck%>eci3V);Wp@hMVUgxRpoQUpvX6tO0YEa^ z$sXYm61S4;8m8``@+{V5iR+tDU;MDpysXqZ;aNfhDMR4=GgyafA%n6;z~9;`y&056 z!H~a6pcx?5hg5{pMo%1NW?XB#E<CK67+6k09Ae8<oGXny+PaiKI}_GIhot-Rz0>!6 z+jgyXr*<Q!w($7GQTB@5#0N>XLyqmE0q9Et4MYRidRbc07c)_%XltelvXFa>X=!H0 z9bEJVibrH8Ha0eXFDfcp=b8K}H-oSB-irwg3~Vm#3VA9Av@%V25n_B-UJkE88z=<F zgzDI1#EA?gGDAH5JS^X(*B(+E-+~%5hQrm!^<piZoj;NIk>rwgpDK=uOycwWlT=l9 ze*SCOHu+`AnA6~>qfzqXn&0nBeb%f2v*fJ+L)@9XP6!kc0hzMP=MCN83pSlptV|(x zPxCBn9i?smH6Z<Y`<IAzka;!+W~%oF&j=c7=jN$>X2ybJLKf%i>bmxiz*bRuHXkLp zr>G&xJcAi)ZKWFBMZx~+tLnS{OxN-|=G&u>hYx9~t&GcRYJkCCw4!VRI?(#Z{0nk( zo2CZ?>VtJm#=ZGy>49uwZ-al*fra?Wm;K>X!U$6~Q^GtaMY9YVA{EEr1rIl>xQ#vi zR6nZ^V3v{Ct+jHGA39<W_64^;PPIQ?+i6obZ#I}8RS>Uw;zeDGEOIG1UpOTF`kY{I zGN~CyzLg;0WM$`MwL}`_RP7Z8_){LR1b(LU9m>dD7L)GoOn1~hrxkJaB!0Pe;{!|* z+0Wx9U-Ls0RNy-!H5?Z>$D;|Ae?{3Lot|C)5r3T(4uZ0VW3Knv5TS3cq(Mtgn~?aU zOx#3C15uXWkcfjSI(f4)qE3oeq}`}n{5xDIOsU^fMHsU2T@Nsu_)OE-l)ARi$cfhC zw9;+&UnQITE(J3)c5Zge?@}Ht$2Ujc2($)ar&!L~9-u1d(1Jm~-|7}<#B<$~-*D~l zt@b&87`LW1O;0f(w>b#CKl<KP<+X&Ze`fcM1PDc+aN$K3Tw}UxzQ->5tZry?GX4|N zkWp00%DFh1ac5%8l5GRmpU;4Cv{qH(-892B98bL1ldsN}a4$%QNC8IZb$3vLPtpys z$1|9F?>v<o`-w;JZrw{`uQX6SJ{<JW0yyY-0)5oEw-<q7cm)zCold3PO~c!$Df<^r zDswUz_p<3QtWmt_dV97Y)9mbCobKCOuTnLS@4i&6CGv|6*WODz*p6+~IY-53C2xUx zG|PuK;H+*I5hHPbBx*5gZ*a7QrJt0$ZF0fT<_Y;xX<jUZ)8P{hn|2l+pm=hia&FSA zrg~AVDYI^Z;bLCke`Ku|Jy6y$GP&HJIw!}0W7>4OOYx~Pv#n`HWW`Xj?vi?9H2;sG z5+D)2z^^cuic!*|uLLN#ao2V|ZBcpC#%#D~C<oiZQRz@Ov7lV!6wO#nHPaI9&U)TG za8Nnx2;szD1#zb4+2SXRO*V_0z=^h7R^J}`fq2K$>KVng6w!|iI61i3bC3Zy{{ty3 Bmcjr4 diff --git a/DSView/icons/restore.png b/DSView/icons/restore.png old mode 100755 new mode 100644 diff --git a/DSView/icons/search-bar.png b/DSView/icons/search-bar.png old mode 100755 new mode 100644 diff --git a/DSView/icons/search-bar_cn.png b/DSView/icons/search-bar_cn.png deleted file mode 100644 index b8a249e4352d7a09d6742fc7489dac78701cd31b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1580 zcmXxkc|6o<90%~9agO`eGFrzVw_fW=x-gSD9Jyj7M`JMM7-Os&jbo!!YM4;MI-*EB zNyb^tlw(+fWOBtKSJsh5BS+27w6Fc+`+Q%o_xJNWujl#axqiysMNV2%8UO$}Bm(9o z=vKm#k`SzZpzUjd1|}dd@c<y-E-aBeQ+X``N|KOnaLGw=H3d5pRuahn2f_VGjtQj5 zSRznO=O6?mOA-(a7mp?42_$@M44?wm)fc$5(4Aummx%a?ND}Zwfpb`(@;{V_3l&Cn zNcd<RV6&wF7EHjxiFa%`DKV6Y1I`lo!nn+j!}0Ohs8B(a2sE<lsREV~vR^1M1|Jgv zu(aldPmug?e*zJU1HSODEd3vIj*X7S#gG6VC!Z-W31Q3!Pm00;Rjcoe06=UD33K#` zOk44fMU3Mh{3GXEdvAqL9N2yKGBWMyeO&E!`MCOmVa8w=rhs2Xs7Q=Gxz9G;`3-!E zY%Ej$Iw)O6wi9$l-YXPN>;)e*;TEO1kCFO{7oz|Eys^@8bU3+Xac`pduan7BX$$<% z8<$>9F6>fPb2FzrPkNPu+ixU@T<>g2h3Oj%$?;YvT7P1l2C4z65KUGuolYP1-wFbk zt7jJ$w(2@KIMh6Uz99$ni(ZsY1&8coJ?-u7JwC+c?(H}F9qkN@x?5CKWG*Ty>VgO| zymZDaWM8A};3k8?SfPfeICStpcY7EIRi!CT>sJl6^z2WpN6;pqd|mrT?C-}YJ0!<| zfPnS$;Mx_ZNAAVs?rB0(o|i{vmo{^fpMXZAWl~K6+wick7eyr{!SXEe5El%l;DdFq zDX{Z#`AF!9FGN=2IJM~}{{H0r>}=HY+gew1NWA6Iv(S_Q3meBej#XAgdh6SQUm|RC zHu2}2DHKZ5s-2~cjc-C?BD25s>l>>qw;Ekm%zgx@7Bl><va)h!t58)|0+*cpN|IIN zh0=wT(H?BwnFEie=|D_GLeS36ZP*@8!bgk6>>#bg5oN;47{lQq{(D(rzxE-5PQO)F z5^s(CvKoWIbfBukl$zzHJb)V7NEBR`%ErnoD5Nw}c6q~jUWLHr@qvLjMqOQ<49hKD zq5Xid@ulHug6bmfo3^&LhKq~K!bgraPzqbdG_<trEY8o*TZ%wHrGTu+S1=2gUZV08 z=#p52rn0s-77EEpNtTC-`>ad)x7xbz7|kr98dO|RHy%HJOg^Y6Ri9Hd;2C~<*1B5< z>3tVZD{*smeR0^vCLwKhip%vWV9$(Z*IJ!7pPQR=pa(O9Jl5@K5ALs-)BKPPjg5^d z2qLxbEw?N&x1yC!x3HN8!NlNjxYl^g7JX=F$Qeq_-eWCn%r#G}Mhp%PdLz_n5H%UZ z?RyUw?a7-}s3zb-H;3c;Cx;W59gRkz8pN)=Hi=dXfQ?Iufj+-~|Gx5wH7MUCBO}9D zUtj+kl4n`heyDqFhD|;G{gjNNlB%jI)Wh99p9Tqpp34f0#$vJD{wy0M9lfreo_J1Q zU;fggEl{F#hSSeSHwAaw<*lGKArOwy=mjN0e0X?g((=f&s-T(+CMRHowW-&$Wo2c< z^#+~D<bdE{W`eJ|Vyvo$hS8GZnVB!-#tvGT-)629Gjn*q=`^p4Z&`1lGw_uU))|GZ zD<dN+JYc`lHt#&S$O?EA)EYuD%j^I-Aa@KPCOdgv{lG;wt<(h3f{@UopsM34eex}4 z@|#6y^eX?6Zc%7I=Gftf#{)wdEaFh@g*0Den7YQ8_OsNOU1YMFeOz>!Ax0Nr3)k0~ zN1N&8p{m<jMk{m4j<8O%nL)kvhRn@RJaA>Ma*m4Ly9extSly5hpwk)w^DxuR%SPR3 zG-vzf?CQOyKYUX25Z0cENvc#FGjsM>q+6i4zj>*6m|1*XveIa?*gpt<A(TzxH%E%M z6D17+E^36$98Nx4&3@&HlKVuC3rmw{eAClIRiCc(Y1u!<Gz?X3vdh7E_?LtamT${A z8Fk0Ee9xC}Lto`KwVr}1L@MX>>;)^=8CtkK@g6o+Z>D_#0?E{*@koR5p%ewE<`PKx bR*DFyWFL0<1mn8kQv{H3cNpC%<hOqTs1D8V diff --git a/DSView/icons/search-bar_dis.png b/DSView/icons/search-bar_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/search-bar_dis_cn.png b/DSView/icons/search-bar_dis_cn.png deleted file mode 100644 index f21aa2d45fcbe5c08341bd938d4c923eab24a853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 V|AC}Y!uTHvU}xoop;}<m{snD^bb0^) diff --git a/DSView/icons/settings.png b/DSView/icons/settings.png old mode 100755 new mode 100644 diff --git a/DSView/icons/single.png b/DSView/icons/single.png old mode 100755 new mode 100644 diff --git a/DSView/icons/single_dis.png b/DSView/icons/single_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/start.png b/DSView/icons/start.png old mode 100755 new mode 100644 diff --git a/DSView/icons/start_cn.png b/DSView/icons/start_cn.png deleted file mode 100644 index 6052468a62e254135ceb649558ad20497a648a78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1401 zcmXw(dpOg37{I^IPTR~q;b=Oc3x;ANm(;Z8)@c$RA<C@ThS_XGZl&A9baWh-<Sy08 z8m8Pj=xisBvoy-B4n-nG8XnqoQO<9j=e*DJzVGvV-p}{@e82y^d_P|=E!0L706@#f zo9GX9J5?g#P(AY9$4scHv%N#O0BCoqQmxQh8x27O&xhoJc(Kkv$H^*$6EOJ=c?9$J zCGhAh4iMDKydk8?gAkF*rEnN*9)lGJ^wrI_Kpdsw`&sN{4ueMLfm$7zD@3)wQ4W=? zQcZabCKWiY=%_;zb=4$*6~#*;bEqJky{6JNzFp4XQew%F$^osCre7e8RN*6JP8=hS z1|;a$sxKh^JD<RzP=R9Y+}!`#eioBSjpG5O?6MeQaFrIw;Kfow&HR7`0N)dRi2DNR zXXICy-bau8@b}uAT66DqY4%@Od01Nu#nNYW>t~1KZ!;6^tWwXo46!CNbL$Rw|Dkz5 z;?nGDlhM|5E+(Zv|4t%N#!PP4mqf=jW9W*Y=yI*0w`sFOA?X$A|MVh#9h_FWO<y65 zIEVVu`_?L#-QJXi{V8*nN`o~X|Mc9wmXFSIjE4mY6@l^b@hy6h=4Xo&!VL@zSeWdA z@u8tt4bS8jitfRbS?vk7^NuC4+m+JN&(CLhh9PxND2VQivA9+oPG1j)v$eGyQ=W8N zC@LzV(Wult$q|~dOeQlPiAJN-VKCUVcIFf@GICPCAIr83Z7$5s&1E)@_|i_C=(t=_ z@l`M!eGlv4@c!mYm`4npaI)j>U1xhNcCub5Otr${1|N@PjcT4}OHW|SvBd`k3<jgv z@ZycmX-@c3%DvW4pFZv4A)E;0D<(d^zI_iKKHOcNpHFEHwkhIrxqJ3jF6ivpw=(FS zdowRD@0b+^bLYnO>uzs&uFpi_bDN<^b;hqPvU>ZKSK*0g3433Zmz8~8ynkW9$lMqo zL^D%!|6={&gK^`>E|<oU#O-<Rx7}pw07s$ZA0K*hYSq`v>)auvSreS^p#>zPOG`_I zB_$=I)l+K<KK~hRWxhAob3I+GRV%8iQz(?mWApFcy}Kn6iElSF=>EEB`k5L5J(J5} zvm4rl!Z{1k)4Ao3Y3SkM;WpSp<{8Q2B71FSW=1Ej^|Mjsqm`;#w|ef*^oM%#>FH2- zA1+AJK%p+7lhcs*s_kJ-ZEdb~mOW0ry}hKIoSeacfPm8;WD@|t?#G_Z_dfuv$HvC+ zEiEmlo(>LjI~P_SwTJB(Gf&!9#u&}%={c|)x3jOWFC{cIbR1)2llCKAzLU%tj4{RI z#S(eqX}_Q#Wwl;)^Tx;J1c5;CCA&I|MW+X22~9y=$HaDk*wBe4IFC;5Y>CX-4kH#E zB3kb*TUbNr71lf|(CtU*O(Ul48jG{$_50JKcFl2gA7D0^SJ`%j@i85VrL&`Q0>6gj zsF+UVhBkZ1ZHPoKwN=dd1_3E4%Mwf^nRPvsg`p<aXT$<WA}{EGizuP2#yHo%54S9o zr5Q+Cqq+7OTwr?sgKHBWCq`8HFFU7Pn1|!=8WYG2GN6H4fUJ2@h%$&$0%-t^v}{Tq z26~&eRhPcp&=9KO#Gk1ynGy+Cn5okKdfPm6?Rw9v>)HeK^bgmK8X}bz)h(N3^TE=W z^otG`DhvrG<HG!cJN~4?z-B?Xfgxb~lPU+0jv%Wlt9V2v+ibslt*VNxOE8IgU8&}F z|FkIZ{k7yRl-EZISySNcjRLWJc(a5ibCb$gU<R)1S1In4b)-8EWIx&9s$(jVReD=> zhAfT4?bIh~3zkx?rjtRV=Wl+i4jW@8;gP*~<Ad(koQH}Up$!9kJba1ugov~M0_M7U A2mk;8 diff --git a/DSView/icons/start_dis.png b/DSView/icons/start_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/start_dis_cn.png b/DSView/icons/start_dis_cn.png deleted file mode 100755 index 86531127d52e8fdac86fe3b8fe1ef02facabfa41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1495 zcmXw(do<K}6u`fXyw;%9DnporNJv>p5u@?Sb7nmgF=GZZW5<tnh+!KBl{Si*NKB8> zdN-cU!E7cfs>w4%<rx+$dF^R;cBVc1$Nk=OKKFC)Ip6y|=bP>AiH0j{DFXoDt}ZBF zNw$!NqP*nvm)&AYl2V*YU_1b-LTSj{G*v}NpaSH2##!OL{B||XJ;=r1V!k2g0O(W# zM4(W?!|EOv2~vS12!)G}pc3OCB83bzl=SyWxU!TxQQ~M+ViW-am1;e<5~})*QgPu@ zRSzPPaNy{Mnv$fVB(3;S@X&>DDh`~D6HE2)z6~eFN5qCpR4Ql^)L)ZeMJe_Vr;>@} zC?G)0NUxyqUw;BM0teQ_mlpoloG2s`jtqhIo`QA>lb323A{2`Q<x9Or0LXD%QKvA3 z^hK5r!7plOmzZm8-00hsi?_DH$Hd#S+~>0n)_NCf<k(s}5Br$~5SZq{A}0LeO1MQF z%_UHwE%shNu~BrOK4$jDeZzp>OzWoH@oudu>-_o(92C_1xSz)i-G7Og98b}b-)fa> zD_SlVi%V8hHu#0CJ>n=gWix@XGc4l)p;WXJ{&sO)hpDDJj>}|)SahVV3bQrtG&D4% zKwmdkqODMK;kVy_g`t|JfT}_Hih;j6m&W)cGcz-Pc?AWEaB{`IN4<GRCfs86{m8QW z^z^iDV`Jk|g6-{D1Omaw1$th|&HV=#GQ+cs)w|pU+^k6>n1w|C>*kPZST<^6VP<A# zJj~)}3YkoPE)4Oq>=U%ZYJ!`(@w@@@*yFYGr{}kN$xR#GkG^u}Xg#VdouaH4KTyU) z=$}Moq(g-j;xBW3v*zd8wA*N_4~PTLxar(uZtm_E`uqC>OiWGB@rGmVX?7(gE(S<7 zIQ+z6?RP2}756GDEB`pd?F;0`&w8RsB+{MH#U)i{M>|64ae;ivpHDL3i1ATgl-F2+ zS#WevP*4&YO~)?3Ye}I;M@RcmY8`h=p0)Pn$GBq1MjM^?{2?W!t;Sa7${ZY1&QlK` zmP_j~{jmZ^$KH(W-tS#z0uC0rczSpwZfu+rr-qeMA}2d}H$1rst&`usa7ao`ZF|4G zLEqQ?Su`~@HYF6^_BfP2I3jp5F>xMKFx^HtqNOZ<scvp=u9#sTUZoOQP*Bi`#kTIf z{4_NSg=}YZd_*rUE@r}NGSd4uH#ftO*A){J63!|yJ06tyuHw_!npW&9wkJ-c{JyZ3 z$Z#yX(KTs#!t11pU1&f+bCHMP@tV-qq&hBlmW;g4dhN6q%<R?!dYm0VEtARQJC=#I z1r|iSAwYw(tL$GVhFL48JHZSdk4HvCL}<d&9b&`6J~TnLf4`MWF?BrMesyqYsJ%}l z^47i9l?+Q4!1JLht&Uyg<>k9Q4D+4R9l~CzoJz6`Nq6-7T8kw>RWi;#>$1%#)P2*x z3)w{sb)6iJHcX`YAw^$!6nJA3j$5HYTGn`;!Ca#1h|H(TH1&yF>Kqk^qgGs2OK_e+ zo<TON#Z_bJra`u(d8B?w#!ioueK7tcz=70Ad?4TQ*!8Bn434q6>?S*FzP>CthjR}w zvOksLn-v6yK-4bhVIu}>pvZ_4<Dh8ijzZVF(b&V6r@8B?Ko4oZeawhs`*MogGWC1` ziJ$SWduMVN#DcxRg*bHU(MSzKFd8%f)y>Ze==DOk2{eFYZD6H)1V&&<Nq>C6^fPVh zi(c|0gp7?5!{+`~oqb4qt7Kkhn;s{>$8KBcPQfu?jkIOyTx07ZV+wnns?9JBx2iCT zKjpBCvYv6^YqG$K3oud3p)H(bO<&1E(q1?42l*p36y`-wA+Qtnd6{&+!AkddnCF2q zk7!9L38q#JjIe18wmpc`ad0c5yJNA2NcyY!vi1yB;DX!OQog7XrY$(BFTCKG1p`a$ kVaKO^gt7x##z(~9*((`4ADvMx$^Qjhojp<2j$yz23pgpDRR910 diff --git a/DSView/icons/stop.png b/DSView/icons/stop.png old mode 100755 new mode 100644 diff --git a/DSView/icons/stop_cn.png b/DSView/icons/stop_cn.png deleted file mode 100644 index da13d8481798454b9dbd278590143f710b8dc76b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>FdgVpH-CKTtlxkxdbfa8d2g{T9T1p#ISPR84sWkPYF=SCAB!YD6^m>Ge3_(m{U<1 zD9!~Ecg`=UEXqvJC}CK`f5r+Z$_ExLN=*bQRVc~KO=U3s&d&*y;RMM9=ckpFCl;kL z#1{MqDdz?oo>`onlL%B=#IXIqmVTfx2S_+Pu_!MyFP-6l^fQnb*dh8$i;`0rzW#51 z4O8ZvpPQSSSHke^%(VSLF*cC0kj#>tRE8DrE~zsxFmZaiIEG|2zMZ+hE7(!w*#7ql zw_ZePXhcUvab!=-vKC}omk^hr8<V8{gURl|J}0jG3cDIb>>8X7=|yBH<~+CekTTcK zD752#KlSu3mG9?bB$z%oXX?!~eqNr=XI$>&8Ii72%Cs@1@d^aRaJ;?o`m5QlyYFNf z#FdZzx0UO^&)<Gnej#HMtJU0dZ|nBkGZZMBur<8jeDjTALpezNL;26#345fZ94`60 z=sn)LzENkwEHt!Lyu;GZx}kN+<PM4D42$xvHL<EqK6(6L!UvWEOFKT+`!2uCFZlPM zRd}~b@-dEOetFsP%#jMFK-9~sa<}Na{=0qgcE#UoJ&V5I4gGuf@4Vgfcl>s|yz#uU zOM>(PQ3hGj2{n8SD)H0K-}!st?)t40pBPDTig4O8f8abYZ^`0CvFVLVCN5EC_<lAg zZsx|Ydlgd{8rW5~uj2Q}n>Z&lEqVFTKVd<?H3BPts}>vYmbNlDDJvSicFB5`?VfVx zy}{LNXL9^LZC#SjpvPRXT6N7TM$g4XH)q~V^Z3-u!qD)9o8j{3Nh_2xMJD-hEL?t( zwP86!+|<(xx|XmuxVs9n-;cYl_^kTDjWcGA^<O`-9Y{B>zTuT-nwhGu_fL7pO}912 zJfd!{0(vNNfvfczk$3NI-q+LqV(j|=zFnaD_CJo3LBVN%^JPWptV2hufysoy)78&q Iol`;+00qcRwg3PC diff --git a/DSView/icons/trigger.png b/DSView/icons/trigger.png old mode 100755 new mode 100644 diff --git a/DSView/icons/trigger_cn.png b/DSView/icons/trigger_cn.png deleted file mode 100644 index 8f98b4dd629ef727038a2e1be09ec920c443df94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>FdgVpH-CKTz%iEx~E_v*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS)Urf!V>+#W5tK@$HQB-BUv)j@#ci zm*hOw#m2QWcaPv^BaM~YZths=R<d}tRA!*SmI+-Mf*NbpIesy#bUEDOxLzju_G;kt ztWynD;(-QV4mTRk&+oQeANT&u*V_BP`#u|ese5?fY32OlbKk4aeV+4tj`r=G)D&Og z72RPDmor#RdZCoAenRxwf9yH+3_1SEy3FE@{;F%QsD`tZvf8L-&VO6qpz0}myFXv7 zQbX~;x99`w1n0+3WGUdWNd2v{;qtfV2j22N*sk$%wo;Sp+a7KK!S^@r$qDWk`5ETu zGDrJScpCe(OIrOcOLDiVH@N5MGhc78KG1BvuK%`!`=!eVf+iN<mD$1V>7}%eDW7S( z#QQ1HY<A3cnveG+G6}J)@z}+9WJmLjf1B65|G$rq=kNiR3ygU;<;+{;v|j^N<VZ&_ zmfil>cvWScj>Dy{x9O*TiE~Z(;xe)SZT;mV<tnyZZ}hwqj?DRa{?N|TGK=Fqqqa}D zSr>Up`oQFE)(4inwJUH6dh4W?x$(lv6#*h!%7YL7)K*%z{C;|NU*yWGXB+S5{6Dkz z^qutwTyG1{E|s5j+kV?D*OdZVySQz2rgZk{?q^=xu<RmNhSXG6mm@x__7pdl-M-uL zg8vqK&fY8Kc3<aqcC74(=;-+AE6N}<)kO2<>p5pM+;8u0kUg-pV+K<k^Ew9c20a7K zmx~`BUD0Cny;sIr+hTs$hov1a)_+!*-`%m3ec!G3-{U=$Ru`_;SYV#?Xy4n%nlW}h z+kS_cDpk2!o1J?Uw)aeJW_8r1@@?N$qL;4-R{FbYiRXjk54o~`mrP6jtzE=;>~!PY z1BRZPC#89Rvz&Dz`FDp<&V0Z7`{kRDYiYGz@NtRpdw9t^H!*~7iQVVsh0~7zI*@s7 z_0hG98caQR`thCN{k{DCT}DH7_WtWuOsk$9_`K~r^L?i3;^b+m`nTROz4v_Ob|m#d z?Slz#_cv}=jb*m$>&WzM7e46c;*%Qr&D~Y5JkXSVS>x;j?{_+0S`)tg<*Fq%_VbwI zrkC(p%t*cI|ML}dbwhe?z2ZyOgpH?8Zea^`)>uD>`Qe6T9IE?UJ7#>^n{~&3x5=B^ t-jCOCE;qX4Wvh9c{j9T#_JYhm>^zd^FK*cwWCF}x44$rjF6*2UngD((_3Z!v diff --git a/DSView/icons/trigger_dis.png b/DSView/icons/trigger_dis.png old mode 100755 new mode 100644 diff --git a/DSView/icons/trigger_dis_cn.png b/DSView/icons/trigger_dis_cn.png deleted file mode 100644 index e17bfce7150364663554979b53aaa7a5bc6b77d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1453 zcmXw(dpOg39LK-AFveWgWg10WsdE-nlyZdlY0TM<dm@)LixtLfxo4%=NO4Me9Ce&g zF3E|ONYh9PQ*NcFj!VTVx;SnNm9zCc=a0|#^E|Kj`}_I4zyEwio^%QZjYk6jFz#-U zx2jvIOG{IA?t?F6shW1I+x~a}^xD(~D<J6^t00Q!PIE<#Xspt=HSg%At8^7|4dCtJ z^CCH1P+22)Qz2b7f>`lPE<2XT=EQ&%+Utobj#hIQPHYmF9TCX`)%tQf71jGexh#g- zYQ|$nv%q$xzP3uyRx3W7L%akAmj!}jm(_NiAH&)4%qWJ+$_2M&lCvtTrN;Xh+!%ID z1dtgk)KB;k&4<J1GFf15Ib-sFn+qp8niazX^YRP#R7_KS)tAkSVu6ZJeVYJ4Cb~m= zd?Sy444_3B`x$&!d|V`p5OoC4BI@SbR2sGPc{@r^l$}@Nojjodw}tZZ&{*m&kTncP zoooQu*F9R=bIyd8e1&JnWN;H5kAq=*Tzod@`Hk6i)O@`3D(siIKAZU$UY9)6f8Y4I zUpXvSD!S#(8x33HGAAU6k780u|2y<Mn>%p3+!_J>&2ya|X`U!@@Fv3u2kw#x$0q`V zfPd?&sVpLq_`qdm8YE(G;0V*YhEil$hVU6o7nV2?w@V)kykl7wP-zGwO+i`%*`PPc za6!f&GUW#^!(?Uxj%(RKeLR$a6}3Ih*x3z@Vg-@>7E0Www=)Y(`EF%k6e&2XKbqV^ z1JODGoD-!=rE&=t3F@ISGJy+|h{Y#6y;A)l{EHY8>ZnE8BvM8uq%Wp6&ww3kAO3q_ z918d7mz)(w*8kKLg0ZopL%t@aruRIce<tiY!ncJ6|Gi$>F@eZ+f(V3TU3Hn>mA)R7 zNBkiR@U44VpXStfV0G|d4rJ3QcN7UHl}o#I!W3d*aa4WwcH-!J^PS_V4xy(Zf~CMf z(Cgn-;a&AT-Q{Js))(y4z4iL9L5POI8Y3g4g9-<r1gTlnT~Rs^uYCQ(u80C@Q_-*H zBLp!Atc1cZ3F+`h8?d4ZN@&pDAU~n-`>Om<P;JnQ7i<K!+{WT%tKuV_Sw{)6E2ow} zBPel$lW`x2J*#@yJPjUxm~3+G*-5rhl66=A+#7k<{i}@Xr)LM-bxBPCG)i_w7#$i8 zEYMaQ*uccItuOtNQVqWltxVHw{ZP2?$Yc9#kJ}zkU|OW<Z|%i7JLPXnB#zGI<EzIL z3)eF&afg&KnK+vdZF6a67k9ixv+kD8wO@5UGe<psD}MLZk(Wmg$LEtSE<{&2ea+q6 zXSLR0%DdUR<>LFCGg5o;KpGitKZK&TmV=W+xdU@>AgE<GhLS*_)fdt8d0mYZg>T#p z4JW|oJV6wq1l6o9J8Oytl9@iWUV+mGl|9H}%;7(SG>WIQtT-2EBY~bti)U$4-C<gQ z@uv+kMgoyPWOaH7X>p@am>WE$NY)tUgpcXH*ii#4O@QYkn<DQn;}WjqHM7d{=R)tr znL+y{uTu#y@wXMauWm{WW22YQKsNlf^#Pq<F^2hVPvz-@>&Cq2r6w~^$~h5_)mtR8 zgEUXl)cLmJ?d7J_&MM|g-D4Z;cV{?#<#zwIw)qb3G$nL^b2S3Zy6opLqTF0y9-vbe zwA=2bLYkM(--;gZnnm97=z-_JFga!;f%f@Ect;<1e{s-#|Guw7fd!(1ZK22k#C6;G z#r;>luM@SCQ8rt+m9u!nCNul<%rg?A%m-O_p?1_v&=7Lx(1kP{B6hT)@CD~`-;x8S z_Zi})snpQ;%9RPPq9NnlD%msAIibmyYp96s_knM#d44YQN1RpBG1liEZ>7{X)iP=< ztQ}|L%#N(l$z-@)4@x;zu4UqCpG1zQU>=6Z(uEJKvQzdvp{RZ(;O<I?YMjGP{0A1! BcRBz7 diff --git a/DSView/icons/wiki.png b/DSView/icons/wiki.png old mode 100755 new mode 100644 diff --git a/DSView/pv/data/mathstack.cpp b/DSView/pv/data/mathstack.cpp index 363232d..0bec787 100644 --- a/DSView/pv/data/mathstack.cpp +++ b/DSView/pv/data/mathstack.cpp @@ -36,11 +36,11 @@ namespace pv { namespace data { const QString MathStack::windows_support[5] = { - "Rectangle", - "Hann", - "Hamming", - "Blackman", - "Flat_top" + QT_TR_NOOP("Rectangle"), + QT_TR_NOOP("Hann"), + QT_TR_NOOP("Hamming"), + QT_TR_NOOP("Blackman"), + QT_TR_NOOP("Flat_top") }; const uint64_t MathStack::length_support[5] = { diff --git a/DSView/pv/dialogs/calibration.cpp b/DSView/pv/dialogs/calibration.cpp index b25b7ea..f9e7995 100755 --- a/DSView/pv/dialogs/calibration.cpp +++ b/DSView/pv/dialogs/calibration.cpp @@ -39,13 +39,13 @@ using namespace std; namespace pv { namespace dialogs { -const QString Calibration::VGAIN = tr(" VGAIN"); -const QString Calibration::VOFF = tr(" VOFF"); +const QString Calibration::VGAIN = QT_TR_NOOP(" VGAIN"); +const QString Calibration::VOFF = QT_TR_NOOP(" VOFF"); Calibration::Calibration(QWidget *parent) : DSDialog(parent) { - this->setFixedSize(400, 200); + this->setFixedSize(400, 250); this->setWindowOpacity(0.7); this->setModal(false); @@ -55,7 +55,12 @@ Calibration::Calibration(QWidget *parent) : _exit_btn = new QPushButton(tr("Exit"), this); _flayout = new QFormLayout(); + _flayout->setVerticalSpacing(10); + _flayout->setFormAlignment(Qt::AlignLeft); + _flayout->setLabelAlignment(Qt::AlignLeft); + _flayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); QGridLayout *glayout = new QGridLayout(); + glayout->setVerticalSpacing(5); glayout->addLayout(_flayout, 1, 0, 1, 5); glayout->addWidget(_save_btn, 2, 0); diff --git a/DSView/pv/dialogs/deviceoptions.cpp b/DSView/pv/dialogs/deviceoptions.cpp index 970bf4a..74f8f55 100644 --- a/DSView/pv/dialogs/deviceoptions.cpp +++ b/DSView/pv/dialogs/deviceoptions.cpp @@ -45,8 +45,7 @@ DeviceOptions::DeviceOptions(QWidget *parent, boost::shared_ptr<pv::device::DevI _device_options_binding(_dev_inst->dev_inst()) { _props_box = new QGroupBox(tr("Mode"), this); - _props_box->setLayout(&_props_box_layout); - _props_box_layout.addWidget(get_property_form()); + _props_box->setLayout(get_property_form(_props_box)); _layout.addWidget(_props_box); if (_dev_inst->dev_inst()->mode != DSO) { @@ -118,25 +117,27 @@ void DeviceOptions::reject() QDialog::reject(); } -QWidget* DeviceOptions::get_property_form() +QGridLayout * DeviceOptions::get_property_form(QWidget * parent) { - QWidget *const form = new QWidget(this); - QFormLayout *const layout = new QFormLayout(form); - form->setLayout(layout); + QGridLayout *const layout = new QGridLayout(parent); + layout->setVerticalSpacing(5); const vector< boost::shared_ptr<pv::prop::Property> > &properties = _device_options_binding.properties(); - BOOST_FOREACH(boost::shared_ptr<pv::prop::Property> p, properties) + int i = 0; + BOOST_FOREACH(boost::shared_ptr<pv::prop::Property> p, properties) { assert(p); const QString label = p->labeled_widget() ? QString() : p->name(); + layout->addWidget(new QLabel(label, parent), i, 0); if (label == tr("Operation Mode")) - layout->addRow(label, p->get_widget(form, true)); + layout->addWidget(p->get_widget(parent, true), i, 1); else - layout->addRow(label, p->get_widget(form)); + layout->addWidget(p->get_widget(parent), i, 1); + i++; } - return form; + return layout; } void DeviceOptions::setup_probes() @@ -177,8 +178,8 @@ void DeviceOptions::setup_probes() ch_opts->setChecked(true); } } + g_variant_unref(gvar_opts); } - g_variant_unref(gvar_opts); } for (const GSList *l = _dev_inst->dev_inst()->channels; l; l = l->next) { diff --git a/DSView/pv/dialogs/deviceoptions.h b/DSView/pv/dialogs/deviceoptions.h index c2dd9ee..6de30d9 100644 --- a/DSView/pv/dialogs/deviceoptions.h +++ b/DSView/pv/dialogs/deviceoptions.h @@ -61,7 +61,7 @@ protected: private: - QWidget* get_property_form(); + QGridLayout *get_property_form(QWidget *parent); void setup_probes(); @@ -86,7 +86,6 @@ private: QVector <QCheckBox *> _probes_checkBox_list; QGroupBox *_props_box; - QVBoxLayout _props_box_layout; QPushButton *_config_button; QPushButton *_cali_button; diff --git a/DSView/pv/dialogs/fftoptions.cpp b/DSView/pv/dialogs/fftoptions.cpp index 3b08406..d1df974 100644 --- a/DSView/pv/dialogs/fftoptions.cpp +++ b/DSView/pv/dialogs/fftoptions.cpp @@ -169,26 +169,34 @@ FftOptions::FftOptions(QWidget *parent, SigSession &session) : } } - _flayout = new QFormLayout(); - _flayout->addRow(new QLabel(tr("FFT Enable: "), this), _en_checkbox); - _flayout->addRow(new QLabel(tr("FFT Length: "), this), _len_combobox); - _flayout->addRow(new QLabel(tr("Sample Interval: "), this), _interval_combobox); - _flayout->addRow(new QLabel(tr("FFT Source: "), this), _ch_combobox); - _flayout->addRow(new QLabel(tr("FFT Window: "), this), _window_combobox); - _flayout->addRow(new QLabel(tr("DC Ignored: "), this), _dc_checkbox); - _flayout->addRow(new QLabel(tr("Y-axis Mode: "), this), _view_combobox); - _flayout->addRow(new QLabel(tr("DBV Range: "), this), _dbv_combobox); - - _hlayout = new QHBoxLayout(); - _hlayout->addLayout(_flayout); _hint_label = new QLabel(this); QString hint_pic= ":/icons/" + _window_combobox->currentText()+".png"; QPixmap pixmap(hint_pic); _hint_label->setPixmap(pixmap); - _hlayout->addWidget(_hint_label); + + _glayout = new QGridLayout(); + _glayout->setVerticalSpacing(5); + _glayout->addWidget(new QLabel(tr("FFT Enable: "), this), 0, 0); + _glayout->addWidget(_en_checkbox, 0, 1); + _glayout->addWidget(new QLabel(tr("FFT Length: "), this), 1, 0); + _glayout->addWidget(_len_combobox, 1, 1); + _glayout->addWidget(new QLabel(tr("Sample Interval: "), this), 2, 0); + _glayout->addWidget(_interval_combobox, 2, 1); + _glayout->addWidget(new QLabel(tr("FFT Source: "), this), 3, 0); + _glayout->addWidget(_ch_combobox, 3, 1); + _glayout->addWidget(new QLabel(tr("FFT Window: "), this), 4, 0); + _glayout->addWidget(_window_combobox, 4, 1); + _glayout->addWidget(new QLabel(tr("DC Ignored: "), this), 5, 0); + _glayout->addWidget(_dc_checkbox, 5, 1); + _glayout->addWidget(new QLabel(tr("Y-axis Mode: "), this), 6, 0); + _glayout->addWidget(_view_combobox, 6, 1); + _glayout->addWidget(new QLabel(tr("DBV Range: "), this), 7, 0); + _glayout->addWidget(_dbv_combobox, 7, 1); + _glayout->addWidget(_hint_label, 0, 2, 8, 1); + _layout = new QVBoxLayout(); - _layout->addLayout(_hlayout); + _layout->addLayout(_glayout); _layout->addWidget(&_button_box); layout()->addLayout(_layout); diff --git a/DSView/pv/dialogs/fftoptions.h b/DSView/pv/dialogs/fftoptions.h index 9dcb20e..b16dfe6 100644 --- a/DSView/pv/dialogs/fftoptions.h +++ b/DSView/pv/dialogs/fftoptions.h @@ -75,8 +75,7 @@ private: QComboBox *_dbv_combobox; QLabel *_hint_label; - QFormLayout *_flayout; - QHBoxLayout *_hlayout; + QGridLayout *_glayout; QVBoxLayout *_layout; QDialogButtonBox _button_box; diff --git a/DSView/pv/dialogs/protocolexp.cpp b/DSView/pv/dialogs/protocolexp.cpp index 2f7ec22..11f2435 100644 --- a/DSView/pv/dialogs/protocolexp.cpp +++ b/DSView/pv/dialogs/protocolexp.cpp @@ -58,6 +58,10 @@ ProtocolExp::ProtocolExp(QWidget *parent, SigSession &session) : _format_combobox->addItem(tr("Text files (*.txt)")); _flayout = new QFormLayout(); + _flayout->setVerticalSpacing(5); + _flayout->setFormAlignment(Qt::AlignLeft); + _flayout->setLabelAlignment(Qt::AlignLeft); + _flayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); _flayout->addRow(new QLabel(tr("Export Format: "), this), _format_combobox); pv::data::DecoderModel* decoder_model = _session.get_decoder_model(); diff --git a/DSView/pv/dialogs/protocollist.cpp b/DSView/pv/dialogs/protocollist.cpp index e8d4b5a..fbc5137 100644 --- a/DSView/pv/dialogs/protocollist.cpp +++ b/DSView/pv/dialogs/protocollist.cpp @@ -63,6 +63,10 @@ ProtocolList::ProtocolList(QWidget *parent, SigSession &session) : _protocol_combobox->setCurrentIndex(index); _flayout = new QFormLayout(); + _flayout->setVerticalSpacing(5); + _flayout->setFormAlignment(Qt::AlignLeft); + _flayout->setLabelAlignment(Qt::AlignLeft); + _flayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); _flayout->addRow(new QLabel(tr("Decoded Protocols: "), this), _protocol_combobox); _layout = new QVBoxLayout(); diff --git a/DSView/pv/dialogs/search.cpp b/DSView/pv/dialogs/search.cpp index 5f41fc4..1469df7 100644 --- a/DSView/pv/dialogs/search.cpp +++ b/DSView/pv/dialogs/search.cpp @@ -54,6 +54,7 @@ Search::Search(QWidget *parent, boost::shared_ptr<device::DevInst> dev_inst, QSt search_buttonBox.addButton(QDialogButtonBox::Cancel); QGridLayout *search_layout = new QGridLayout(); + search_layout->setVerticalSpacing(5); search_layout->addWidget(search_label, 1, 1); search_layout->addWidget(new QLabel(tr("Search Value: ")), 2,0, Qt::AlignRight); search_layout->addWidget(&search_lineEdit, 2, 1); diff --git a/DSView/pv/dialogs/waitingdialog.cpp b/DSView/pv/dialogs/waitingdialog.cpp index 54035be..c069c61 100644 --- a/DSView/pv/dialogs/waitingdialog.cpp +++ b/DSView/pv/dialogs/waitingdialog.cpp @@ -40,8 +40,8 @@ using namespace std; namespace pv { namespace dialogs { -const QString WaitingDialog::TIPS_WAIT = tr("Waiting"); -const QString WaitingDialog::TIPS_FINISHED = tr("Finished!"); +const QString WaitingDialog::TIPS_WAIT = QT_TR_NOOP("Waiting"); +const QString WaitingDialog::TIPS_FINISHED = QT_TR_NOOP("Finished!"); WaitingDialog::WaitingDialog(QWidget *parent, boost::shared_ptr<pv::device::DevInst> dev_inst) : DSDialog(parent), diff --git a/DSView/pv/dock/dsotriggerdock.cpp b/DSView/pv/dock/dsotriggerdock.cpp index 39782c0..8f6dffb 100644 --- a/DSView/pv/dock/dsotriggerdock.cpp +++ b/DSView/pv/dock/dsotriggerdock.cpp @@ -51,6 +51,7 @@ DsoTriggerDock::DsoTriggerDock(QWidget *parent, SigSession &session) : QScrollArea(parent), _session(session) { + this->setWidgetResizable(true); _widget = new QWidget(this); QLabel *position_label = new QLabel(tr("Trigger Position: "), _widget); @@ -127,6 +128,7 @@ DsoTriggerDock::DsoTriggerDock(QWidget *parent, SigSession &session) : QVBoxLayout *layout = new QVBoxLayout(_widget); QGridLayout *gLayout = new QGridLayout(); + gLayout->setVerticalSpacing(5); gLayout->addWidget(position_label, 0, 0); gLayout->addWidget(position_spinBox, 0, 1); gLayout->addWidget(new QLabel(tr("%"), _widget), 0, 2); @@ -156,14 +158,14 @@ DsoTriggerDock::DsoTriggerDock(QWidget *parent, SigSession &session) : gLayout->addWidget(margin_label, 15, 0); gLayout->addWidget(margin_slider, 16, 0, 1, 4); - gLayout->setColumnStretch(3, 1); + gLayout->setColumnStretch(4, 1); layout->addLayout(gLayout); layout->addStretch(1); _widget->setLayout(layout); this->setWidget(_widget); - _widget->setGeometry(0, 0, sizeHint().width(), 500); + //_widget->setGeometry(0, 0, sizeHint().width(), 500); _widget->setObjectName("dsoTriggerWidget"); } diff --git a/DSView/pv/dock/measuredock.cpp b/DSView/pv/dock/measuredock.cpp index 3515657..27fe384 100644 --- a/DSView/pv/dock/measuredock.cpp +++ b/DSView/pv/dock/measuredock.cpp @@ -66,6 +66,7 @@ MeasureDock::MeasureDock(QWidget *parent, View &view, SigSession &session) : _duty_label = new QLabel("#####", _widget); _mouse_layout = new QGridLayout(); + _mouse_layout->setVerticalSpacing(5); _mouse_layout->addWidget(_fen_checkBox, 0, 0, 1, 4); _mouse_layout->addWidget(new QLabel(tr("W: "), _widget), 1, 0); _mouse_layout->addWidget(_width_label, 1, 1); @@ -97,6 +98,7 @@ MeasureDock::MeasureDock(QWidget *parent, View &view, SigSession &session) : _t3_comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); _cursor_layout = new QGridLayout(_widget); + _cursor_layout->setVerticalSpacing(5); _cursor_layout->addWidget(new QLabel(tr("T1: "), _widget), 0, 0); _cursor_layout->addWidget(_t1_comboBox, 0, 1); _cursor_layout->addWidget(new QLabel(tr("T2: "), _widget), 1, 0); diff --git a/DSView/pv/dock/triggerdock.cpp b/DSView/pv/dock/triggerdock.cpp index bef00fd..0256df0 100644 --- a/DSView/pv/dock/triggerdock.cpp +++ b/DSView/pv/dock/triggerdock.cpp @@ -125,6 +125,7 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : QVBoxLayout *stage_layout = new QVBoxLayout(); QGridLayout *stage_glayout = new QGridLayout(); + stage_glayout->setVerticalSpacing(5); stage_glayout->addWidget(value_exp_label, 1, 0); stage_glayout->addWidget(inv_exp_label, 1, 1); stage_glayout->addWidget(count_exp_label, 1, 2); @@ -197,6 +198,7 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : QVBoxLayout *serial_layout = new QVBoxLayout(); QGridLayout *serial_glayout = new QGridLayout(); + serial_glayout->setVerticalSpacing(5); serial_glayout->addWidget(serial_value_exp_label, 1, 1, 1, 3); serial_glayout->addWidget(_serial_start_label, 2, 0); serial_glayout->addWidget(_serial_start_lineEdit, 2, 1, 1, 3); @@ -243,6 +245,7 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : QVBoxLayout *layout = new QVBoxLayout(_widget); QGridLayout *gLayout = new QGridLayout(); + gLayout->setVerticalSpacing(5); gLayout->addWidget(simple_radioButton, 0, 0); gLayout->addWidget(adv_radioButton, 1, 0); gLayout->addWidget(position_label, 2, 0); diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index 9b58784..af8166e 100644 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -254,6 +254,8 @@ void MainWindow::setup_ui() SLOT(malloc_error())); connect(&_session, SIGNAL(hardware_connect_failed()), this, SLOT(hardware_connect_failed())); + connect(&_session, SIGNAL(on_mode_change()), this, + SLOT(session_save())); connect(_view, SIGNAL(cursor_update()), _measure_widget, SLOT(cursor_update())); @@ -295,7 +297,7 @@ void MainWindow::update_device_list() assert(_sampling_bar); _session.stop_capture(); - _view->show_trig_cursor(false); + _view->reload(); _trigger_widget->device_change(); #ifdef ENABLE_DECODE _protocol_widget->del_all_protocol(); @@ -347,6 +349,11 @@ void MainWindow::reload() _session.reload(); } +void MainWindow::mode_changed() +{ + update_device_list(); +} + void MainWindow::load_file(QString file_name) { try { @@ -750,6 +757,7 @@ bool MainWindow::load_session(QString name) dsoSig->load_settings(); dsoSig->set_zero_vrate(obj["zeroPos"].toDouble()); dsoSig->set_trig_vrate(obj["trigValue"].toDouble()); + dsoSig->commit_settings(); } break; } diff --git a/DSView/pv/mainwindow.h b/DSView/pv/mainwindow.h index f6cdb0b..a8e7356 100644 --- a/DSView/pv/mainwindow.h +++ b/DSView/pv/mainwindow.h @@ -76,8 +76,6 @@ public: const char *open_file_name = NULL, QWidget *parent = 0); - void session_save(); - protected: void closeEvent(QCloseEvent *event); @@ -88,6 +86,9 @@ private: bool eventFilter(QObject *object, QEvent *event); +public slots: + void session_save(); + private slots: void load_file(QString file_name); @@ -99,6 +100,8 @@ private slots: */ void update_device_list(); + void mode_changed(); + void reload(); void show_session_error( diff --git a/DSView/pv/prop/binding/binding.cpp b/DSView/pv/prop/binding/binding.cpp index 2470ba2..95fe443 100644 --- a/DSView/pv/prop/binding/binding.cpp +++ b/DSView/pv/prop/binding/binding.cpp @@ -70,6 +70,10 @@ QWidget* Binding::get_property_form(QWidget *parent, { QWidget *const form = new QWidget(parent); QFormLayout *const layout = new QFormLayout(form); + layout->setVerticalSpacing(5); + layout->setFormAlignment(Qt::AlignLeft); + layout->setLabelAlignment(Qt::AlignLeft); + layout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); form->setLayout(layout); add_properties_to_form(layout, auto_commit); return form; diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index d85341f..a42b50e 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -473,7 +473,7 @@ double SigSession::cur_sampletime() const if (_cur_samplerate == 0) return 0; else - return _cur_samplelimits * 1.0 / _cur_samplerate; + return cur_samplelimits() * 1.0 / cur_samplerate(); } void SigSession::set_cur_samplerate(uint64_t samplerate) @@ -602,8 +602,6 @@ void SigSession::start_capture(bool instant, void SigSession::stop_capture() { _instant = false; - //_data_lock = true; - //_view_timer.stop(); #ifdef ENABLE_DECODE for (vector< boost::shared_ptr<view::DecodeTrace> >::iterator i = _decode_traces.begin(); diff --git a/DSView/pv/sigsession.h b/DSView/pv/sigsession.h index 569ae28..59cf332 100644 --- a/DSView/pv/sigsession.h +++ b/DSView/pv/sigsession.h @@ -333,6 +333,8 @@ signals: void show_wait_trigger(); + void on_mode_change(); + public slots: void reload(); void refresh(int holdtime); diff --git a/DSView/pv/toolbars/trigbar.cpp b/DSView/pv/toolbars/trigbar.cpp index 5a938e2..d616000 100644 --- a/DSView/pv/toolbars/trigbar.cpp +++ b/DSView/pv/toolbars/trigbar.cpp @@ -184,6 +184,7 @@ void TrigBar::reload() _search_action->setVisible(false); _math_action->setVisible(true); } + enable_toggle(true); update(); } diff --git a/DSView/pv/view/analogsignal.cpp b/DSView/pv/view/analogsignal.cpp index e026b33..8600d00 100644 --- a/DSView/pv/view/analogsignal.cpp +++ b/DSView/pv/view/analogsignal.cpp @@ -57,6 +57,7 @@ AnalogSignal::AnalogSignal(boost::shared_ptr<pv::device::DevInst> dev_inst, Signal(dev_inst, probe), _data(data) { + _typeWidth = 2; _colour = SignalColours[probe->index % countof(SignalColours)]; _scale = _totalHeight * 1.0f / 65536; } diff --git a/DSView/pv/view/decodetrace.cpp b/DSView/pv/view/decodetrace.cpp index 7a9e72b..d1bfe66 100644 --- a/DSView/pv/view/decodetrace.cpp +++ b/DSView/pv/view/decodetrace.cpp @@ -112,8 +112,8 @@ const QColor DecodeTrace::OutlineColours[16] = { QColor(0x6B, 0x23, 0x37) }; -const QString DecodeTrace::RegionStart = "Start"; -const QString DecodeTrace::RegionEnd = "End "; +const QString DecodeTrace::RegionStart = QT_TR_NOOP("Start"); +const QString DecodeTrace::RegionEnd = QT_TR_NOOP("End "); DecodeTrace::DecodeTrace(pv::SigSession &session, boost::shared_ptr<pv::data::DecoderStack> decoder_stack, int index) : @@ -377,6 +377,10 @@ void DecodeTrace::create_popup_form() _popup->reload(false); _popup_form = new QFormLayout(); + _popup_form->setVerticalSpacing(5); + _popup_form->setFormAlignment(Qt::AlignLeft); + _popup_form->setLabelAlignment(Qt::AlignLeft); + _popup_form->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); _popup->layout()->addLayout(_popup_form); _popup->setTitle(tr("Decoder Options")); @@ -662,6 +666,11 @@ void DecodeTrace::create_decoder_form( this, SLOT(on_del_stack(boost::shared_ptr<data::decode::Decoder>&))); QFormLayout *const decoder_form = new QFormLayout(); + decoder_form->setContentsMargins(0,0,0,0); + decoder_form->setVerticalSpacing(5); + decoder_form->setFormAlignment(Qt::AlignLeft); + decoder_form->setLabelAlignment(Qt::AlignLeft); + decoder_form->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); group->add_layout(decoder_form); // Add the mandatory channels diff --git a/DSView/pv/view/devmode.cpp b/DSView/pv/view/devmode.cpp index 54d52ff..6f81f27 100644 --- a/DSView/pv/view/devmode.cpp +++ b/DSView/pv/view/devmode.cpp @@ -75,6 +75,7 @@ void DevMode::set_device() QPushButton *mode_button = new QPushButton(this); //mode_button->setFlat(true); + mode_button->setMinimumWidth(32); mode_button->setText(mode->name); mode_button->setCheckable(true); @@ -116,6 +117,7 @@ void DevMode::on_mode_change() if ((*i).first == button) { if (dev_inst->dev_inst()->mode != (*i).second->mode) { _session.stop_capture(); + _session.on_mode_change(); dev_inst->set_config(NULL, NULL, SR_CONF_DEVICE_MODE, g_variant_new_int16((*i).second->mode)); diff --git a/DSView/pv/view/dsosignal.cpp b/DSView/pv/view/dsosignal.cpp index 10b0a12..461aafc 100644 --- a/DSView/pv/view/dsosignal.cpp +++ b/DSView/pv/view/dsosignal.cpp @@ -437,7 +437,7 @@ bool DsoSignal::load_settings() // qDebug() << "ERROR: config_get SR_CONF_EN_CH failed."; // return false; //} - gvar = _dev_inst->get_config(_probe, NULL, SR_CONF_DSO_BITS); + gvar = _dev_inst->get_config(NULL, NULL, SR_CONF_DSO_BITS); if (gvar != NULL) { _bits = g_variant_get_byte(gvar); g_variant_unref(gvar); @@ -564,6 +564,10 @@ int DsoSignal::commit_settings() ret = _dev_inst->set_config(_probe, NULL, SR_CONF_VPOS, g_variant_new_double(vpos_off)); + // -- trig_value + _dev_inst->set_config(_probe, NULL, SR_CONF_TRIGGER_VALUE, + g_variant_new_byte(_trig_value)); + return ret; } diff --git a/DSView/pv/view/ruler.cpp b/DSView/pv/view/ruler.cpp index f6050a7..c14af95 100644 --- a/DSView/pv/view/ruler.cpp +++ b/DSView/pv/view/ruler.cpp @@ -426,14 +426,15 @@ void Ruler::draw_logic_tick_mark(QPainter &p) const double SpacingIncrement = 32.0; const double MinValueSpacing = 16.0; const int ValueMargin = 5; - const double abs_min_period = 10.0 / _view.session().cur_samplerate(); double min_width = SpacingIncrement; double typical_width; double tick_period = 0; + double scale = _view.scale(); + double offset = _view.offset(); - const uint64_t cur_period_scale = ceil((_view.scale() * min_width) / abs_min_period); + const uint64_t cur_period_scale = ceil((scale * min_width) / abs_min_period); // Find tick spacing, and number formatting that does not cause // value to collide. @@ -442,19 +443,19 @@ void Ruler::draw_logic_tick_mark(QPainter &p) } else { _min_period = cur_period_scale * abs_min_period; } - const int order = (int)floorf(log10f(_view.scale() * _view.get_view_width())); + const int order = (int)floorf(log10f(scale * _view.get_view_width())); //const double order_decimal = pow(10, order); const unsigned int prefix = (order - FirstSIPrefixPower) / 3; _cur_prefix = prefix; assert(prefix < countof(SIPrefixes)); typical_width = p.boundingRect(0, 0, INT_MAX, INT_MAX, - AlignLeft | AlignTop, format_time(_view.offset(), + AlignLeft | AlignTop, format_time(offset, prefix)).width() + MinValueSpacing; do { tick_period += _min_period; - } while(typical_width > tick_period / _view.scale()); + } while(typical_width > tick_period / scale); const int text_height = p.boundingRect(0, 0, INT_MAX, INT_MAX, AlignLeft | AlignTop, "8").height(); @@ -469,9 +470,9 @@ void Ruler::draw_logic_tick_mark(QPainter &p) assert(minor_prefix < countof(SIPrefixes)); const double first_major_division = - floor(_view.offset() / tick_period); + floor(offset / tick_period); const double first_minor_division = - floor(_view.offset() / minor_tick_period + 1); + floor(offset / minor_tick_period + 1); const double t0 = first_major_division * tick_period; int division = (int)round(first_minor_division - @@ -491,7 +492,7 @@ void Ruler::draw_logic_tick_mark(QPainter &p) const double t = t0 + division * minor_tick_period; const double major_t = t0 + floor(division / MinPeriodScale) * tick_period; - x = (t - _view.offset()) / _view.scale(); + x = (t - offset) / scale; if (division % MinPeriodScale == 0) { @@ -505,13 +506,13 @@ void Ruler::draw_logic_tick_mark(QPainter &p) else { // Draw a minor tick - if (minor_tick_period / _view.scale() > 2 * typical_width) + if (minor_tick_period / scale > 2 * typical_width) p.drawText(x, 2 * ValueMargin, 0, text_height, AlignCenter | AlignTop | TextDontClip, format_time(t, prefix)); - //else if ((tick_period / _view.scale() > width() / 4) && (minor_tick_period / _view.scale() > inc_text_width)) - else if (minor_tick_period / _view.scale() > 1.1 * inc_text_width || - tick_period / _view.scale() > _view.get_view_width()) + //else if ((tick_period / scale > width() / 4) && (minor_tick_period / scale > inc_text_width)) + else if (minor_tick_period / scale > 1.1 * inc_text_width || + tick_period / scale > _view.get_view_width()) p.drawText(x, 2 * ValueMargin, 0, minor_tick_y1 + ValueMargin, AlignCenter | AlignTop | TextDontClip, format_time(t - major_t, minor_prefix)); diff --git a/DSView/pv/view/trace.cpp b/DSView/pv/view/trace.cpp index 7c92308..aec3700 100644 --- a/DSView/pv/view/trace.cpp +++ b/DSView/pv/view/trace.cpp @@ -83,7 +83,8 @@ Trace::Trace(QString name, uint16_t index, int type) : _v_offset(INT_MAX), _type(type), _sec_index(0), - _totalHeight(30) + _totalHeight(30), + _typeWidth(SquareNum) { _index_list.push_back(index); } @@ -95,7 +96,8 @@ Trace::Trace(QString name, std::list<int> index_list, int type, int sec_index) : _type(type), _index_list(index_list), _sec_index(sec_index), - _totalHeight(30) + _totalHeight(30), + _typeWidth(SquareNum) { } @@ -109,6 +111,7 @@ Trace::Trace(const Trace &t) : _sec_index(t._sec_index), _old_v_offset(t._old_v_offset), _totalHeight(t._totalHeight), + _typeWidth(t._typeWidth), _text_size(t._text_size) { } @@ -404,7 +407,7 @@ int Trace::get_leftWidth() const int Trace::get_rightWidth() const { - return 2 * Margin + SquareNum * SquareWidth + 1.5 * SquareWidth; + return 2 * Margin + _typeWidth * SquareWidth + 1.5 * SquareWidth; } int Trace::get_headerHeight() const diff --git a/DSView/pv/view/trace.h b/DSView/pv/view/trace.h index 0426025..1f3a4c4 100644 --- a/DSView/pv/view/trace.h +++ b/DSView/pv/view/trace.h @@ -306,6 +306,7 @@ protected: int _sec_index; int _old_v_offset; int _totalHeight; + int _typeWidth; QSizeF _text_size; }; diff --git a/DSView/pv/view/view.cpp b/DSView/pv/view/view.cpp index 357fdb8..4a6f0d2 100644 --- a/DSView/pv/view/view.cpp +++ b/DSView/pv/view/view.cpp @@ -167,7 +167,7 @@ View::View(SigSession &session, pv::toolbars::SamplingBar *sampling_bar, QWidget _time_viewport, SLOT(show_wait_trigger())); connect(_devmode, SIGNAL(mode_changed()), - parent, SLOT(update_device_list()), Qt::DirectConnection); + parent, SLOT(mode_changed()), Qt::DirectConnection); connect(_header, SIGNAL(traces_moved()), this, SLOT(on_traces_moved())); @@ -571,11 +571,13 @@ void View::update_scale_offset() if (_session.get_device()->dev_inst()->mode != DSO) { //_scale = (1.0 / sample_rate) / WellPixelsPerSample; _maxscale = _session.cur_sampletime() / (get_view_width() * MaxViewRate); + _minscale = (1.0 / sample_rate) / MaxPixelsPerSample; } else { _scale = _session.get_device()->get_time_base() * 10.0 / get_view_width() * std::pow(10.0, -9.0); _maxscale = 1e9; + _minscale = 1e-15; } - _minscale = (1.0 / sample_rate) / MaxPixelsPerSample; + _scale = max(min(_scale, _maxscale), _minscale); _offset = max(min(_offset, get_max_offset()), get_min_offset()); @@ -595,11 +597,7 @@ void View::signals_changed() uint8_t max_height = MaxHeightUnit; vector< boost::shared_ptr<Trace> > time_traces; vector< boost::shared_ptr<Trace> > fft_traces; - - if (_session.get_device()->dev_inst()->mode == LOGIC) - _viewbottom->setFixedHeight(StatusHeight); - else - _viewbottom->setFixedHeight(10); + int bits = 8; BOOST_FOREACH(const boost::shared_ptr<Trace> t, get_traces(ALL_VIEW)) { if (_trace_view_map[t->get_type()] == TIME_VIEW) @@ -672,8 +670,14 @@ void View::signals_changed() next_v_offset += traceHeight + 2 * SignalMargin; boost::shared_ptr<view::DsoSignal> dsoSig; - if (dsoSig = dynamic_pointer_cast<view::DsoSignal>(t)) - dsoSig->set_scale(dsoSig->get_view_rect().height() / 256.0f); + if (dsoSig = dynamic_pointer_cast<view::DsoSignal>(t)) { + GVariant *gvar = _session.get_device()->get_config(NULL, NULL, SR_CONF_DSO_BITS); + if (gvar != NULL) { + bits = g_variant_get_byte(gvar); + g_variant_unref(gvar); + } + dsoSig->set_scale(dsoSig->get_view_rect().height() * 1.0f / (1 << bits)); + } } _time_viewport->clear_measure(); } @@ -1066,5 +1070,21 @@ void View::splitterMoved(int pos, int index) signals_changed(); } +void View::reload() +{ + show_trig_cursor(false); + + /* + * if headerwidth not change, viewport height will not be updated + * lead to a wrong signal height + */ + if (_session.get_device()->dev_inst()->mode == LOGIC) + _viewbottom->setFixedHeight(StatusHeight); + else + _viewbottom->setFixedHeight(10); + + +} + } // namespace view } // namespace pv diff --git a/DSView/pv/view/view.h b/DSView/pv/view/view.h index 5ba901e..4132257 100644 --- a/DSView/pv/view/view.h +++ b/DSView/pv/view/view.h @@ -223,6 +223,7 @@ private: void resizeEvent(QResizeEvent *e); public slots: + void reload(); void set_measure_en(int enable); void signals_changed(); void data_updated(); diff --git a/DSView/pv/view/viewport.cpp b/DSView/pv/view/viewport.cpp index a1e47c5..92fdaae 100644 --- a/DSView/pv/view/viewport.cpp +++ b/DSView/pv/view/viewport.cpp @@ -242,18 +242,18 @@ void Viewport::paintSignals(QPainter &p) if (_view.session().get_device()->dev_inst()->mode == DSO && _view.session().get_capture_state() == SigSession::Running) { uint8_t type; - bool stream = false; + bool roll = false; QString type_str=""; - GVariant *gvar = _view.session().get_device()->get_config(NULL, NULL, SR_CONF_STREAM); + GVariant *gvar = _view.session().get_device()->get_config(NULL, NULL, SR_CONF_ROLL); if (gvar != NULL) { - stream = g_variant_get_boolean(gvar); + roll = g_variant_get_boolean(gvar); g_variant_unref(gvar); } gvar = _view.session().get_device()->get_config(NULL, NULL, SR_CONF_TRIGGER_SOURCE); if (gvar != NULL) { type = g_variant_get_byte(gvar); g_variant_unref(gvar); - if (type == DSO_TRIGGER_AUTO && stream) { + if (type == DSO_TRIGGER_AUTO && roll) { type_str = "Auto(Roll)"; } else if (type == DSO_TRIGGER_AUTO && !_view.session().trigd()) { type_str = "Auto"; @@ -929,9 +929,9 @@ void Viewport::measure() _cur_aftX = _view.hover_point().x(); _cur_midY = logicSig->get_y() - logicSig->get_totalHeight()/2 - 5; - _em_rising = "Rising: " + QString::number(_edge_rising); - _em_falling = "Falling: " + QString::number(_edge_falling); - _em_edges = "Edges: " + QString::number(_edge_rising + _edge_falling); + _em_rising = tr("Rising: ") + QString::number(_edge_rising); + _em_falling = tr("Falling: ") + QString::number(_edge_falling); + _em_edges = tr("Edges: ") + QString::number(_edge_rising + _edge_falling); break; } diff --git a/DSView/pv/widgets/decodergroupbox.cpp b/DSView/pv/widgets/decodergroupbox.cpp index b7bf92e..1b802e3 100644 --- a/DSView/pv/widgets/decodergroupbox.cpp +++ b/DSView/pv/widgets/decodergroupbox.cpp @@ -49,6 +49,7 @@ DecoderGroupBox::DecoderGroupBox(boost::shared_ptr<data::DecoderStack> &decoder_ _layout(new QGridLayout(this)) { _layout->setContentsMargins(0, 0, 0, 0); + _layout->setVerticalSpacing(5); setLayout(_layout); _layout->addWidget(new QLabel(QString("<h3>%1</h3>").arg(_dec->decoder()->name), this), diff --git a/DSView/res/DSCope1.def.dsc b/DSView/res/DSCope1.def.dsc index 852f890..ea6deb4 100755 --- a/DSView/res/DSCope1.def.dsc +++ b/DSView/res/DSCope1.def.dsc @@ -1,38 +1,40 @@ -{ - "Device": "DSCope", - "DeviceMode": 1, - "Horizontal trigger position": "1", - "Operation Mode": "Normal", - "Sample count": "1048576", - "Sample rate": "100000000", - "Time base": "10000", - "Trigger hold off": "0", - "Trigger slope": "0", - "Trigger source": "0", - "channel": [ - { - "colour": "#eeb211", - "coupling": 0, - "enabled": true, - "index": 0, - "name": "0", - "trigValue": 0.5, - "type": 10001, - "vdiv": 1000, - "vfactor": 1, - "zeroPos": 0.5 - }, - { - "colour": "#009925", - "coupling": 0, - "enabled": true, - "index": 1, - "name": "1", - "trigValue": 0.5, - "type": 10001, - "vdiv": 1000, - "vfactor": 1, - "zeroPos": 0.5 - } - ] -} +{ + "Device": "DSCope", + "DeviceMode": 1, + "Horizontal trigger position": "0", + "Operation Mode": "Normal", + "Sample count": "1048576", + "Sample rate": "100000000", + "Time base": "10000", + "Trigger channel": "0", + "Trigger hold off": "0", + "Trigger margin": "8", + "Trigger slope": "0", + "Trigger source": "0", + "channel": [ + { + "colour": "#eeb211", + "coupling": 0, + "enabled": true, + "index": 0, + "name": "0", + "trigValue": 0.50196078431372548, + "type": 10001, + "vdiv": 1000, + "vfactor": 1, + "zeroPos": 0.5 + }, + { + "colour": "#009925", + "coupling": 0, + "enabled": true, + "index": 1, + "name": "1", + "trigValue": 0.50196078431372548, + "type": 10001, + "vdiv": 1000, + "vfactor": 1, + "zeroPos": 0.5 + } + ] +} diff --git a/DSView/res/DSLogic0.def.dsc b/DSView/res/DSLogic0.def.dsc index 08aea6e..83ecadd 100755 --- a/DSView/res/DSLogic0.def.dsc +++ b/DSView/res/DSLogic0.def.dsc @@ -8,14 +8,16 @@ "Sample count": "1048576", "Sample rate": "1000000", "Threshold Level": 1, + "Trigger channel": "0", "Trigger hold off": "0", + "Trigger margin": "8", "Trigger slope": "0", "Trigger source": "0", "Using Clock Negedge": 0, "Using External Clock": 0, "channel": [ { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 0, "name": "0", @@ -23,7 +25,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 1, "name": "1", @@ -31,7 +33,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 2, "name": "2", @@ -39,7 +41,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 3, "name": "3", @@ -47,7 +49,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 4, "name": "4", @@ -55,7 +57,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 5, "name": "5", @@ -63,7 +65,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 6, "name": "6", @@ -71,7 +73,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 7, "name": "7", @@ -79,7 +81,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 8, "name": "8", @@ -87,7 +89,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 9, "name": "9", @@ -95,7 +97,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 10, "name": "10", @@ -103,7 +105,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 11, "name": "11", @@ -111,7 +113,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 12, "name": "12", @@ -119,7 +121,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 13, "name": "13", @@ -127,7 +129,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 14, "name": "14", @@ -135,7 +137,7 @@ "type": 10000 }, { - "colour": "#6a6a6a", + "colour": "#969696", "enabled": true, "index": 15, "name": "15", diff --git a/DSView/res/DSLogic2.def.dsc b/DSView/res/DSLogic2.def.dsc index 37160a1..2d9155b 100755 --- a/DSView/res/DSLogic2.def.dsc +++ b/DSView/res/DSLogic2.def.dsc @@ -1,81 +1,82 @@ -{ - "Channel Mode": "Use Channels 0~15 (Max 100MHz)", - "Device": "DSLogic", - "DeviceMode": 2, - "Filter Targets": "None", - "Horizontal trigger position": "245", - "Operation Mode": "Buffer Mode", - "Sample count": "1048576", - "Sample rate": "100000000", - "Threshold Level": "1.8/2.5/3.3V Level", - "Trigger hold off": "0", - "Trigger slope": "0", - "Trigger source": "0", - "Using Clock Negedge": 0, - "Using External Clock": 0, - "channel": [ - { - "colour": "#1185d1", - "enabled": true, - "index": 0, - "name": "0", - "type": 10002 - }, - { - "colour": "#eeb211", - "enabled": true, - "index": 1, - "name": "1", - "type": 10002 - }, - { - "colour": "#d50f25", - "enabled": true, - "index": 2, - "name": "2", - "type": 10002 - }, - { - "colour": "#009925", - "enabled": true, - "index": 3, - "name": "3", - "type": 10002 - }, - { - "colour": "#1185d1", - "enabled": true, - "index": 4, - "name": "4", - "type": 10002 - }, - { - "colour": "#eeb211", - "enabled": true, - "index": 5, - "name": "5", - "type": 10002 - }, - { - "colour": "#d50f25", - "enabled": true, - "index": 6, - "name": "6", - "type": 10002 - }, - { - "colour": "#009925", - "enabled": true, - "index": 7, - "name": "7", - "type": 10002 - }, - { - "colour": "#1185d1", - "enabled": true, - "index": 8, - "name": "8", - "type": 10002 - } - ] -} +{ + "Channel Mode": "Use Channels 0~15 (Max 10MHz)", + "Device": "DSLogic", + "DeviceMode": 2, + "Filter Targets": "None", + "Horizontal trigger position": "0", + "Operation Mode": "Stream Mode", + "Sample count": "1048576", + "Sample rate": "1000000", + "Threshold Level": "1.8/2.5/3.3V Level", + "Trigger hold off": "0", + "Trigger margin": "8", + "Trigger slope": "0", + "Trigger source": "0", + "Using Clock Negedge": 0, + "Using External Clock": 0, + "channel": [ + { + "colour": "#1185d1", + "enabled": true, + "index": 0, + "name": "0", + "type": 10002 + }, + { + "colour": "#eeb211", + "enabled": true, + "index": 1, + "name": "1", + "type": 10002 + }, + { + "colour": "#d50f25", + "enabled": true, + "index": 2, + "name": "2", + "type": 10002 + }, + { + "colour": "#009925", + "enabled": true, + "index": 3, + "name": "3", + "type": 10002 + }, + { + "colour": "#1185d1", + "enabled": true, + "index": 4, + "name": "4", + "type": 10002 + }, + { + "colour": "#eeb211", + "enabled": true, + "index": 5, + "name": "5", + "type": 10002 + }, + { + "colour": "#d50f25", + "enabled": true, + "index": 6, + "name": "6", + "type": 10002 + }, + { + "colour": "#009925", + "enabled": true, + "index": 7, + "name": "7", + "type": 10002 + }, + { + "colour": "#1185d1", + "enabled": true, + "index": 8, + "name": "8", + "type": 10002 + } + ] +} diff --git a/libsigrok4DSL/hardware/DSL/dscope.c b/libsigrok4DSL/hardware/DSL/dscope.c index b355ebb..bd7481a 100644 --- a/libsigrok4DSL/hardware/DSL/dscope.c +++ b/libsigrok4DSL/hardware/DSL/dscope.c @@ -1276,11 +1276,11 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi, devc = sdi->priv; *data = g_variant_new_boolean(devc->cali); break; - case SR_CONF_STREAM: + case SR_CONF_ROLL: if (!sdi) return SR_ERR; devc = sdi->priv; - *data = g_variant_new_boolean(devc->stream); + *data = g_variant_new_boolean(devc->roll); break; case SR_CONF_TEST: if (!sdi) @@ -2408,7 +2408,7 @@ static void receive_transfer(struct libusb_transfer *transfer) mstatus.vlen != 0 && mstatus.vlen <= (transfer->actual_length - 512) / sample_width) || devc->instant) { - devc->stream = (mstatus.stream_mode != 0); + devc->roll = (mstatus.stream_mode != 0); devc->mstatus_valid = TRUE; packet.type = SR_DF_DSO; packet.payload = &dso; diff --git a/libsigrok4DSL/hardware/DSL/dsl.h b/libsigrok4DSL/hardware/DSL/dsl.h index 6fa3061..4916367 100644 --- a/libsigrok4DSL/hardware/DSL/dsl.h +++ b/libsigrok4DSL/hardware/DSL/dsl.h @@ -250,6 +250,7 @@ struct DSL_context { int zero_pcnt; int zero_comb; gboolean stream; + gboolean roll; gboolean data_lock; uint8_t dso_bits; diff --git a/libsigrok4DSL/hardware/DSL/dslogic.c b/libsigrok4DSL/hardware/DSL/dslogic.c index 503ecbf..973a266 100644 --- a/libsigrok4DSL/hardware/DSL/dslogic.c +++ b/libsigrok4DSL/hardware/DSL/dslogic.c @@ -134,12 +134,12 @@ static const int32_t hwoptions_pro[] = { }; static const int32_t sessions[] = { + SR_CONF_OPERATION_MODE, + SR_CONF_CHANNEL_MODE, SR_CONF_SAMPLERATE, SR_CONF_LIMIT_SAMPLES, SR_CONF_CLOCK_TYPE, SR_CONF_CLOCK_EDGE, - SR_CONF_OPERATION_MODE, - SR_CONF_CHANNEL_MODE, SR_CONF_THRESHOLD, SR_CONF_FILTER, SR_CONF_TRIGGER_SLOPE, @@ -150,12 +150,12 @@ static const int32_t sessions[] = { }; static const int32_t sessions_pro[] = { + SR_CONF_OPERATION_MODE, + SR_CONF_CHANNEL_MODE, SR_CONF_SAMPLERATE, SR_CONF_LIMIT_SAMPLES, SR_CONF_CLOCK_TYPE, SR_CONF_CLOCK_EDGE, - SR_CONF_OPERATION_MODE, - SR_CONF_CHANNEL_MODE, SR_CONF_VTH, SR_CONF_FILTER, SR_CONF_TRIGGER_SLOPE, @@ -937,6 +937,7 @@ static uint64_t dso_cmd_gen(const struct sr_dev_inst *sdi, struct sr_channel* ch uint64_t cmd = 0; int channel_cnt = 0; GSList *l; + struct sr_channel *en_probe; devc = sdi->priv; @@ -947,14 +948,18 @@ static uint64_t dso_cmd_gen(const struct sr_dev_inst *sdi, struct sr_channel* ch case SR_CONF_COUPLING: for (l = sdi->channels; l; l = l->next) { struct sr_channel *probe = (struct sr_channel *)l->data; - if (probe->enabled) + if (probe->enabled) { channel_cnt += probe->index + 0x1; + en_probe = probe; + } } if (channel_cnt == 0) return 0x0; // --VDBS - switch(ch->vdiv){ + if (channel_cnt != 1) + en_probe = ch; + switch(en_probe->vdiv){ case 5: cmd += 0x247000; break; case 10: cmd += 0x23D000; break; case 20: cmd += 0x22F000; break; @@ -1317,6 +1322,12 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi, devc = sdi->priv; *data = g_variant_new_boolean(devc->stream); break; + case SR_CONF_ROLL: + if (!sdi) + return SR_ERR; + devc = sdi->priv; + *data = g_variant_new_boolean(devc->roll); + break; case SR_CONF_MAX_DSO_SAMPLERATE: if (!sdi) return SR_ERR; @@ -1410,7 +1421,6 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, num_probes = devc->profile->dev_caps & DEV_CAPS_16BIT ? 16 : 8; devc->samplecounts_size = ARRAY_SIZE(samplecounts); } else if (sdi->mode == DSO) { - sdi->mode = DSO; num_probes = devc->profile->dev_caps & DEV_CAPS_16BIT ? MAX_DSO_PROBES_NUM : 1; ret = command_dso_ctrl(usb->devhdl, dso_cmd_gen(sdi, NULL, SR_CONF_DSO_SYNC)); if (ret != SR_OK) @@ -1558,8 +1568,13 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, __func__, devc->th_level); } else if (id == SR_CONF_VTH) { devc->vth = g_variant_get_double(data); - sr_dbg("%s: setting threshold voltage to %f failed", - __func__, devc->vth); + if ((ret = command_wr_reg(usb->devhdl, (uint8_t)(devc->vth/5.0*255), VTH_ADDR)) == SR_OK) { + sr_err("%s: setting threshold voltage to %f", + __func__, devc->vth); + } else { + sr_info("%s: setting threshold voltage to %f failed", + __func__, devc->vth); + } } else if (id == SR_CONF_FILTER) { stropt = g_variant_get_string(data, NULL); if (!strcmp(stropt, filters[SR_FILTER_NONE])) { @@ -1889,6 +1904,14 @@ static int dev_open(struct sr_dev_inst *sdi) sr_err("%s: Configure FPGA failed!", __func__); } g_free(fpga_bit); + + if ((ret = command_wr_reg(usb->devhdl, (uint8_t)(devc->vth/5.0*255), VTH_ADDR)) == SR_OK) { + sr_err("%s: setting threshold voltage to %f", + __func__, devc->vth); + } else { + sr_info("%s: setting threshold voltage to %f failed", + __func__, devc->vth); + } } } @@ -2144,7 +2167,7 @@ static void receive_transfer(struct libusb_transfer *transfer) mstatus.vlen != 0 && mstatus.vlen <= (transfer->actual_length - 512) / sample_width) || devc->instant) { - devc->stream = (mstatus.stream_mode != 0); + devc->roll = (mstatus.stream_mode != 0); devc->mstatus_valid = TRUE; packet.type = SR_DF_DSO; packet.payload = &dso; @@ -2491,14 +2514,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) else sr_dbg("%s: setting DSO Horiz Trigger Position to %d failed", __func__, devc->trigger_hpos); - } else if (sdi->mode == LOGIC) { - if ((ret = command_wr_reg(usb->devhdl, (uint8_t)(devc->vth/5.0*255), VTH_ADDR)) == SR_OK) { - sr_err("%s: setting threshold voltage to %f", - __func__, devc->vth); - } else { - sr_info("%s: setting threshold voltage to %f failed", - __func__, devc->vth); - } } /* poll trigger status transfer*/ diff --git a/libsigrok4DSL/hardware/demo/demo.c b/libsigrok4DSL/hardware/demo/demo.c index 6c27932..f575db7 100644 --- a/libsigrok4DSL/hardware/demo/demo.c +++ b/libsigrok4DSL/hardware/demo/demo.c @@ -146,7 +146,7 @@ static const int32_t sessions[] = { SR_CONF_PATTERN_MODE, }; -static const int const_dc = 50; +static const int const_dc = 1.95 / 10 * 255; static const int sinx[] = { 0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 16, 17, 18, 20, 21, 23, 24, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 41, 42, 43, 44, 45, 45, 46, 47, 47, @@ -357,7 +357,7 @@ static GSList *hw_scan(GSList *options) devc->limit_samples_show = devc->limit_samples; devc->limit_msec = 0; devc->sample_generator = PATTERN_SINE; - devc->timebase = 200; + devc->timebase = 500; devc->data_lock = FALSE; devc->max_height = 0; devc->dso_bits = 8; @@ -876,7 +876,8 @@ static void samples_generator(uint16_t *buf, uint64_t size, for (l = sdi->channels; l; l = l->next) { start_rand = devc->pre_index == 0 ? rand()%len : 0; probe = (struct sr_channel *)l->data; - offset = ceil((0.5 - (probe->vpos/probe->vdiv/10.0)) * 255); + //offset = ceil((0.5 - (probe->vpos/probe->vdiv/10.0)) * 255); + offset = 128; pre0_i = devc->pre_index; pre1_i = devc->pre_index; for (i = devc->pre_index; i < devc->pre_index + size; i++) { diff --git a/libsigrok4DSL/libsigrok.h b/libsigrok4DSL/libsigrok.h index 7626c5d..c40428b 100644 --- a/libsigrok4DSL/libsigrok.h +++ b/libsigrok4DSL/libsigrok.h @@ -785,6 +785,9 @@ enum { /** Stream */ SR_CONF_STREAM, + /** DSO Roll */ + SR_CONF_ROLL, + /** Test */ SR_CONF_TEST, -- GitLab