From f9985ad061bf5d8b568ea3206bc7e2e42ad31b9b Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 19 Apr 2022 07:03:28 +0200 Subject: [PATCH] Massive UI revamping (v7): main window documentation --- CMakeLists.txt | 8 +- doc/img/Configurations.png | Bin 0 -> 26402 bytes doc/img/Configurations.xcf | Bin 0 -> 94059 bytes doc/img/MainWindow.png | Bin 0 -> 17455 bytes doc/img/Workspace_create_feature.png | Bin 0 -> 7776 bytes doc/img/Workspace_create_rx.png | Bin 0 -> 11689 bytes doc/img/Workspace_top.png | Bin 0 -> 9124 bytes doc/img/Workspace_top.xcf | Bin 0 -> 38063 bytes doc/img/Workspaces.png | Bin 0 -> 54229 bytes doc/img/Workspaces.xcf | Bin 0 -> 137042 bytes sdrbase/maincore.h | 1 + sdrgui/configurations.md | 45 + sdrgui/gui/configurationsdialog.cpp | 96 ++ sdrgui/gui/configurationsdialog.h | 2 + sdrgui/gui/configurationsdialog.ui | 28 + sdrgui/mainspectrum/mainspectrumgui.cpp | 3 +- sdrgui/mainwindow.cpp | 4 +- sdrgui/readme.md | 1097 ++++------------------- 18 files changed, 375 insertions(+), 909 deletions(-) create mode 100644 doc/img/Configurations.png create mode 100644 doc/img/Configurations.xcf create mode 100644 doc/img/MainWindow.png create mode 100644 doc/img/Workspace_create_feature.png create mode 100644 doc/img/Workspace_create_rx.png create mode 100644 doc/img/Workspace_top.png create mode 100644 doc/img/Workspace_top.xcf create mode 100644 doc/img/Workspaces.png create mode 100644 doc/img/Workspaces.xcf create mode 100644 sdrgui/configurations.md diff --git a/CMakeLists.txt b/CMakeLists.txt index fe7c567b5..d1b8b396d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,10 +14,10 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # configure version -set(sdrangel_VERSION_MAJOR "6") -set(sdrangel_VERSION_MINOR "20") -set(sdrangel_VERSION_PATCH "2") -set(sdrangel_VERSION_SUFFIX "") +set(sdrangel_VERSION_MAJOR "7") +set(sdrangel_VERSION_MINOR "0") +set(sdrangel_VERSION_PATCH "0") +set(sdrangel_VERSION_SUFFIX "alpha.1") # SDRAngel cmake options option(DEBUG_OUTPUT "Print debug messages" OFF) diff --git a/doc/img/Configurations.png b/doc/img/Configurations.png new file mode 100644 index 0000000000000000000000000000000000000000..e56c544305a537216f18a84bfd3fabd717d385c0 GIT binary patch literal 26402 zcmcG$byQVtyFI+YKuHyq21OC1yF&$oR*-J#?ru>KB~*|OrIGIL?(S}p4(a%=<@=s< z-gAEEcg{DyF}^>ZF?{yk?6uZ?Uoo#a=e>PjN?=TbP4F+oFdzlP+KPMD(V`g5$5W1a)%h*}UTa5X38skHJP*B{b;Df4!Zpucl zIk)n%{bFZ~EB=_W9o5|5jY7Ui)i;=!$*sCQMcv({e9Ph+exyqK?cLHrsZU^*Jxk1j z>v~sD*1Y891Cd#!B$C@(m$!D460Ikxar3?=T#LmIB(`}x`#iIavC5K>mwvN7`-^B7 zzK?Ii8;mxxb}?@;{->mJul={*r?+7)F?1RwHY)GWGhr_leACVB^Sk5ul>Y9e>#RmJ z@#t7A${aEh35G)JGZa=Q53O3}X}!K^qsgUwCKWoMI9VU0myjwJt>Nze^Ja{q?$JJD zcly}gevT=ZH0qqqBC+6f;4<@$s8dD8(?E}IP7BM4!FhpcD-1%HUMgX$`$CdGUZN(u zennbUS2J`ME$$7DHZ5QH{3G)#S9Q%@W|@Rl+d%t$o4vh_aCvtj3n{B49TKcRuq{_D zUMN|kP>lDG|Ii!~h3w!(3>#6&rx=SDZ`>v!>#4;zf|rPFo+{c1o12>In%SU)t#q|) zban378`>D$c`hpXQo$3K0EN1P5*2y;+F^8c!rsAu|Ga5yspbBc&xE3@Y8)R43&bB9 zzDWH>89e$k19w1~BVwCv)Gh6!41>Rb@akxNrrhEw*tmi>lGdO7)! zZRTQ>bCmP)%9+dh@woW~%_kxvA~AIGqZcVDDKRasU%&p!ryMNdK zfBb7i#K#^3^lD8M35jV8foRQ>OIzF9aV90X^H!F3S?+o^H-B24C<~P&;k-dW5Slur zQ6^>T;^Jaq-R6@KO*WL-kgdC;=Q6pCrrG@cZWOQW?~>t=M6uAMC-1jWCS#@kp9q+g zy-*=Xf5FFvBKvS%TdwcYfksb=%(X}l_HgqhmNosNC(=IzPP9|ODsLT|J7Ex z@o>uB4ZHPs-@X+ru<@y=L`6l>DCJ%p($*d+wvR`)rhB15AVA9bUQwF40cQz`M{Nhol zeB#J!zYL!c)h@57ubqDNMUp`ym&{i(t|7*?+F$upm9JuAds2t>O}=IAL;I`gCTlPJ%4+??uB7{O(KB#6 zy3Jcy#fkXNdK{AbR99DHHqSC?F;=1TFez)=XW&NeRl8X>x|mZHNqvtWYK0v zHNxJSy1M=u88{_7^FJiVI92`pbeaO9@e0Px+1>EUG+0`c08=pdQaP*oCyVj>ERSayo0hpjgYb81f3!$|6ZJ zGc!>V2U8dKR!1&8s&qM|(fIKe_l$tP{+usxZ0Qd(gVUvho!qaSoF@f#*m9HP{spFm z`E{$gK}Ok4A8-0Kz7~7!?(?p=jZ}#P-PqXJ@7cZ7;WrtB`#X-?d#JJu#jROx9=;3N z`d#X<8R*rsPsI&Z2i~oYF<;&bkqUHdDf|@lvuCO+hm6~pNZ}=Dlu21nPfS%gH%(6LPF@*~t&{8{cCHV=}}Cx5JSmtLxx(4U`JfBi}&u4!u8 zp~5iv=4||MxzXCf<_;t0;I^Rj`uO?PC&pHbtQvFyzAXpI8V^$gH_TST!c^L3e$N^m z^7&{7VAt_cHMr~-XJo8pEUT*Zo#-&$^Yt~X%g|}L5wan?ZP zVV{d2x1i7&v{TD-!cpNg|M7bH>-;{=qeIMv)Ym09sKi6QKl3LxnaF*5eq}vg?l?jC z#B%Sp&MukK(-86dP;VJY)!Ww(DXbkP>`5nBzg?iKnrU3XU#zZl`Z}?5Z0WG(&`B}% z*1zH&)6m9yxxMnE(6cDze2X86X-64FlX3R3ldm(Bzx5`H_k4eR!5fF7F>N5t`gi}s zH|IE!Mgu>$#2PT?E!rQi3}!IYIR2ViUv0P9TUBZk*8M4$^{nAz*7WS`6CWuuR?_or zD(ket$;p^dbz1*#-#E;ROb(|jUhfr|eLh}_b^qY+TQk@hKr8n%32)(?e>cfu=E?Bz zu%g+!GBrI@1wLoz2+lu^H8q~X7$d!KS!$NjL6w7DVzH1t%Do>!kH)a&(#O38kf3fgnhyf z$0T?w$F9@S(HRY;O0Mx1^!epE_C5F-Bzxf6DB<*H*&m=tEFR%!y{I&WtXzYcI0=nO zfCaZ1RO`#4ryAg~&MpXY`7Hk7{u=bPePY;K#dKPY&t7Rzzga<;p=znp(e=PBn&0tj zaWS{md~=OTN2F}J0So4B#uuIL8?UQe$0I`@@E+KH_tL=VjK*5})P<2i!UZ+T-=AZR zH$Pd;XYW2W)ph&RQeCAWxT}?{I^KiWAJ^PfGv?1bsnhIRRxrAY9_}wHM2!}GKA=mk z(R|+|o^`?Ev{lK5WNgQHqSTg@&(80Gx@3ExOvl0#nKzUKOwV%cyU6!eCompaY~sdc zsV9a9;!%kQ-zgL3jEm2*`ZfLdHiPol8R=+NUB{u!y4F_AjigC#zNPv3mZ0_{0S~Qv zm8?FFs~NX9W8KeM(mj;e_lzVuqe{3ByM)?t!#X}^c?-VuXoAEXAGSO=Jbab#LhEBF zednI(802Kq)3)1&jRN+2q-^@_^O74}EkV>>0#(#(g~rh6Afn=Rd}ZcaB1!c1_20aC z!{d6y{1@=u`;Fkg7F=rq^B)|A*z~3RpsMp&dkd89XInLh-N45$_ySOoay#AEue`Zv$}J7& zE~UMhi4p$)I5o^yR#*t#vu^o;5%clG2j%}?$AuPEP9@94EVZ&E0Vc|A^pA3b`6 z!o|fU^ndpC>(>u}cBU#_=~atAzkBzNIv4xT%22XlU()Wz)OpO@V5VARoev&9KE5z~ z$k*3bYq33i^b3q%o9X)fDX&&X@-Up8oyCG_9w$ph!`)zBxQu=0;lqc0RYKg{VHM8% zlS9R8V@1ek>+9>8U5{-1p2gdJha2QKEZ1DIV7EZk1Eo)dEz z)qlK2XJKji<9Q(YO*(mO6%{D1lkFQ-=K(D`aW>1nyT1ppFfcGoOiYIJ^zr(VB=2!> ze8ap&+g;&o576er$B%DXgC8O(g(rC6LBeJBGUv@xTnfSVt+^({!E~Zn*F7Q}63zsz zI`4NrK65iOk2|AyluE3q(&RJZ+|SQ$(kp)cA?(9yJV;ObI^~gs1U8#qdv#}Lfc=y! zfwZ)=!~=W+CUu?d`4-h;3r|@4uVG;yf`ae?u*`QxM~VhLu>941_muA1bw}J~;sdh! zrlvgIw%fD{nb_6ODO^S13t?@Nq+??UqE2FCm!Qj{Fis{E&{OY zh%~Qk$<=Kub~$9_FzTP~PnC`0wtRbjy5Ww3fBXFUWpH+~BaK4#4{)Zaq-28*>-8Hq zp6KZ4c(+;1)Lw#Z!G7f6z^&gElV~!M8?trIx86}@Jeb}R_w*C}&{`;i%CoUTQ%ftW zS{+u)>1s5nHYjfEMQj+F2D+A!$YvtP!^4Ykqps~ssb%5h?0m(+)kY$_PNZ)v+0|n=Uczgb)0Bx zYcs@7t;!X*7_h(5O~fSxYTy8?v8BZq;*;6-_iIMA(u>v9u`XX{tozN!i))~ugt6)4 zuCK3S6SH4oVq#*{s5H6S6^Ti}C;|EBU4bg{*>az7WBvSvP9ZZPe0?#`Gd@1PK=`SM zIYSRtl`;(g-NedWw1#&{a}pBbKKFJotqn}au+hMIxW;a31Lt{fF!{B zgS|2HhwA0U3ynFEo+a+*ZqU0PLk(pPmwu{pj4`G;t&-T#ikI9g5B6YJKnHf?xm_cJ2IA$ky$U{cRxSnl1r0MG#<(v9vNY= zoD~t5u3qej+}hvQhXKGaNvYg{rL(j1WU~&B5c_gxG+$G(`|+Q{aCEYSyoXJ1aLzo6jIQvrw*x4VNX_AI{t zq=x22n{$V%V;7nNGc~GWpb)P7x{2)iT5Vlj0hCg8)ZpMCRKEMPv|`UIJ~U%hPfQ4i zXBK68LdE?jxpaoTxwoe`lB;{N(yN{;%#IeuOM< zmGbnI1o5!3;U-$Q+43R%g8~JQK4hpAp)=e3dPzz~M#QX%nrjNAW@HQiJ|j{?kz7nD z0jJ&XFMmAoBj&(_A{@e`5fB&{XczXkesAvX-q)yf3E78InBTv4*6`0Q~hC@6l)XNYY~Rwxyjk)fvC&jpgDW0TA#N{7eB z*zDI;OKp~GnW|2n$jIEV{oOxPu|J6vc4$XEP#!A}7fGOGN~Ovq{u)RN4R~|?3q4Jn z-4CC4?_Q?7yjxygPV+kD+TFW%4ZW9IzkLFHYGYeM0sZC8{`v%5zH?iUlXLLK2}DL*W0)Bm*fH{grq#tFWK~e{P1GX)RX%DeP)R5 z)({49n0HFQ+9+hI*0i)-{Ri$LKXT55!rQdZMNui_es-e5SKs)cW51!XQ5hMfI&$&o zuR#nsMBLu~a_>1SsU75ArdpYIY%GP)>8@;q7OXa}Zfo#Na;zIAq!V453K@}y!^4noqmce%XHx3v2#x{oVnD*z!Oc0XaGOeDfDCs0-VD z(n3n54fiN1fhkvdE~JsCD;HpT)mThT^<-%XeZ2Xw zHh_%p3NCJAUtf^W*}+^)pXqq<7ih*7P^+P+6y%ABhBqN%B%egd9umUfX@yBnhqh57$Sp0SS8h-znf2mETX?ui!tBxWmH2 z(xG2sy(G0$sgR|mU3v|5docqlMOQZJRs42hvo|)+Z~X*UJ1xSzTF?oZvRA9{uKL+PmKXfo)=FLp+d_6#9T-gXknVcb|~ zI)?f+Rdue7wfRsssk_ir#T%RGNr}}$ibjfkGLJLaRD1yogf;Noy)or@csK8 zxUD)ENFFNX-bX`2%QqR>&fGBp7y|7>7v4)(%6l-uIs{0;8;4|eX{ia=M(D=8Kziu+ zCWuM^X$v4N(a>^ggBL(H`bkL+4C4{(hHs&VqagHynKWYH0hJq5;hQdC;3mLw^k=9L zz%IHSE)b}ysfkKSH8wVSkC#~Ym00V;pCVX?LCdAD!${A~&5d5Y{2+5jLQE_UCg%27 zq1XqK5eX`bPJe#q=y#C=E(|goetQXvMlt(N!zTjw@BdgDYbsjWkHC_3$34YDK`|HB z)Vu@TEyNNSSEZacmjKON(uB}~&i^t^o&nk|%G1*mb)T9V|Mu-?P+r!LD)uAvO-$(F zLv0qy3JMC8_wKQg+U-~a&yJz|{BM-m!+vNlzcCvtWPtUOWaBrVELW{`;px!t>FJs8 zh#dM`(zfl5jA)@X*`IbgckBRqv5(pVP5?T+4tIM;M+a-CS9(0sc4GNfhO(%kO68kP zMAX-doE@!X*<_6JJ8mZ&(%Y|(+nZdP3WTrFYZJT&!G$b{VQGuG(L^bSmX_AL_wNO| z|G5c4U%%D@^F_p}^TL~<4>+#bwKdb_+vdaBcLA1BadRJdR#NlughN~iZu7%exBQe# zL+UKldTws+>D5(2|viqF}Krw(DSP?hqjCI(OIc7C?%=Jbh^dQb1XH0=>um?2sB6 zKcE5Nl?PB#ZtoJJ`aWe-GPtu(sk!QEB|8T=uZ?nme(=2l8LKSp?TdC_Px}9}5*@r( zG`IcnAI<&WHKu>&ZY%*U^^wI2x7&#Wz>JGw6oP#KHOM58`G{J4L4-o`pIsdOS9(E& zO+Mkp^~KKUHoz_;MdlP!E<66Z(Plr@D|q9d`OiW>)`#B28}>Ja16qCcRv~-uLKy(W z*`4z0UIeG97{GX7Kb-f?pc8gN%4}|J_0-%4iO1dQwG_LyTA7_LlxU9$IhUNq8ZsN)l(7Y}k$R=9F8S?P*-ne$H8U_PI0s@?| zI#s2C@i*y4;^6&~;$lr><2Gnxs2xe`tnzKlfPesdHR|iv9l2p0uDq7o4S^_SaopB< z`}Qp|5Rh=1XdZ0N_>l`lz^IWxWIxyFzx%7l3)1vuhBC+3pdedj-w*tEzTw}x{$(km z)fX=I4@vCrwE9=K`lq6HGLmE!7g!Z#@QqeZ5i$TKLtTiV-Sr6-41iSVCtI>SJvsZRvuO)8vKcQ{Ae2bUdLtvOgNBIkaqI5RV|69_s# z3L(LXIfcI$P)vz3a0-->%75}6lU}9JkBCi=85V?06N!oTAFzx9Vmv)!-)OhS%&WE_ za$(88dx^un#W=#fW%w{qM=+>xLJg{KqHs4U*-;k}S(k)R@@(~;+|FJQ!N4Pz_(J(K zjK^9p!V)G&-NOlJYzfI$aS-0BvOKS#2mN1ENFlx$k>!_2k8*g>yxRK%QA{@_EUI)l zocC5+_SVKm%Iui{ekVd?pl;H>{s0}d7ba@Gu9%LaKPyBWMmIS*IYS&xM{?goR^^$F zaq`-&ruaizU~ckl?e5mMwY6<;@9wr+lpjA#TV7sn(T{a~))vB$s$4)zC!el4UTo=c zXqf=D3PCJz#lCz)+24a1;-79aWas5+uMX$ftdEC7%jqk%HJ)^s!vXw}bWaw^2%@W3 zul@im>fq@33gF(8Cr?;OH{4o{)~BjsftXbM_|XKaj~Y=&WY-Pp7cVp+Q~H0(eM00x zjY>bjTU27f(@?W)e)s#r>`E4n2%}vfm7v2XwV@SBL~^cW{&397jezOfR59n)-UbPY2SJHW zgA?g6MX+c$COk}2%GP|`wh5r~74Q(s1x8O@T=-*RVlH03oD}{Xz5(fYDCq4W==Y(} zx@D>F!|K=#6P#S`O7c`&Z_HjOpK3T!NR&HC`b+z2*kJFw{LP0#v@!R zn>^Nw2&G{%QTi=Z-N_f))!ghX`Xd8_lyx)6^MY!MNv^7oZ+8TTiJV${?w*S`yz%Z?qhTLbdM|9n3WHN%lYV zpLOdk`g$S>e?nxpp4V1Sq{>3bdMsFpRqv+ZAxzKsAyJ5sm<(aw6!x=xN^Gx>*x0No_LeiPk$6ASy?2aG-M`t(_(^@>Q+Z%$HD zb~(Qz$z9L-5v%M$VE=Aolv`k;fJ@*6=U|Sr#;<}ok)xm1X=O)}`n$#*(u4jJ!G>f-$h%F*g28Lh$dHaM!!F3u~v(gf|&2VmT1XRSY)$d zI89M8>)^N?4`w)$9SoEHdYH<*kJ?qgcr550^>YM@#>u6F664QHpA_4UrHKW$7P-R6 zGqGINXoBs%hX?ra*zRCgj=BzyOf{MwDH`k7BKq^;YA4babpG@o9XxAF*xSq@#$ z8mvJT^F5AL*3`$T8}zUz+VOpEaDO)i7q@WHa%aJ#CF9P3!zBS zvMODs`2K-E+I#rZofUO{=5X?(TiIPA$6^mmG9(UyIdV3qqnk{X8|%%TC0z14>ofZv z-1sUntQ1M}`%Uemqpjo()~)@g_#{pd!;?cNBX}z9=LH3>n#tL0&-Z}*FxV?CzG1ODdvezFGv>dac~ z5f&Y0lv&!1ebmWeVI@QL;*Ju*t=diruHPXOmvtReFJ-b79b57eOR0N1QMGSOrCyvM zcoayi**uN;C@*(<=Hd=sjmI79F5wKy#g*!BSVT~o^!GdG*LhwWNjPDiN992Jv)GCMZSDfvW_uC}+?u1(dN-ivrt@FbhH|3pnR zwR@iGV3otdzLH}iO(^W#`Q9a~;qbB<)7_hHNIMH!eG*$hz^LY<&^UQSFF4|IPaz|Y z$X-R^p@Ey{p_5g0?DTQjA+f{RSd1vX<$#O-$^5MyNsU)qFY6Zu`K^a1B8vW0;ni{^ zJ=wLT30@gw9$K|uf8riyi{hrZAlmY|Yes(mNJY1UiFqoY(~Zq03TMS>GNLIHuYIW6 z{{gq#^&@)kw5{&KxHGhmA4NqC!Xo{REp`wZkramLKWZ8T8ll0#It{=AQm6Av+R*mk0B{} zZx3f&n#Hf2#}#d1=6A}hqHVZLPfJM#DSYmlht=`1Tv}Y?n))SIBXG(iqC;OEJTzX4 zTZP#c=n;Ku*&I_mk9^bUE@4GYIX2_SOwj~U;Q99zl*J)0J^w}7!n*mvB5&6c^iB=0 z0J(OC)wUt6BgT|@%az8$u_fCF#Dk<>4-)fsee*t~pk<=m6DrO;)PCiiUyKdyqhNL< z{UPI~=ztPik|a^ADtw<4`TdaTTBMHIdwGT{d1J!rO}jh9FDag7__U1ucuh_?LRi}A z(-kUwdcz)fGl{7#hHbM^$D;Fch0$C8nJMd=eO?(}6*wohS;sWQMW%5G%Gk34Bvj2l34Sh?1`I zY?OtG?w<2#X`2>jQRnEgPhl`nmyT@EOL1=T?mZQW(aw2@TYmfHiv^L`{JeWnG{4?_ zV~j#$tWTO{VP@Rv9Fb_GKi#k>(q>nEW3QvgR25Njvqc;0XD;?$?`Hb zA@oujV5UTO977q^uHfNO!~6~OLyqwfqh4oJxEVhe7Z;*o0OQsLKzSHYKFp(3z*(Sz zAIc(MRa;vN-FptS3_TbQ*v-ZjG15PjXS1FXA9R$pYKQ=)Zja#j6wPPPYBm1?1rXo6 z=fGj(<7#gr7WCz^ISY6eqyChd0J0)-x3k4ab1OjA$?hH_!`(mS=$`ozdIHt~!d#r~ zWOJqt(2^E2p@p?|yzR;$u!~-SLT6#RZ6RpPTD2FYqPQQ!P51@|Hg$CPgK9CevC#$k zgig2ua00~uN(u`L^NoiBQe~63Tj{baU{*R6CxDvaRXjE2Ar!c}wsyEyGzEfZ6(O%p z%EAty4@0G13?8erjt4t}R)fw92_*iLwA!k`ur7=DGlv9*xltbiV7 zh3_!E7^0644TS=W^9m?yKF0H3J@Kip;x8k6^6uSc3w5l;*6hzDRKoM+b+Ol`f8;P&hOhmfEg71DZ1hz5+m4lO}UFP;DrX z>kLNo9}4^6CYp{Fp1|;qO~{Nw0e26MJcIs}>;A+XaWB45+N%`;9AyFV3MMQNjp~Pn z_G4CHjD8fu@91#25Q=sMlqA67yQ?EX0I=Wa>Nda#kI-4(ePg4ey+D&Z5f%okTQRO8 z3=?e`@^;I;i68*u$;;bMz60K_x~=UKfbP!`5v?$$w1ZX#e@zJp7GV~E)6TV=d)CIW z>xV=fBqVzl%*Tq}&%rSUbhL850oo(r7vL`LKYX|xuoK0qiwUG8kRu4M07NDYs2YhJ z^jerrg02h^dR!AVn^B{}3)+`BU^M zFc9G$fR;sLcG%Q}6nZxBQx4%cfgE<(pRg~U+8g@ zAOAk^rxApfUn>}D4rQVM@vLgj;q-W4|NQI}V#*s{V1sx8-W<6xNYo?%_6X*NHI&KI z>)`8Lny{au0-D88y{IU2sXbh{%x(>3@DCEFVukl6%}WoVaXA zEE{e`xB4BHpt!X34KpFK zJ*=czz>G%;xyQ&R_ugj1!^Dh({e$_&Dc*i#GK@T@xb;8yvdX1mAe3-`PeXKNa9BnG1H`J` zh}{@SAq|E=vSchw%-I124PEFL^^J|Jps<1R)*I~sV(%AlOWO27er|!=XLe;p93tZu z?dv=A^w`W(0+r@df^d2Ll6&W~4WIIj20nHP9{WvJIBV1oA2DYQ!QgLCq*R! z)Dd|yy)zC!I3Xa?UKN@s0l%?+%rnnLF~o()N+dmv-eC2uc8M;7r$EXOm`w8^j-LgP zIu4DF|K)NpG+D#xFEOtV9quflfeyI{Eby}T6#ZRZU?>r#2I2O0cC?Rnmw87)vdHO? zG{K_*ov&1M38PicwQjw$&wcz6qKr{>_{9D&`fsM3vA)K-J6b=LFO86;KKv0NU#AehIFWHUbS7 zL_OCfB_ScHJlPh1>*aL_D1_T#^A4MSX9DQwyeSB46rKiH!sYyQzde#GP(j1>8_?ry zpx!t75kVg%%iS$R=w?v=5+P==iCEu7a2V$Tw+zSz?O@sqFGVixHt6o03vHpv;N=5{ z`$s5iZ%j=yfV7)OOCdkF&>SPc2j8U&LK7gjwrxkK#jjqy0)I`LK76q*aJn}i%De;d zs25@cxMq)v3IPbxB=|niJ@Iecs0D_y7HX^ENG{bz`3^2{d(wGW1zFt8I9=e@XR|P zNACcH1FHx6Bk<}V-3Vlmc;G$#NO^96{D4B1L{oEGpr{Y@lwrsU5JyZv%7Yx)fu-Hv zZez*=oC`7q!yF_X@>S=z0y}RMGFgNKKu3ja`!oZF2G|KpfNsp z_|SKM(z&Zwj6v?_%|E{f;z3{m86N@*BaEUzIsO?AY^(V3-WswWpu5%9)ZCrer=p_T z0-V!Vva0YCZ7+8RzZp3q4(Ak-AuWLyLR!ScB5_B_9cfe{35 z^JrdM`W;h{34vm)9T^D+LUyx_sp@5!o#~|G5*h5lQ((6?oSi|k&9zyUQFmVBKtWsn zHCjN2)Kd6>PFsk7Lc)DO?(1b?eu$7lp$MWc$mt7k`}?H!a4rDcO$ZnQX9La4?z*1a%59JS_h%@0pts;) z0)s`!_78ik%t*L#`XL9bn>5vsYmc{P8$d^U0QysupzA2BnW}2k!bX4pYY#qkin9&h zcRdCY`;()i5nwDpvw(W9hJOA&k}@AU@~XZ>YCj6^1ZXEVj5?U_1mB^$A8e;;{>yLa-)?#}J&$-W8x= z?aL+T)V{ll__)^ABmsXR)OZr(PRC|@5Ov@}9&|_*K_Mt0U%q_l2R|FMS)^{FU@N%6 zv*ZDDzy)inxCJ)8N5fZ%=4h*&%!15qkJMGNq+qJk&u)m1MDwsN6ZYzdJ`28 z$N=7ZfL2EV^nQjsV~JIwZWIJaU#1%0M*^l!=xQjW(gK`jH|oE_JXOu5*G>p<+oo$H zzn}oARG@HJtPZn4pB1yRVntLRK-wYV=rAXNJ?;`%WpT-P6E1-92y_Jy5rv`i8N%!U zbD=iaFTi8s3F>(s_^q6!&O5lKm^G_Wh;Tby<3$8UA8>$apB!w37q(Nl?p}vm(}&SB zU8N}C^XF?1q@oOnDiIMD1Z8-H7gAD}+tm&s&t~iJgzkgw51cdL7_0+gdE-C;$n|?r zwh^ltxD#@0SLFY~y}AmRivfk?S}llyq}&JwAtZ=l3Q#R~c!d%Aq4~l~M9Xl@OpQu` z3F7~9b}QCZIxorq;PnB30EViS+tX}oG3{aZ_HX9* z=e?GC4UPs*+aE$6`WeX0fvCSf<4BLRI?PS_jeq{jVrDr69|wqfczURHEKshYf1&Lz|?_a$G2uL1ZEnXuhJpfUaH*TIXOKbxC(C@ImMosT6{?7mUn zf?m|p~VgnM5c6cGk%k;|mG#w|1vA~DItr>JQNpM<}Sj?b< zidqVn1!!LjzJe6BGEQhTbzn<}Fh!?*N{j3>Hax38%tv3DGz4KF?*du|SP5hiKy87^ z6lt3<>;i{?T3m{Ac5;H7>t)~B23Hph^-yKNSBp>?2f!R`@S1yI5im|KEIb8S@`a@2 z0`MG*Fx8Cm0L%qh(^cZ*Z3ZzNorDETH*n8X6?`!@pK7h(rGv zo)?0a-nM3geFNqPMAt_8GjtjyD2Xu2z~n5-_X6^pu?Pmn8bFzVML)ttRFr#wn-b$% z2mT4%y$N<}qll>wc!orhCFm7k#%S7}tf@i6!wYooSiwkrt zQf>>68&qPOkTc`9lh7bfHr&tWAZRp!b3&qfbJGGH9UX;ak7G{?lFR%0)L!>H+-2(am;bK2MU2glSt3qPF~GyDda3 zt74BBDz7$V4@jeRGH&?*{_{=8LZpRGgJFNs7ndT=VOSjfj=(Sny)@8SVU}SBrw&*j ze1IoITy@~N!>oolKY&jvmDw=>8G@`1D4Y~9hQEhT;S&-zw}&rc;G~=Yf0}aXEUe>S zh@0*tNfH?In_!B%Pz`{h#B%O(fzbdZ%+!dvi9EFwj5229#gAud-xoZF$6?r{o&gG^ zW0SZT#(ii9hyf#{3%rRfh^Y|TWCD!y;A7TiCvFL0Ad#2n^|^tJ0+}1+&{kSyAG9+|N-_E*f}qpn!tBuLtoo2hddyx*|YCV8xI}^7Z%Eg{BuJ;2eS| z+t8E{e<>iBFlH@ua3r!me*AcMWhfA8u`EDU@k41~VdXPbMHLkZ8I<$8pWVKG{m}x< zaq~QXmH2-Ro&Pv<3oea9fmEwF006qsiGgL#bvtzeZ`XH!CQ8cNNUSukTE#&k(?T45 zhmVm8x)371s89MZ_=%>DcK*)cjiJ)rX=F3_DC3<{VF;*gs#@)Sy^mXpdy zrlzyQC7X@OXdudvSO%XU8-J%&93)@@4EzYq1nFa{di}bnFdX&lnWLpvPLd!J1Xtr| zp=sJCtVlsM+n9Ts@94-Dk zz*ZlWL`M$Om!KwelF@Dm?!VpA<$ty}XrN!Xu=VH9rS`;Uuqu+UH83+SR(oDRI6rW8 zV=OD$km0*Ac|o)UN^#1aOUCWy^-ZZi>)i(r_%2aIOEO9&93Fg$>rC&xw4+&r+Thzla5Y{eeo zOf_rJVfR!12~@s8=YlIY0pgK{em|0Lh!5qo^7wLLE~Mnh_M|3rHvEM+gM|mzluHo8 zbCQv{4mp;TmGz~{QbRvTjQ$IG&doPE=i+JcP6ORL+jVlKZ|8o!^j2%?F^$+`kqYJf zl$VdMi{$J%rA}&?R{S}0GA$@5EELMh_^6VR@&WB8!8O&FXrE}_Jq@|@&h@HjbIi2| z;W~Pq8-Zb89yM2@4!wvNoBz!VQ0dq~H`CtkXw_-mc^I?Aqay1M3`Tl7JrsD%YJkjQ zc6N4Np2s_}=TYFe=qIW)8lZ&%1QM7FRW#{D2TVE7$}wOK@RJJw)$0R%Y#!teqO&l$ zABxL?w1Tc00SIh1UET_IGWxt~vla{aWP7{Br2Dxm#9SwIXZ0nvfq?oG7GAVX{R?4sgsCAN@{4Q_MHGzObqX9sL^J1G6z8wZ z31bbRh9)E?zEV|f2Ym6{CU0m7gobkX>yrg0cP)tGu%uK>goIL!cmpsPaXuk68=;xt zoQ^VkCNQ=^k&$fz`{Q-Mt3~ccR{{G6Ech{_3O<63*dN>3aaJ96m^&;dhQ5%N)(4QE z!TZAmE)2Xd4C9#(Tr11VqlC^6yZC`LtTb+WDw1H_JBJjaw@FR^gP#id!GOO#?tl4( zg8z!U|5}Uw>x=(AvGd=uJ^%jV|E0nHTi5-s7N&pog8jd^cSEegOx_tdks|a54-7_Dfpj#Z%W*#QfI?ZIG{{m|RopT9Ossd5gIjF#E>|IqqXrAoKEN_k%ebZc>vds9vdGF%Lp`SpOSqE#tfbz)FUi{bnEBNb(?iO0yy++Fml zNRj@}`ZqMVH`LFxG#1I7^a_DKb{5H?++0?qI_v6EK?9MbEs}rz`lg(mT(K&n)848m z490NOT9N)XCKeVCRAz)#i;J60x8y7s_wexG#9{I1?UjM2=~&rgEMrSPR@D_>${Jb% zgdGmT%iuaTgmK4Ity;nO3bs_PfXmP11NcF@Wm{Ks2D>Q!*Rg~-a@EGCos5h3@^24 z#TbA%@IAp`Fk^mGe`ONd>h|`wi@UgU@Y)|ISRDIFM;|z@Hlz@uMF>j=k}M(xuGtlh zkh?4V@!`WHK&5TPKh6ttAV?^U}Jwd()$BnmR(o%L>_U&v)p~cTrilfC2yx zpAaOPl9H0(;9$*&2gp9dsI@v?5(HJfjevHESX#C>0G~S%{3&N=>cP3ER5sBG=Ye3wkyU{U z6&m;?r0Nd2b+T6wdcOy^vo|i87>E@Bz~Ss!Hc(94J3A`nZ1?^7!pQo5`yYkdY8NOY zzeoTxOKn#dUe?g3p_NP15yqJ_qsCbcD}T1Zu8DZxAqZ6}=IGWaCiMrwWz7v6v;ezj z>m3N$Qi~0H$beZ8aLg@zWywr|1K{hZ)-o zL9)uqaH>T`nSXK=?4WQkd&BPOulRLsnu$Hz%;(>r)UYvyu#`-y$s9xKk{sy>dph1k_0 zjY|KnA{*l!9A|ivP&GRu=+QWC`?+n5_t@BW($#NYI(UD5+FR=-bkoHSTRa**Qe2pZ zo>^M5#KI)VvyxZvhu`vI`8MAbEFK2_3wNomxmohn+j@ksUS)v_0LRFdDv#GMAcjrEUIW~0`0&>e%J6l)&5%vq8 zy2mi&k_TeI&Vz@-2ah7NPYxE)E=eN17Un0!w*jj=ZSH=oQqfdD7I(=kN0AU*v1Ub) zfLgBIy7d$a5a=VYdHqU{Bg*<@_^RO2t{EfBc4g5ZDYBRhGlRr3ckBX6E70Lg6fT=+ zV62>lqmriTg&lg@ARW9un3&Ai7y8&; z)ffw68E9yxVXo6f;**LBgv=iKf@a33knSsA~ra*f?Q&~bcGR@oWB`zdBra|QP+J+SIzp&6LK96fQ(zz z;ehia$~NXP1P<4v!#(hOz$uL?$yPx%IFpR1`cOh4L$tK+0{cPD#f8zAFd0OUXga>@ zC06=Adb)4-?piNv+QchzmNyr{lWq`^s*JBYzC<*snb!&#@};)~?8!z%N^Pd{ipx^2R}0}MEOxdH zb$qof<}T9kTs=RA+U7AjbW1_?v6K`p5fKqmfKN`c$JU@7(cc!2)`Hid(t`=-U0&lr zloeCS{0&5>1-u7$Xfm4b3zA$=P>}WD)RI*R0!AS$AwJ>MQC_PlW*u|!@1JQ0BVBIK zV2FTumw&VR0+d8@w*##hr{51-TU$rV8Bb46ieYh!7eZ8^EdEiyrAc@h8l@jm-=1_F zVsyN}gzeJ()6K?Xr8tjTxL4S9}TQ1JKm z(W~=Nx7fLOu(=#DIU9XEfWH5J--qdm&3*nObdy$-iGx);J}3*&DlFhPEY_>e-Nwzh zZhva9cR5NHI(?{~MG)E12pT;omY@V;M|KR(=8<5)`RMj=Hl)FWe#j3^-lVvxX1RXZ z<_0k_)cYrq`4Uoi%?QT@oG>p}I&1OtyCNxd7zCcX2?tQr5CkHlKd&O6ixT3Yb|UyEvJgta&p&+h+4qJ1U#r*S@8L&*b7k)9=b=UjM&h^sB9XuNNxgyn!E-%J^+(L{pt1Pp6>nNClw*VF4!^JK
  • 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 literal 0 HcmV?d00001 diff --git a/doc/img/Configurations.xcf b/doc/img/Configurations.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c3fbab3ad6435ae2b2f687e0028e0a60da65ea62 GIT binary patch literal 94059 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 z z(9qRtacI$^f|&0KGrnk#`>bI<6_q2tO~imEad!eAyF59oN*~G zBrbdA+{}p~6H;O=LW+PPHcS+v4U3I13rSDBQjmLbaR{X!ck=GtJy9XwKX`C&Ye>lF zx9{IxXBnae@}9xk@$h$qb{za2t{n@1hiS(U7w4gx*vK<3&heUvec!-H>dt(VVEh*^ z%&IW(TQrH&TwHogEt)cR>2w$8NX_^$D_nX;YA0`T=^4TQ4cATre^}APEiSR)qEKx( z)HpO(ak(J>>grJFjF!;)Ee5U6S(mqQbj<49jnJBwAv6s-5IQC<)FfCNnYB?Ie0Sl3 z;QLF1p`~~BMg@O<=ic3o!NF^8-@pE`WpM8JEiR$_2!)ykYv+?F)8P9+d*S!s@N++h zYo`Q{Jry}OXG-vj%y5g~A|M_SCWBn1OAt zy|(KQwzX?_r3C^iNht^eMr4!nE6(T?2MJNL0HOjh3sF>}W+8)!M%c!-78JL!^26>{ zpZD%tT9H2>v56tP$#b9Qy=(8@_r2TQ?HxfH3pjNSd1KnEb6iU_u1UKcjxEEERVV+r z`o8148wFR#uJ6-3lA$(3Knl1hs>a)8_s9XQeWdZAJ<(W`4%+RzdbIY`rrWO{J2Baw zTtR&gIBbr992QuA?^h`A^oI_u9O}udN>n*;agCt+%CuZ3eHS zK$IO`SE1PR)`i>2a}A;x-zwJs(BJ>LOFVSt%D{e6+~AxanMbSLO@{e(DW9uht)Z-KY{y!h`q+J(dVaK`oKF49RJd+Qg`uo!wBA?2uCEZU zTwk=L>x-7uWFAefr6%8Kx^VmEuRB?jXNXCOXWbW-?u*GiH(Pw3ShD5LHa3D3_VHHP zIn<)H4s6_Djc>J5SNl%7t^4{0`rox$cVCYGwzkNcs^<+hE2>|5z1ChArC%?RpFQuwbWCZ>PVIY`;+`T#q-n({+N-)N8qRBwQejoj65{ z#Adya3h)L|*{`S*gM%hP$|Elc0vs@{X{pgnpkV9SR~|!7XxMJpdRCsH$mEab zB0$qa$o zUe430Y~$)$;m7a`__d;1$$XbaqlS$UlMOGEhn3I;Lof=PVJmEh9k3I2!y(mL4i>`_ zSPFSq30*J*qp%sa!gkmJJ7G5*QuT7M7?!|N$iqtLf*}}%&9D`=!w%R9yWx8CD| zjrP|H6lXm*e!D00=D(RUn8c| zcQX4dLe7!&Ly~#CKTj!L)Bh-$Hvsn0Y~lPna$2u$S#N@63!>g)}KISbB)bKqR4zJzfSjwh)j!%5}Xj^j&H(?5GGnQ#`I4d=kQaGoM9=t<9> ge)kUb$$0N=>^l#`cJ=PY?r{GOos*rH2f8!;4a?VwEC2ui literal 0 HcmV?d00001 diff --git a/doc/img/MainWindow.png b/doc/img/MainWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..cac8a5e992e56bda5177a73b0a7c048b94b85a1d GIT binary patch literal 17455 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 E0Dy8<`v3p{ literal 0 HcmV?d00001 diff --git a/doc/img/Workspace_create_rx.png b/doc/img/Workspace_create_rx.png new file mode 100644 index 0000000000000000000000000000000000000000..168689e776387572de41f6091d8945c1847653a6 GIT binary patch literal 11689 zcmch-byQVR+b_BR1q7u9gHS-EQCeE0K}w{gq(h`bT0*2mLAs=*qy?l^1f;tpHYsd6 zHqvk&-f{2vzH{!lW1REPS!0MxH*4(~&-~S#A*#x!w*wKxZ_CgPxgBV5oAJc3<@MP~ z)rkat`dMtp$0olysX!9$HwkY^ByrKQ z(PXCBtvKl1hNfq>ggZK|m_C2b`9Y3{hsS5)X6cKuvVSyx`Ywv;SNr>r2r+1IM&A@z z$HWfoJIo2WI?nAJ5Cmm>&01}XZVe`;!9`GR-grbemZp2#Cnl6+)y%T9FIAEG2s_DS zYvOz_Tj;2D*&smJVvFOsT@>)B;-WHUn}UgQvUBh*Ui`N^WHgsg+-&(H zF|IFy5H51Dv$5eI{K4e34Pjj~6SbapJ8nrfn8t=KM$)jfIgTydFcC7VV_re#QH*X& zkc~>-lgWhK;rl{|-6b!E+T4vb``hwYZ(>YB`_Xb@sFt7~#%$Rc)(%)tv>uZLvUuBC zwYMwKP_L$>q)>63&Y#vF=_DjPc<`Xbcc ztIbgR>uxE5Dwyt<)-n0{`Jr4Sf)5@X92|`akFNcx9{={?YMPI=70U&`VOw1;-8yCl z(aB6jD&!uIz|H%PQcumyA|eB0*u-PB*d%hwzf$-to!yp?YK^23@V-)PQ2yqJQJHpD zMB!Rs2)RON*xZ~Q*7xb#0gsr1d(DJg9G_L2-%0AS`jqlI0QchA2AVGXXnegu{F#2H zSCh@@Va19w)4zXc?|+fy$n*lb`L8`PeYm?)VWEXGk9yl2;jLIV<{#j1^D6^QA1T#; z+tP#3#ezQlNon=*4f1hk8nq8D5mSN3RUXxc7p$HVRDT=o?EfHNwsBhKXEYmMO4OKg zFgaPz6YyhotX#GyRTPn+r!=f_J{TEjw64&NV!W%8(r$Fm(b2KtblWCR=}&D{Pu)c) zVdtfL(*}D@c&sg1h-q{CRYv(k%-RzM zaueesDcW~mOG>nl7KHHdj%FC%qzSvF(sCxuPStzXx~;!NrJqpQG$KfvnD^|Q-3P`8 zFMkRms(C}>4XCIO30JROyEk2rwafR@lpD=Z$Xan2TsVH()=7X*fbkv~!SJPh_@Jh$ zIz2x>KQ|EEEtS?#k0rqrGg<3d_0RQ-9S`3>jy^IGS@z|EYg)W!;W}-{T^4)&g;Nu?csAP>M1kI};Jv%GNEu-JKpWx(C)8ZawQF zoW#gJ_K)CGI!D1|1~u6~6?R+{1c+bjT-P%}Vg%p4hN;#St$Rc~ov<+Owj@FIEzUWz zh%>H@OWN>rhw9lo6&IoW?k8zaXIWE}TaE5vW8;X_xKmJ4e$L5m)$`FknL!bw(7WBA z9tP}VW64LwYH9*UNU_NVW1Jr`(E`MB32gjZ3p~X+#F6MvVH7fOa@zjmW@%w!t8em| zs@o7j@-#dcIJMKMm^>@VeCe*R%(dUf^1^OsnN z{H2h#HeamoeYu%eOfw#_;d#7Ba=wd(1&)whb@?So{&-B?VPuvGSLp>RJtZKZ{+mMo z>d{Qsy{E=*0`omK6V{BX>aTa%;WcsvYwF|$onbq!BFRQl36w;e< z0%nTM&CL;Mf~h}@_V+O?9Bd}#+6al($U7&Tq`XqQ5CQE0ldT85&hLVnv)0pe#y+?H z(xgfA(G{xMzp{5taKvd|0a0bkLRZljbkNRRec)m}l>bysjTBK8(wF(q z700RnN3g22q{QgnHL|vWnV|!x#Z3Cl)UiK29V>)_^$QwDPoF5eoV}XqvC%4aadvWX z^eRvs;Y>A1Eh^#^6BBEe4syOV)#&EilUh$!>i$!fyyYFuv)YS=f6pQ$`2P43zaA>* zd2VMH7ng*Gxc*aNka)5Ejt8;)>XQ7P^z3Hwu%=3IHsxQ+-HY^yhK6P@@&0knhhOHU zg49i0Qco&B$}xKEZ>9$a%WjC(qX*c7f`VWcDirxk5^fyDx|<~ka@uIGX}{2z#7)fa z;ZYB7rVmqBzH?m1e8;1s$wquie9y(@l@OB4#zXF75bx;VG!t#Z*gA1ie-F2(Xy&u- zmy)sa;X=c6Vu|F`7pkd_pyt~y99BkD)%7w4&}G~_%}<{q_l&+HC-O7Hg(w1|OaHdE z@+M(?EX++co`zt3@93}@-F!~z)lgBfJN+X7of)W(9%vM>SmbAvC#w)^8Kv(2{ehvg zv-4Czx!Qi_XK`a{dQMVOLh0F+x8dQJL$o`M%RT>j<>+Xt8L56MEVNzhPC05Ep+k6Y zbVc8_di;V%Kp@UQd&6LAvevDDJK(@~O{~h+0t4ZAy>F zshn%1IPPsTV_5Ut7Gl&R?rANs+qtb<_%Fx%2u+^&^SCi#^$ zEg$WFcVS_nSi5rKn|G8ct}+2ZGDVhVUKV$PD)R-TLN_`wkv>27y+St7wn@u7TU3#^ z&Ehbo;PJ@k$4Q0aFNVZLeb?(SsCx9`=RQm2RKW+Y+D(aq%bgFnk@xLc)-j>Y<~VAt z_BsVasY0(j{1C^-|$kyMcXOLJILC`HrPVDuM9O#FL6vtpNT|N_GLkH@8ymFzbbU*@mAL6*hsF*@TBe=A- zwzj@iSy&h$@m-5mV{B}!kBV!u!8?rey}j`Bl%;MEUk~bl~}I@Ox8HQ%_VDI^m5F3CzCCeQGW4+xWRSqj}3^R4yb-Oujz{9L-h1S?TJPf1D6tLm&4+1%V{l%`knJ|D01(vq>BEpl61 zX5yFYZEWoy-59G}5h;rqN0{WX5oxuv3DN9ECA{0@^-D*-g8iN{)=rL&WaMN$ zDWW+VtY<4l=~^RB>%t6yy*F`vGYM`7TK`m%!oQ8vdG4vc|1Y-zIU{#GJ4{%yuU5h@Tzr%r=L0b#^YZiMVf0>({#S<+G&- zyR8rAJy}bj6||q8Z;Sr-?_Y%VT0%xfhR5!*nT3VhLi<(zBz=qPii#arIJmqUUZj%6 zWiqC-`A-W>xpnOAH%CiNEV>dGR#)qce)yZOwr|cf*;veu+ckEXa<@j@)KXXP58vr$ zV`IB1@G@B;JAdaX7Z(={h3-e0~PSNwg-jyuUxnFErMeO=D&OZY$ zf!(|CP~+*-5Gi^jUeF;UCub2F0bYuLkPyhyTCbz2$>j9-z-IVM0W)V?QZ*OnAsXF-$qK%2_XvW9OxYBAP#fDm}KtYYZXPL5*{gKf2>(tcj z6a*}xtnBPrtpU~5)vx|@VdgB>vBRY3(^Umcf4_%fWBkt*-(XH6X%{YIN-wQ;|34Sf z+u(gveo5flUTsjE#YZuY61vgOiHztRMHoVHVU^)aObWw%!15=CFi|A6AY8z+0j8r zOst};%wMX7pDyqwFTv8*c5Pw72x1sV-0GY&nvH`*mZfZt-n9Yr*pv(gyhoec^)+iX>n#QuAE0C$kONbj*jt4TbtS0 zLGO~oUAwZOWEYgP5u{Kv(1e1*1U-rjI;l(8{>BX z55EsOWXLhCz=~CMCgF+w-z? z-dTN?iGqZIy#Eh~c+N^IPuL6*VSc?0Mr!yp;_bn{;ej@K{0*&+_&pA74g%2sbPFNdZ0dv0qp$}UiqC&M?1hlAsB zo(8`Od&8*GAlkX8s7Q&a{L7cspliYU~6fO3=R&Ozu0M}RncIk5TT7cJuwR; zu{JO+jc=Xf+eojb@)02o_xX4oflk2=MW* z2{|wQ?Mm9klWqF>laWkbLqmh7+YCSgW<^0kpm$HpG8v8^Q8HN5&e0lXsg zV)UN>Eg&gV)A^=gVytNp&cGewsD+NW#f1eO9UZ8guF1)ijNDqcjrH-W;@4b_$I}7C zGLf_#6a>KOt{YSO+S>RCEiG*{(_?NPo&oC$Do(w(@801eVrg`glz;#J1$hYgb^ZEv ztGYVHSaz%N%C)*zJBZ({x6{+pP|4udV`D2l_g;obse2Bao0~&TW}dPH{9tBf)%|Ko zn$(rbZ5CQpB@pmKPDLg1?OSFJjyw3qV`XL#A(4`j0^lX^+a@L@-9(bbeNTa_5mk#q zi=wB224ByNl7E|WqrCSfp?|(WTP!Rrm|r+}M0IaT&DQwyd{4Go>0l)C^~LDv=~-Ap z+Dtk1YcL~*zV+@~8DU`^%R>b`+}y*(hT;I3siK}@4vsCJJ zu-)6M8l%v>;AqjEtfQv(T+e-dqB=V}`}y< z@QYGaJL|O@mA2!Qrzhbwyq51_$!;%nm~oGN(JB9|oKgea{>Le<&Gg~Jhle@k=3T5T zEa}Xww{Cr(n(_hSWQ_rCc+nDm-OzhCCLuuw`1#SJM{KOD!-db{Qc^?#yo7~o0n+|1 zE~08&3c7W#6h95L_B?3`sd$2hysxdZGdv;!gcE&QPfm{l%z+O52Pqku?nJ%IyvK z?BMXB%``_jB{U?&!PWJ2G0j(so)npA^hJTZZfW^kRu)CeKb-3WbK$wSo~OYYqu{bJ zRS(^LLeXqoD*5OU%ICK6;xD+iHUOvduyE0{drGv>OJ?=DPoe7kD)W| zrrgNe$Vdp#gp#^G2ltT7h@THmY|Ec4CvqDP>r&i(7BA#0ea#>3@;t8AK}$u3^Jn4OiyOhI60XIFF4&=55`I?CkQ-`2*$ z#ierg_0y+M02;ejQ^kFKWMo>tS`9S7qaY@rnAYKyYkw*LH?R>px-^i`85#71goL3P z<~^x2w6v!udnjT$vE(A!n>U}qHz7()0|Numw8D|p56WCth6yRz>^CzfapOZr@zs$_c=;$Zb*7*Se0m?aSEG&7GXC);i(RWpD7~Ve| zerAWJs{H!(V+OOVY-^Ez?cvc;u}--;tOQ7?dCWU|&3OCv!#oY2Lv#*OV%!`W7^0aMNg2M6ox>-FK^YHJr4 z7aIe08dn{RK}04eC!fDaO~ct46MB`cJNbc$i2VTC8Ty)a7T?j)0kY2X-)cf)qQ@b| z%A29Iv{bi{5&?BcLq-PqN0DANxBc{YP;A<|x~}UJ2S*!?IpY9!VxsO@mx3hs_X5m1 zX|S5zy9Vzcv;@{?;^+SdLKkcRdbD&7Y>X6rU*WT=C0Ds95bVl2I%B{OETM;M zRjBSXaTPbQ2M@+NI>It?v$C?_6GKqNj}_zIs`?=EhLmERwGL_Z7;h+xT?NV*8~GP0Db&tLl|~gw3#WEiRT@v^@xchKYpa}X2%yTqsK@Q1wYZ(x2;1JauuV@54&+BfY0%++~757x%@$H{_o#P@R2ZV zRFsr3;VDJC`&)CMa_#Ik_V?Wph%Gx}IoOz)M;p9_Y4-T}`GIF)f1uxzH#Rm_T3VVy z8djr}v^0nA*SF2akWj>Zgt(5()AQ(#V(b^g##2xPAjQ*sPhY`r%gDTOIIGqxl1zvF z03v*R?P^D}h>L2>6o<+5`2GgkVreRLoEH#KNE)mW0`xQ!Ei1M#3Ls*8dNvA*8+6M| zL$($t05*Z?uG7*QsH)m8cGJw^l<`@korTD!p5#jB=I0B&+Rkch6h{WB-fjw+(_eE* zWNZTi1}@WY$_m?W2FRFJWWTua)W7B(rq85pY01*bX{Wch7jVKGd@FK`f&h)}C1%JP zqfYTuLjwbr8I;1m^~occ-H{$O)|eYCR&xwwzjRky%8!)s0kp0lmxjdi0sj~ zV*mh@m{!Kh7on11jbTlLqXUxyQiVIAv%8y9R5Yas#KDj?pR^iS8~`S*Vgo)}LN4u+ zX=ovoe;?ZU^z;-S&#~|TLI+sv>kxbXGqAH$3D}{mjQg;zQjQUX+4lB!jl&%7B%}iL zh`p;TM1SjJ<#z$9Rm@7X*~QWtEqYSTI%4~RZ_$bSTt+abKClMO%(5kJeX?j@aI}5# zVo8(=hT!F74YWhCk?j9*klWjihvg?t#NuB|OVjN*K8y%QA6XrZ(&OSv=IutDY8 z?Ebe7_cl}(SrEMjuUEg`k^-ASCzS_k4>xBX6>17Q&dd4V5)lyrk>dc(5>f;}0jUc> zbMM+^JiOqIhNJGODKP+GU`klp2<*`eg8PSf2|fkZEQ29Krk9uhH2V5_yuWtiMq+%t zCG}gx$ksL`Iy!Rz4Q3E})4Je@^$9uzLk`gQyi^?Xj`7?J_S9@b@n=Y%J0&n46meNwBuGBu65ps;Vj{hd){By7q^Kfjq`HaRGf69 zg&YN<%!r4>Ksy)C%6V2ziSm4Rm`KN&9rK(ey3LQ32=rr`H$O?D)8@$l9J8c-62a}7>w*^ z9X&mO*fUV^k0d3zg{$P`P7CcZhnmd*YtJgID;(xzq8Oj3tAoU54pn&kI3he8 z9I37q#rE*vASO0e3_P(kuR*O6`Jz9GHD%Xn>ps)*KP0kM*nQIo zWNPKh$v>E3&?l5!26~JC36GXCBNN5IKeMd_Z3yqJj*)MeNaNSv0_=i{DDG^zCUhB;`33Zt1?HojlOW@sXQ>|0hQZ7(g1C%?*%)ld#hS6H9ES*HQs}5|G#mwOtPEI(iNU6y7F?Indb#3 z#lqXzqRb{@%o(nzFP_)05(Fvdc$OF6opG$bj2qCgkf=?|Lt3HgbabDlu#3p7VusRw z=5hUeYzBowkm1V2gOhx>sop_%XkN+KD%h57_d0>y43p4|{DOjk{{D{&cY>SlXA_vy zTc-<+ljD`^@+2sI$USac?;te&L6zKXD_ZTXyB6mxlu}T@7TpF1K|Bv=Jgq>`6%^Qj z&<$DGa))O{R=-jcY0;BDLF_igL!`h_imon?y1@w=5n2^?%EsfEGj2dh+DMDTEiCH0 z8I)HV$1aRWT!|0Ky_m^tc_~Eoj9Z;zh>W{bt>bONTiqh6B>W2j^YKq~BQ*6-GR&VR z;>MEll=62<4La6;le&eE+eS`u0mtu?#`cY3k6jEcuc`YAzwPx4YI+*(C)S-6qa7GU zlr5q7H(wQnZBb-;tCN!B*}>9Gz!PygTLp{6Z{eU1#a45N#6+3fOt}xdd|X^A)bqZS zE5Q1fjkqyXq%Rzr;ppT9=F}7X@Mlaq78q)>5Jpzk{OTLOl%zPQhI(Hv>@eW_w^cxU zkld?fH_ERGx-aFH&M8wzD#$nF3|R_QdtSJpQfara-_iFwr#{0k!>?(kTmLKX+SXij zYZApfb(c+dDCV}c0p}1Bn)zWuj8#&2nqlzH1ae= zJuvuJuE4mThtYo=2UijlU&Gdf(zbs~2;+$V4^u2Z1N>5LJ_wJn%(@uAaFhDbf zbXOvuV!G<)f!F!A!p$T)-{bpt?p#E`Yu@+3Sc1<@O$8xjprZp=egGLrmCeYzW@CLo zEZ8MIJQXlunynDbUC2OkbDGM`k6Pz9U1SmevLrh!9{aP_+mV^#Im)=^ z`*=u&`e)5yk#KzEFQr$h_LreyrRer{0w+Sk8Ub<~{|L|hiAkPpQt}Z$FkvB5fXkRC zALOz$3s%^zoeG(pFZ7gJmo7-+2IPqwJ|x%G4JpW9>i(tQc(_=NiYq=eHa7a* z_Zz1N)#%Gt63%2!FCR5LJbah~KknSQp066k zMF}$tGuD{)wPym}m9CG}p8IrWhxJT8(k0*VXO#E!^gQ7#FD&GUZu?qQ#l^{4L=y&s ztDc7mAQs!-9WmS`_k<7~La&|09#FL&uyYv_5`t`wS)^Sr_MNlLWX>-uQ@=&hs{#%u zBI1fS&Meqi=({zSBo8fB%iKBAB}!$#XDi4?B+4F`W8d^QTKamUS}JP*yZ=YUb( z+{_G10`}8DDc;yGO5ESyhvQPhLPBI0NGT{N$jH?7_0QcUY&{^i@PGF7*!6yT_*kdt za9WVG!su}~VT>L&Mf3eR93*?7y_vojeWQqs+&jHYlGkfK{?pmx+xQtJx6bB!T4#&& z?=KGxOip6%Mluku5+{{!u2dB4>^P=1#yu8JWsXt6`jnC3PkS|gXc_zq%(%x$h3f%$ zvQq8UjSaeM*K&uf;lu-MGRB`LUm)`i{wCSMnMT;S1S0`a_4dxrl`&ghWu^bGwv$!^ zUq*Q4$`xW_JU__dz)d|l^Nk<-Zp>d7-hzKd^8mReL~86o6F7xvNrv315{iivXwv#= z?@mcgYpDBFbFMu}D=;Er%}p#4g?h$AB}M-MvS4r8xh``Hi#YHTUUFZRL6%{?BUe)# z)~ga`n^%v?(9Q9bZcM5~FKQdOMd-?$lUASXdSZ6opSY1aq1-p?rVsg^GiAhv^;d+e zMG-aPV7G?giz+Hyx?LQ*bAVm??QaE*9ocIM=Hl3#k0ccvp62Ca+zCpzNCq2f79P`6 z5SVdaPwL_?6*;GET8f88tx*grt6vIjr>0RRd72t3j%=Q)8m-u1H9=3GCx>>buNc}E zwgDZYc==ZDk*g6_EXKZcrR%DD8Kh4$HJ{S@(RlXZ{nABEnnm9wyZN5ZPGB0YMiZ_p zNnK3xWWH6z=@#Qx&%$jkq42NVX+X>OIZk`C|Ia6n|2H+9%Enq|qY)(tNI~km^nvex boMGj!-0H4uXZr(ZuMv4^WvL=bBme&a?v(42 literal 0 HcmV?d00001 diff --git a/doc/img/Workspace_top.png b/doc/img/Workspace_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfd0177049001e71524d34787dac356abc04502 GIT binary patch literal 9124 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 literal 0 HcmV?d00001 diff --git a/doc/img/Workspace_top.xcf b/doc/img/Workspace_top.xcf new file mode 100644 index 0000000000000000000000000000000000000000..6b6009514e4045ff928fe4e34e0f37b75d5486a1 GIT binary patch literal 38063 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 literal 0 HcmV?d00001 diff --git a/doc/img/Workspaces.png b/doc/img/Workspaces.png new file mode 100644 index 0000000000000000000000000000000000000000..69529319791698c6bda3e352148ee6de29b91861 GIT binary patch literal 54229 zcmbTe2Q-)e|39onN~ttNXc8(Vd$uStN>*ms*(-ZgND?ZWP$AhOdu3%MI1{rG#Xd!ps_T8jpo*z}s-MrHBrN!mpwd^CRlrMeuxtUWJ!$zDbJ`hNEG zTP}=hI9={C;FOoUlx0u0+iTB*+8;b0^#k5Xm6jPA%S||mker%7{o;y8@Tv-nzw5|y zj=N8?^_B1;$I1G}Dod=0 zr(r>(lcD6=(xrxk&c&r~M%>aQTUSk^(>Gd4FVBhDw|1A-Qyh__NI>TG$FNl39vLijWQOJVbSl<&v4n99}wZDWYh3 z)5OR~+t`xirn&ZGOKq)_)=w<;PTm%iyr=Md|1lDhlO$rduFKl|p6IrAINZ9qHPaSw zHZ+x7Z1-E&27?>qLEE>#J}eTYeC^t$p*;b6&wo~b8?W;1lX?LQ%l7SiWOha=jD2i+ zfA8k@vj>{)oXj^|Wn5cx>8Y!Ie`EXg-y7rSfgh#P|usb0j#lPi3#Qd`~`vih)Kc$CyA z;<>0#k%CKa)#DB+;v-yH@1GOlHRYu)ro1*!{`1a@I<{+V&d&>?jr>_QQOYyi``^3IIwQ4EWO8y)=f~6* zQ|C>51s=!bc}2-?v&aW)0c~eU6Yq zcdm7yi5&4x5;_5!=}(H3vDyE5T>o!%DR(ZE+eBw;b7P`2v%bIQ?Wvoi-MQSt>(e`) zm2LIx6A}`d_?^BtUrl{Df3iC_&1u6f+;%uPH-|!Q;ct90yKdbH&$b+^e^t+SkWEid zr`R}dtS+<`6!jXLjIVXvW^gPma9nH8x985ap3>>eFscc@>R#?e+w*H(MOF1-jwSPW zTXKw47@yC?l|R`QBkak^YWX4bf_6VQ&%0)^(ytu+ty>dR)EIfYI?ve1sP>y?#b$u^ z?!9}@T)O1_C*MBpaS5sCQn>vjuhm3*5w3y9eDJ4Wk6MK{-9Xtf_0sb4moHvyCs|)# z|M~OhkDi{0+EDHt4G9mge)#ZVH#zyc$OM{SiOLo0D|6dY($X}$vdkP-$70^laPEn0 zR7|wBwYQIK)U(-K8PP65?YqX?PgOESXifJP<;|4S2GB~xYvZ3-{`-A|m6i4MnKLW1 z)ohh@bp?^L8OGgJKc4TnSS;6_^K`7?(+-Q_8s;>CeETJx(pLu+A3l71nR>b3lkL^( z*BY&Hay8+Cp=rAHpPR?pbDpw#9=)jX?{_-Mg@>uGBA!RPtxPF!$HKx4>gwv=48r@b zUAso2oMHHFx5DP;<_CW3{Vqk9I3essr47U_OzuNw52{BmtUP9yNQ=y zd3u&KH&Zb&F>#svsR_8K>^IH*xOnG@6DKYQOC+ddzyH^n$=bObX8q?Au9KRAR6a?i zvM!9DwY!|f|26j?8<$I}Irn5_Zr}oX9GB=mefq?iLpeM=oT}G&nv|0MO<>?LQkUm) z@$xeRKEmt{%chJHLC+fXw3?#CIE;QDHZU+)ob0adFY|oTQy}QeBwgOv_)gtv#Vz(h zj66?br54Mapu|>*eI*s6IoXx%>gHBS{$Tgx>#Hhq&3D=IU6Yg9s2C+4wWmBj%g8u8 znLG7o#$joq<7U3yf?jt{`m9nkvyn$8L>_wEpVLtT`rT^)2) zcfV3%KyU9O2S>+kdTmK`$Jo?lH?1r!OPia0AH+y?FPaDV`5icMLIRJGBs@I4y}do< zNi!p#<>)i{c)9I?ygwu(gu>z#l4q+}lc(#QH>oHoDMh_ckYBrh|Dd$M%+9I8Eg>vt zn8?F{3ZIIOj$mn_m7R(5)%;U=C2x*jwHfkPuvz<;X}dmC@$K8UPgz+(R{wr~vz}7> zA`x7S9T?2<d!SzCGZFw{|{$p*bu)fUm*l_`y z%gtXTHTz3F@I1aZ8BL6j-wnK^N-b!|aptzS)=YnywUGm7x{{Z8bg>?XjI6Aye0j&l@lbly-(cN_q}oB2JyH^==dxj;q4qxns)k&i{SrwttUS;eX!2;rsMx& zc*fb;8SlI!EzNZ0%0Uwo6GJ1TC(U2>q2-hm6>Y;7jUG<;`t?e8i4%WG?C zR{xan7wii|ly_Ibt;~?c;i*rl3vBr(NJJywp%7&Zg!Ec@ zzxbTsy&*4ul*D;+g^8Y?J}W!B(*M@($9?Zijyh~@ELH!rXhqvMk7*lUSf7j7(n1+j z8Q9v|W@Tl)4GOZkU5)K>bhs|8da1`bd1usY$ke=@AX-|2TK@0;8x#Hg#p=!*W%g6~ z?xK;OG%LIfyRzOfML4`4t_>YP9p1awKxdNn@#9IXofLNG^wN@oXbWeX9xo5i+mH}( zOG^&4Lz0tc&fHvaz;)Ku)m8Nb2L~UWGims^ZEJl*nAd*s!ph1@Rhcsy4h0>bAFstQ z+EsCK;bxqxv`f)F#soed9+HN51va~-NiWgJA}#jEnwl<3iRG1*l(!Zmbwtx;eg0*Bk-djxrd2_m zdFlxVjk&pbRkyA&r_tDd*WBxFo8F(~&iPK0!l63Q9S)c;}N-``ngkxifSPY<)#bk3!>sio~sKJqU! zGbCd^RUu<@m_#mo%`B9Lf>b+O+`TC7L^Imex8>Y;`x z2*vuwMlg?=hF5J**LD7rC!b+B%4SiZi=LgFoc!S>)xqF6f6&UxN_<}vYjWP_^}oU> z6b$l`KYzkUM@MNM)}b1&Jo-VBq?#*gXO|-*6)Ea9+Wsx_P?EWY1@F_phuQL`x07&j zaZylTekQ!No>pud6BFYb5>l1$FpX%Q7nL)j?njE&gz+D{efu^^l1ldH7X2bGo#Y=s zu8}BZ7<$CSFvUnml()9}CnQ`*QZMutkJi9Q6893rLgFXG(Sd3=66FUbC+mvc_QonC zt3`Kaq5I{{)$xmOMWRV}`#N!>4Z5N@El2N>Xm5l&E_U#TWU#C$iqMxDDTQhN?&(o~ zLOKDwXJ%$5ZhGX#?%3=cNrPVrMMXu=&)p3m;SR|q_B>7K7Eqkc#zGsf?QE3HxJ6n@ z%H^XM6n~6FI47yRK}ke&JlIJ_c2%c_dZ;en^B7xGo~;EYx3Xrn?L_;Pa&J0=#?l9h zia%H8MxJzLB#OkW)C+HY$oymHiD@qKumJmfAwXLt+uV)8dHo%w@cLT?bw~fVZx2NC z#-RWEvnm`qazq4^DBEV{^z-M>^EOw<6_u6e7TVN(KYXacKe`U!sQ67|*TaVo6I62p zRCBF}-F8*G>aftp{DaLA=S_FXP%Z*>%~UXWym_?Dle}n|%E>&+exBCfeX9Y`q_ICO#V(nI^`${B&+1+05qkRvQ zr5oYM$Ru*=)^U~}^OqAFdY-z!%W|FvV(xl;)%B~`RKeOMbe?q#gw!jpS$8Kz14Hev z|33kI)WdrOvR`s@kA67)e4@cPZr<#vbI-B4mX^sACmee>cl+OscpoW)H@!7oc*H7r z_}K+df&$Pln?}#Ft|^V_6s@m2y!P~DzH}+6(Oi1n<`7Ak)KZW6)cx9b*~1C*sX=Y| zQBi{#Hv^?&ZYIhH2AkM^ntaSW@;lvtq$OTK`q#=SHC^J6`%26~BHR^%r-;#Q*i{SO2?n;&t~~JIluA^YiDO zJ$v@BI2iZmv)qnv?H?NxlaY}L_DsRQ>gYI5OG}Hb^RiN_Sc_dQ_QW${kFWjwRP}2` z{%>1y{m1JrirMDpo;-PynQvrL_WO4TE)Wk|;_>4?LDi8^pWxi|y37aO1R2edEGsL+ zMETgNUoCKWxvr#jD>?D+AJwtGr)+#p3N16qz{5JVA)gxc{GQ(dHk8CLYybYlx6Gm; zAt7P3EBk5~zqM$hyv0nv2w22(;wD2lAJDTsXf-D$a6|+{D3?*HO{t`$KX$M<2K{kf z^Rs<@eJ6w*f^eg+U%ze`UszsUogMU*{wyEAvN96k@4l0tkMB?Fhq&`5VYQzohc`+R z0Dm})yQl%y(VP7PhODZvZRvdk7pZBv3^An!l9DZ+%Ib#U+u{U#Q@?k0sVq+QNc+$W zR?#tUf};YET_ZJ~{vcOt<$TA+NDsZf6xO zyEACKNCA?Q&#oygVA^5p==7zY;y=;}e^7#mT`8IA8uo3mulF- zKJ< zv3vIpfC(hb7#aL=x~TO1Bo|izuB!%Sm3ARiune%4b4H9=SKsLjEoSp+v@ zScZZa7_MU2l(|(wMLuvLUwIhV4Jl!~K?UFRG8d!VlaKFzt(*eSC0I!j|rrNGqpd``ej;3X7Fl zZM5?;Fbra(*?Im@Tt^F)iY+faG_L>Lql6zZYUK`R}vfs4{yjvc=HFA zo1BW#w6A#AuOwCbilO$7j+u5%pT2>CoAL6A?b#Mg?vxCS=g;rv=jZ33*(V|*GB`Mh z8S@07#Va?LA1~Yz5ov9=;&cxi9Mr;Iybe}tYHdBzm2Gi?$MjjCnwoZ1?DyBJ{nhdclX)5>r(pi7|v2amw*QYAlP`F>fpia1La;%05b32zkfp5=>!7< zgVJ}s=iEDGA=m6%qk1>Ax4|2PqkioX@v=*OS0mK>v&Z+H0c zVN*0wK%n^V7lt>+hLygCss)?%vUu8|F$F21ZR{F{n+zE~`_>;$r|4K_s@8Og2Emf`Y3cL=>mqjDLiB?sD znGRL?f8a6OE-WleZ$ELxZsD)CnL;o+)~Qp^9oH7kW(UPkSbm>)^#6Vy@9ll&>A4r6 z4jlU>zRY5}_c}2k@L2iyXk3b(<>uPEJ^#p3EfZ#r_O*gyd<94ja)_4DqSugR+p)GV zej8dFD}{m%pjm?Aw-BT<&S%g7z%Q7)`(X9p`$YOH@QY-6ga=!JYm6{pVR& zJ_9Y@5*20XW8vWm!Z>5@i^B((mX#4Z6RU|jkH*g3NlN;wz3ei23us#tdJCAHhld9Q zr@sFF&k|HrR5!)M$gicBys`yjqmPP?1|*uEpD(Sg^}?cRUZ(aN)Bk+JqW5Q2l}6?J zb9h7F;GnBi%o%?E(Bk47G~C8-uBY)HN9T4&b_4q!o3P)-7mbgLaCn~^7->= zlxG!(Gb8E?3LX2^tMNyY;vUqEHOKh>JAUxsbEU+j8B@8{tx!&b@=9N(U}0yc=!i9- zqnX*+IQds~m6e2Q0aWlXFAyUJH22&&H|S4IDE6WJ{(cRxCPMe5_cC4hb=hXoOt0zHL7Q@}*)PggAXyx(GQ3NWnbR$~f}`85tS$OZSK# zFRRfvZzyn0`^uL_$=b?!2R}eb7!(onY5>Ts;c$Dt^Rl!U%dTJt!u;Xc82W_L|@3y=^3`8 z@~`MMoYZfPBM1V<6&cYG#3KlxWo|yJns|L~ditZ&#;W)hBS!HX(a5G!nLoQybB;0j zR^CFBGwRGJtE=+{%YFa;{q)St_2f2Re}B0%L!%3;?2Zm6=;-dp$_7a=&f7T#UkOS` zO#GIX7T>rxsp!!osEz~`k$_%@PW~<^=v8Fo8Axl|*yI-!Q=W16IQU|$K2TAq@t|Ug z+o1kZ82_O&u_&&}TCw{8Dfc9WTzu>LVy8)!!Jj{W#G5lhLuoPI6}*|BVbFamF9aCR zVk?nzU~JhmiIDyB#=(-y5MnBUmmr35=(i9$6HDLU*qHF*sw(j(hw_vG&VU?lM$4GZ zkKTu%0+fVmdq~lsNOk)3>Cu*0DlZz&en=esSSEqRc1_FiUtT@VTlu1wmJc30h=IZ4 z!+9lG0>bEhMaA9MAfo{D0AZhx03!Q3+d$R|wW$`Y6Gnh80TBo=hw6c(<;y4;B)a1Yf%qCt&S1*xd4szT>$N>&#}Gipya2t0I0pG5_ofhZpgL=o_h<&CADU~Ut7W@hH9 z*`6o7_$iEp=k4u^@KJco`gfv0jy9uU4${)zMe*@Eu5w`NWVUk1`9I}yju_58So_=# zV(}XW;c)DSG@BU>aFx>Wa}%r%=?Pn z^xfj)Tw|(=0|~bhE{qlmOCpTVzoDUled;L~y!9X35$}>#xEEE9JMWAYiPUZ`4^ZNd z4^3h=d$0tqcALL=nI~Jp9YE3Lxq4wJeG*=O%5>R-e^ys(wk4^4*Kd8jxv@qCok3Ai zG5T0tCv(hasToeWx_>*pLVNa7QtJN6vy})J2qrc)gbd&J?{5Hc`ENdM-KSuk_M!9P z2<#B5!-uu5lq=feDPXl))ke_T=LoGY8GKO5wG0@x@-uS^+L4UKIf7^>^YZftW-o_^ z@mhQlKcm-EZ@m8qh=YxdO$rDjdwnP?GxI6HPIw_hNyUF((q}bB7_Q6?LAkX+`(ckr z_AqDJBPF*|({nJXX6p8>ThpkP86W3$7eZsn%M;)-Z2ve#l z&sJ7Dq@m#+ESrbJf^+v6a4)P&pK1Ugec@r_%Gd~*-n91`mvNWka6UE;=E&TSq)_ZP zOfVikK9+$4Zh*U>bzRxkbG!b*YC_w27amSbQ|Qnbedw0)a#E(Im(kVOGMUpDtH2_A z+rMdI@5(RR1VZAGdGG*wjBNSCIC0+0TqD*!@-ZShiG`$<~ zt?ZBmmFot2i(D?-4Lfgb2|*ShT(0Ws_!^sQLtd1!A!%u8GItNq(kkodxx@un#EfYZJ^?U}-oQRm86U;`cYp>R-t0 z7TIlvtQd8zG3{9LOnWo?hU(a{f9J>7O(&&q>^74wY2DBVyR`h<;sH*tW;=8Q*yOek z{m^J*Bm_Lx0U5$uztN@8S2do!W>FRy8R_Bet%JS_2;1=KCfW8KJC0w~p@4o&ka`Gs zcgGH>zLQT=u2wrsxZ8znDuTPA{J>oO^zq{}Q~*Kde}8{+hE|l&whkr5MWXhhQ6HeD zz61UF4oE&a8}<{dyI|#CO8>clJ6Wq+^2usmYRMxgVy&q^`Gi9{KX2J_hOo}frb_%* zCJV_b!Q96%(7@%(%gad<u0KN30aK9bz=3PP*o0Fm zCMLFX*DeAUq9JKh9wa>Y9@->&OEfOSKY76rx(M%gwvy@i6^)%GFZT_=`i;uUQd~Sl zEYY2;IF>M}3QZqD(MOL?Zriqv_;ebYDs<>gu-5&{!OL5+kt3hTD+vxp~; z(>f2S%k@Qy|M?hisDu{l%VtL}sr+=?dn_v8Kgp3pNt30R7DJuKaACK+9{m4^mt1bH zVqCT-WIe7Ic&6@9+!#mZ*Glmv^sg7*hM(@I4edaIx390RW>4|a!+Q164v$L<> zyomyuprs9^*=u#gjVn0WM%H=a=ao|xL{n-T8XDTxJ2qxpJ$z#cjlzV4HJ()dLRI8b;=F^Zs%qnyC2#{lWdAEGR6ylMdjx;4TNrN> zlaP=tXp5^^GQMbHJJ&kC@ZG300CoP>*Y`ovSmA(FK=Z)0scC7IH8m)S zW$&eL{2kW9o6DNm$kNp;}ZvzV2PsjHbtr+qp?hYEPl0;}w&`<0b z0GQuD8zsNkc&* ztWj=mZjd5^p1_1c4}))X`^Jr8x__G1<_RlnYXk6nfPz7?PxA0k=d0C2m#KwXj&WN8 zv<-te#i)}DYe>F(_eVIhm?v-z<_e8$-QJqY-Gr!`lAiAGB+p4ry|s|++&4OU2Pz9V zYGI`M7++Z3>Gmh-O7P6DLF55!&HQj%M@J{PLEf$aB^3jmSC4}RDiaAXm7kyANBQ_h zJr1aN?4SxtnZ~tE(RV#OJ#&W~?i#eGoWdgk1=x=n+tuCu@VnkSneiz3cw%XxPa6~r zt8bxX2+aH$5DbkHUWQ`yzmxPeA*^!+kC3B4e4!3`52%HwpqHW_!4z;$OuPtG4@%w- z4HgOvule9^%nScXO<2qyO?nEB3STxx7N8U$5?v>@>01WWnAN2zACRrB_QkMERGtieBda8Qc_aD@b3cx4;}w0zBf0xosi~Z#8rdeXIYLNO4n~Cz(!4t1fdwF z>C{s5S)NBYVP`LzoH&9d05RPmX?<)Pk6(`*hbn-!a9O|Q zJSb!tR5rh99idG0A~1D4_2T+^N(>e|JHG0Gi)T>Ey1FBKGF`A5FrSFM40UPxUuMrC z28Lvb2Zc_KjFKVHONeNRN`b>etCI-wb@lYcId5&|%{Sd0Du|JfA8U*x1DQ?@<1i;Fgn&oxZ|CnhzgwQ%93B63 z`0%mw$wRbry#6+?$JV}BT-a31j-YL{+Q}faaw`3wz6JBYLnemKE>s>&ajKixcA)EN zJe1HU{o!?|*e@AFJ`;hfSGCjV8PxG5~ATJSuyA zL_G7QkI?EXj8GXB6$w}B1|9SKN0cB)%`_ zV$hAH=^ z<|U;>`6o)%5OE;*nG|jWKtRyY)s5jOJWlbFWmh8_(YHrM+rLPLmcwM{fwv7`^oQ5* z9?Tp*tBE^M2}oT&b=@|AtJBrh1^~bO|L~|Nh?IA0W+WRgV$nOHeNihu%Nk@<95rk&&d0 z4Uf9R%r4w10s&;04gqZHb=abl;}*{l-vA}Wg#gn@8X8_egBkHxP&>S=l=@{EcioFjHSL<_-WTe8~V23uOJia;9b=lz81;X9{Ec36ZgJqSf zQMSkP(#fS}9@q531g}ri<-BEeRo={DF)5DARsx&#CH)SRz5j-5^G1dnbwwDwD;RXw zH3vE_Tkeo7G{WiLaR}-Zm!io zn*lFw8^qN-UcG`bhgzc)S{*%8{^odO3ty6QrZ+$^Am>;0LLqQ^ZSY2uiv$m_#%Hs1Po3uE^e0LJ;`dg-zkh^PZTj@7+?PVRIdxm@srGL!P}>OG0DHe9 z(?mVG-mj{*HjzW6qrLqel>2$d9RKNQQ>kzPF)&|*>GmfjC28sEDm+mRmS8L{DPg{F zVX(@d^}9(=I1n6bA5|}cVoW5EQZ8hc8!b=wVYs5_S5{XOx^Pw&4?=&puV3HB=<9*J zWrktLi_A=JG!${)7`0?3_`wlQt7D(|zexpMF8a)9Qsu`?(09neteB~*| za8q7Ikw3%%i{H`n9It|Zi6=2CA@SPxRO(Kywd zBQ@ahQaWX;YLlNO7fLtbXD~2G!_UxP?{Fj>%2TJVk6krj4<;N&pHG^kDc4=rka0 zj8Y#Izib&m6-Q94y|YunE`g9mpdKMy>dQ`f2QyU%aW8;Eg|RMEVbc_=Ugw-mN`JwmKbS+B}LqyCV|yGy8A7(5@~iYw=vpTIn*&YSK@)9BU%XwJv{tW|tQ){^QQ^ zS}@u#PW0i?X=!UeocE3YiI&R{#Blvk68-k2{%eMaD5Af~^JM@z`jN{=8#vZTx=9Nz z97enfd7{8HT@%4gg)yqHD>v2vQ383dz>cN;*i~?NDD2w5fBzcC7YNlC1Hg}WCJ>ub z`XMD5nLEqIYMUMh6nIyxZ7QZDhK3CgCU_C3{$Yr_s6X`Rs%Z+Svf9J;%hQj+8Hj`^ ztR_Zw_S7btYY^0-!5`<)J3!n6Rv6}{U<=bPNFH#opY2(S$K4*Fqf1;zPW&k`=+Nw7 zl2X>p7#r)esq!n|yLSzJL_eJdo+**2MNi~)TF*+YM`{?ZvzusS_E3TSoKr&c*l16o zFz#7fXaw8ForBC~LY@t5YY3#)2>R4ia^A&bb?%-f-2A?L4|h_MXd z__@Z?iJsPP}S=Eb_IE=W(-Vo1IrrF zNJ%{IVEFO~A&g*A{e_O6Id@Lv_{ntJx#5;Lx%ejj30%*UrYH~gYns|*>9&F}!(c0v zRaNb=x3>pB#a<%J*@=la`T2r4ijg#Ht%jf+rY=+iz~98dCPgk}CbpTa zXqKEy*|YQWT5xFL@kbUby$3?~Jc&gGe-MB0+vPMXt7lZySuA7;#DWV2>RzHKA5we) zBQrBv9KyrMXUh)pi``}LL7_mqe~g@P%HtBnR4sB$J;K979@rm`LxY2+dY=NaUPM9` zArcm0sa{dCIRcMfrp7}YL0G(^vGKlb55T>}h?En8g36aPVF=qyp^$N3U!Mh^ zMEV2qWkf}Sh%h%4#kJM7i!96K8$OBA(!4?QBgZmxW>-n(B-f^ z?;|~xwT=S@-+mH4@ax9<`W-Q``}*(ZW@p=R&;)Qc8Y}D{zGHRq zpYjl`?pYNNvi@s%yvqc-1n8P8r!{H7c){X>K;g#yR}y@De9UFKGfg7Oc4fwi`p`=v z&0)eD78)ALK6qWb$OK(n zEjx1L2;`8*2NP;IgNc#-^WB-Km>2~fa3SYURw%Z?a}Ll z2VPiMC?e^b{Y4z{shzCPFlAD~ivYea@Z|(r*W_a|AGM~ej}VSP$7gq3wLE8PYiBo0 zSY6;yvg009OU2$l=}vg?7jFq|6u$Y*^S9i#rIw7$fXrK6ur7JT>D+Sbqa2&3eR}Kn z|NNalnk|yOeq^nUE-)-SybdA=5lzu7f0G@lJ4p;TUWL__mAZfpeVdbXnMTIj}HZa_##;!$0Q{Fn)khOAP)ONsXOTB)h>RG^! z(f-z5>EgAWVLeITc9>z;{_xtLY?8ll6y~<}i&kZm{AdpHpqS)3@@|9&fQwBOu4;_+NBu_?5CvbBQbWM7+uGc$gYyjHn5v@gD2G;(}!om=!+EBP+ zcXxNNkRu-v>I05D5|9a!iV)2xVpG{ukkUipL6Jj3GBh-#<~BaDwlwA3OW&?0D_aVB z3t3ke_#QSUb5F9bFBKtEwEN`a8igEq0D*8CEWVggV{V?spFq(#{NV2lwKw)Dr>B>f zHe_;Ors(6}KCgUix;%&iuDVQ-sibD%1=htF;kbAluERORRKNk0U3J5x z+{L5geqAw3&f8e)q*yp!MYS)2 z(Uhfj`xkag?n(UhT(Lv!D}2_fEp&rWP>+BoU(P$;FmCvG-K}-jKkS;x(=}(C5vzzK|0VB?!c=CYMSUs8!1fp=<7rFw0~%baC3wCp0eQ3!`CJ^@J2U?^AHUo z&V0dY6M`-w8sHodat?5dXh8a)OGk4h#2tH&mPt@B0+KsnHCZAQ@75Pu`gYec{ep?3 zQ}-eEf;z4>o9P#ZP^3&OJagD5-Ls`32xh_62)g`uJ3`zF!3!HOi)S#KkXXfJGXwBa z-p^q#%-)t^)SmL3Xux<1spdoCNF(5^#7L+~!6_jj`gA2p&>!k68m@;VYOhD83Mts- ztC4GRUu~lgmH1-r^L%zVUM6-o1;rqut@7c#N;$SEd5@x7^^aqNLFp*wSFNqMB_neP zK2l#|<{u5z{!z{(s9_F3v4o(ctgMVu(ELW(P1*NXrHNOT!GFWd>B_=su88%e=S>f+ zm91LTX)^-S9~)ra!0!yOt<~dTiChij0-9y1k4$Ay1s&3b`Fcd^D!xX!P8TT$oJzT0 z-0EV8;|f*DVdmVg<=5^pyz+NrMY6%OFfk#4B@wdubXKBSk};95b3mKI#PG}3jQzZF z^zdO|vppm^mSe9W7X!HASpr&V%;XgzZUvp}VTNJwp{}Y>;s6lr6n;#mGwkf|;REam z+`_;iI643cuyGlT9pmFk@EOc3EY5%eV^%lCK47|}UQh$5sD~qTP^pMhfKgFV4anKz zo&Joav%_mCVT#t1UBt<~ZB-oSAORd@Q>($LJBHD@ced)6+v-5C=ZFr5XyO4H8gVr> zdLrzK9R-gz2-X9k7!q!~^8N%`Iyy-uB^re76I0ef)*<><8x>zNDZssfUECULTZZl5 zKQ$$drgc&OEz;^ZRdDwD_3NaQu>Lp-npEtaN?ARuRRWviyGi$-xPv4KBydcV6cj#= zF-joUN@OF^s;tkcgb6zrGz}%|6~x9qfy(6o{y2uvEUsQ8rukE=zW;S9O$`kmo9UBi zlbP*gcn;vePdYO$Le(Vl-_Vx!1ok*AspDe_H4R6}Vr8=8px+^wGmMbT1@!`z;GFMpf3n9j6Q!o!0Aqav95Xrb9 zu0<5)dAdSSlLxEsx@uZmp+P`+;dYY7U+Ml?CW4q4pBR22(6>$Ud}gVQzk5QwX*Uj1?&BhYlW` z$-Fq#-Lmn>TI|5*8!WxgJy*YMZI$kj>zJ7$4hI4;W=@>t#*t5}sXwa5`zpb8z(Wh0 z+D3=fZ;}n4*!gkcr@WlnaOmyh1qw|~O*RwXDvWtw*gh#JD5xUe#O9OR{D71flhlVF zWo5gv%$R~f1`$8#x?dfCnwwi;Y(RT*o@K7JGI(O!xwXj+GYP*Xj^|`UA2w6619udP zXXTWb4#8W4+vO(rbC@xuiE}sQ-7I!$3c{63l(+9JJP^Oi+N8&UBQx5K3XC{69NB2o z>BICbBLl)q0IzM8Lz#>CVz<4sM3+=n+}Ld~5BKUb9TzYXlyHa{?1=|klXY(NowAqY z{K;lL4$P9ip&_@>&`wp>igni6;m{qE^3-ovUX%GxT;C-16#=l%@*7X9ue*K!eYN{OjkZ{`j{vJe_Gs{v94JZKcC9N1e#UxRMUN=Js2EZ$JuDk&f+=&yS^9qka@ z0GTu5pbujGi8D?L!h%ls7P%0mqg?225a)UUA2|k7?idUbm?@XBwMU4A7dB1S_>i|? zljUP?eWAIyc~QNfpxB^qqNC?+xY~`*jDn*$DB*oU>HGVjAj?at z;{7g^LL$*J+wLWY^Fv?rz8m=d)tkJ!JX_&U%^d;CqHBwEz!>N6-)H{7bFe7oaq{`8 z?5r#dZ_(3dl7%^X8qYkm;6%6utPDLdk^R{yFxV}GFi2hcOq9J}@g3Ca)bdq*uc|rM z62HJR%-iCB-&QeP@|4z(nFdfA#Iw{afFx|IFM! zJjLLwUU--7+Kp!iPR^e`FS2u&^XtWrCN+pR)a|6R5ANo2+wM4DL7%MNM33Pv#2~ zvj^tBIg||Q&le2SXu2d*^YXgG{49<8++;4D6N$L~`O=PKUMFs+fA~&u#=cJQEF&|g zd-C79h(c{{qLsoT@D)&FY7FgLV%3RE#o z-iOeX6*%VN%+zD=jdY{63oskb-5uUxIxKO3-`W_bbP8(1Hw3$L7CviNua@QLzdE3B z?gtc&8jYy$cVy0iNcyNSjyN?r=B_N5PJi@vrh75q!Z0p+hsFQ2Z{>xIbAKr&co{@| zY3gLn2O)|`0 zTH-33ByyIDK9Tj_%4v-U9ZwfedBySf4aF5VKNNXcbVpW$<`ZT5PT@O6XWzZ=j^=dM z_y6!W{8z~ai(AWS$q3)g4{OGCBjRds~TKJ;F zh4mlEQ$v#PM}7etn62Y?8EZ2+00S21oZKRu!}t9N;Vj%>VjMJAv+2_Y#Rw{q&bQl_ z<+Kr3mJ!OGJU8f@I6W8dRrKiOg$v(rgt2C4soWJ)IqqvJ%lBJOaa*arX6#>;)+AN0 zq1obqYKsdr``&)g@4sdG`N&?7&fo%xYobX)d(|@XHoCKt2g)78S~Xd|7M{(2=PU1X zOpCp9qs+i7VPoz3^S^~0|GA%uWvbm!eO#iVfX!za3fK+Xk5SMrx|L-h?>O@>Q{8N+ zN+fh~WO&#+Gm{cAyMT-1aM5pO81Y}z8@-4~O+0UeOsv+Qyy&icdw03`fT8Ju-riSg zCLLeKES1o~6Tgs~ojZRh`{}N@A$?hMxq`*m-=I;+FxO54#+ z8cuy6(qq|<{5zj1rT;xZV|Vuz>-CwB@8k89BQLVG+B2)0?MfN=yZ=;Df@-_f-xpQ$ z+TY`)`=pmy-v~dymfUvLxGS*c!^%~dI6rx~@ z&Q}V|fh-5&XgU6c7Q{D?~531W@ zaCLsZtyj!jW(s%85oF76ahob+kcJ+poROg0l~qYWw|dFWvCJl%+)R%2-JP?+!n31) zd|yo#=JhQ8JD&aiH}9cS>*UV6mY5EZB&cNj1qJDezFB6_tdKe@C>Z8>tp1AWBa{7f zzjb|mHaEzE3y(Ss2amMp*-8&r=ZlwZZZP3-I?Ps{%OwhdbW6dv~B&dTZQ?Vt;{Du9bAd_c1Eu`hDQoL*^W9OD0RxW$PVJX2NfO zafJ6Hh}lj41Je74YzybUrfB}J7mza0%cpn$6)u59P_Q%SEKu9@@V7~_x5 z&QMfRCr8+Ir&o6rSB@xl+-KFA|98)KBvk%WNDOHt`3?HBX#*{SR^bJKQ`s3yE|=Jx zrv%hJDf!#_B6<}?*Ui5)Y+?&O>fM{J_poh;uGfp8C|Pe+51pZ+dm6q?dj{+8UmW?j zpL47sYLA>C2elXDWZ7RHyK}Ewo!#Dju0P+pnzpoZ(O`3@4;us#pE5J}#n)fOr@j)6 zBybnb)!EtEWebq{R{C}P6gT{N=I6qvfPtbfelr7P(oHEZ_r{KqCfz=JDo{-CUbkC$ zK@!J|h4%0AcX=4jm)J;og=sP?fGYlsnjS`ALR<$w?*XF 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 literal 0 HcmV?d00001 diff --git a/doc/img/Workspaces.xcf b/doc/img/Workspaces.xcf new file mode 100644 index 0000000000000000000000000000000000000000..f55a7928e3ae4a90d84180f8187e07af532fe655 GIT binary patch literal 137042 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 KdE~BpzCQu}!~ul> literal 0 HcmV?d00001 diff --git a/sdrbase/maincore.h b/sdrbase/maincore.h index 77a5ab322..15a8ae5cc 100644 --- a/sdrbase/maincore.h +++ b/sdrbase/maincore.h @@ -745,6 +745,7 @@ public: friend class WebAPIAdapter; friend class CommandsDialog; friend class DeviceSetPresetsDialog; + friend class ConfigurationsDialog; signals: void deviceSetAdded(int index, DeviceAPI *device); diff --git a/sdrgui/configurations.md b/sdrgui/configurations.md new file mode 100644 index 000000000..404f635b3 --- /dev/null +++ b/sdrgui/configurations.md @@ -0,0 +1,45 @@ +

    Configurations dialog

    + +Configuraitons stores the complete setup of a SDRangel instance: + + - Workspaces + - Device sets + - Features + +It also stores the geometry of all windows and workspaces so that the entire aspect of a configuraiton of the instance can be saved and retrieved. A default configuration is saved at program exit and retrieved at the next prograp start. Use the `--scratch` command line option to skip the retrieval of the default configuration and start with an empty setup. + +![Workspaces feature presets](../doc/img/Configurations.png) + +

    1: Configuration selection

    + +Move the cursor to select a configuration. Features can be organized into groups at the top level (here "Test"). When selecting a group only Edit and Delete group are available + +

    2: Add new configuration

    + +Save the current setup in a new configuration. + +

    3: Update selected configuration

    + +Update the selected configuration with the current setup + +

    4: Edit configuration

    + +Change configuration name or the configuration group to which this configuration belongs. If selection is a group the group name can be changed. + +

    5: Export configuration

    +Export selected configraton in a file that can be imported on another machine possibly with a different O/S. The configuration binary data (BLOB) is saved in Base-64 format. + +

    6: Import preset

    +This is the opposite of the previous operation. This will create a new configuration in the selected group or the same group as the configuration being selected. + +

    7: Delete configuration

    + +Delete selected configuration or selected group + +

    8: Load configuration

    + +Load configuraiton in the current instance. All components and workspaces are deleted first. + +

    9: Close dialog

    + +This button dismisses the dialog. diff --git a/sdrgui/gui/configurationsdialog.cpp b/sdrgui/gui/configurationsdialog.cpp index eb9266ded..c324f18b2 100644 --- a/sdrgui/gui/configurationsdialog.cpp +++ b/sdrgui/gui/configurationsdialog.cpp @@ -18,8 +18,10 @@ #include #include +#include #include "gui/addpresetdialog.h" +#include "maincore.h" #include "configurationsdialog.h" #include "ui_configurationsdialog.h" @@ -337,6 +339,100 @@ void ConfigurationsDialog::on_configurationLoad_clicked() emit loadConfiguration(configuration); } +void ConfigurationsDialog::on_configurationExport_clicked() +{ + QTreeWidgetItem* item = ui->configurationsTree->currentItem(); + + if (item) + { + if (item->type() == PItem) + { + const Configuration* configuration = qvariant_cast(item->data(0, Qt::UserRole)); + QString base64Str = configuration->serialize().toBase64(); + QString fileName = QFileDialog::getSaveFileName( + this, + tr("Open preset export file"), + ".", + tr("Configuration export files (*.cfgx)"), + 0, + QFileDialog::DontUseNativeDialog + ); + + if (fileName != "") + { + QFileInfo fileInfo(fileName); + + if (fileInfo.suffix() != "cfgx") { + fileName += ".cfgx"; + } + + QFile exportFile(fileName); + + if (exportFile.open(QIODevice::WriteOnly | QIODevice::Text)) + { + QTextStream outstream(&exportFile); + outstream << base64Str; + exportFile.close(); + } + else + { + QMessageBox::information(this, tr("Message"), tr("Cannot open file for writing")); + } + } + } + } +} + +void ConfigurationsDialog::on_configurationImport_clicked() +{ + QTreeWidgetItem* item = ui->configurationsTree->currentItem(); + + if (item) + { + QString group; + + if (item->type() == PGroup) { + group = item->text(0); + } else if (item->type() == PItem) { + group = item->parent()->text(0); + } else { + return; + } + + QString fileName = QFileDialog::getOpenFileName( + this, + tr("Open preset export file"), + ".", + tr("Preset export files (*.cfgx)"), + 0, + QFileDialog::DontUseNativeDialog + ); + + if (fileName != "") + { + QFile exportFile(fileName); + + if (exportFile.open(QIODevice::ReadOnly | QIODevice::Text)) + { + QByteArray base64Str; + QTextStream instream(&exportFile); + instream >> base64Str; + exportFile.close(); + + Configuration* configuration = MainCore::instance()->m_settings.newConfiguration("", ""); + configuration->deserialize(QByteArray::fromBase64(base64Str)); + configuration->setGroup(group); // override with current group + + ui->configurationsTree->setCurrentItem(addConfigurationToTree(configuration)); + } + else + { + QMessageBox::information(this, tr("Message"), tr("Cannot open file for reading")); + } + } + } +} + void ConfigurationsDialog::on_configurationTree_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) { (void) current; diff --git a/sdrgui/gui/configurationsdialog.h b/sdrgui/gui/configurationsdialog.h index 12489e533..6ca575d77 100644 --- a/sdrgui/gui/configurationsdialog.h +++ b/sdrgui/gui/configurationsdialog.h @@ -65,6 +65,8 @@ private slots: void on_configurationSave_clicked(); void on_configurationUpdate_clicked(); void on_configurationEdit_clicked(); + void on_configurationExport_clicked(); + void on_configurationImport_clicked(); void on_configurationDelete_clicked(); void on_configurationLoad_clicked(); void on_configurationTree_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); diff --git a/sdrgui/gui/configurationsdialog.ui b/sdrgui/gui/configurationsdialog.ui index d7938bdcc..23430dbf5 100644 --- a/sdrgui/gui/configurationsdialog.ui +++ b/sdrgui/gui/configurationsdialog.ui @@ -135,6 +135,34 @@ + + + + Export current configuration to file + + + + + + + :/export.png:/export.png + + + + + + + Import configuration from file into current group + + + + + + + :/import.png:/import.png + + + diff --git a/sdrgui/mainspectrum/mainspectrumgui.cpp b/sdrgui/mainspectrum/mainspectrumgui.cpp index a4d082977..04aab3795 100644 --- a/sdrgui/mainspectrum/mainspectrumgui.cpp +++ b/sdrgui/mainspectrum/mainspectrumgui.cpp @@ -40,6 +40,7 @@ MainSpectrumGUI::MainSpectrumGUI(GLSpectrum *spectrum, GLSpectrumGUI *spectrumGU { qDebug("MainSpectrumGUI::MainSpectrumGUI: %p", parent); setWindowFlags(windowFlags() | Qt::FramelessWindowHint); + m_helpURL = "sdrgui/mainspectrum/readme.md"; m_indexLabel = new QLabel(); m_indexLabel->setFixedSize(32, 16); @@ -199,7 +200,7 @@ void MainSpectrumGUI::showHelp() if (m_helpURL.startsWith("http")) { url = m_helpURL; } else { - url = QString("https://github.com/f4exb/sdrangel/blob/master/%1").arg(m_helpURL); // Something like "plugins/channelrx/chanalyzer/readme.md" + url = QString("https://github.com/f4exb/sdrangel/blob/v7/%1").arg(m_helpURL); // Something like "plugins/channelrx/chanalyzer/readme.md" } QDesktopServices::openUrl(QUrl(url)); diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 93abdaa1c..84bba6c5e 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -1870,12 +1870,12 @@ void MainWindow::on_action_saveAll_triggered() void MainWindow::on_action_Quick_Start_triggered() { - QDesktopServices::openUrl(QUrl("https://github.com/f4exb/sdrangel/wiki/Quick-start")); + QDesktopServices::openUrl(QUrl("https://github.com/f4exb/sdrangel/wiki/Quick-start-v7")); } void MainWindow::on_action_Main_Window_triggered() { - QDesktopServices::openUrl(QUrl("https://github.com/f4exb/sdrangel/blob/master/sdrgui/readme.md")); + QDesktopServices::openUrl(QUrl("https://github.com/f4exb/sdrangel/blob/v7/sdrgui/readme.md")); } void MainWindow::on_action_Loaded_Plugins_triggered() diff --git a/sdrgui/readme.md b/sdrgui/readme.md index 1a21dd6b1..e289a7d25 100644 --- a/sdrgui/readme.md +++ b/sdrgui/readme.md @@ -1,77 +1,137 @@

    Main Window interface

    -

    Multi device support

    +When starting the user is presented with an empty window with a menu on the top bar. -Starting with version 2 SDRangel supports running several sampling devices simultaneously. Each concurrent device is associated to a slot with a set of tabbed windows in the UI. These tabs are marked R0, R1, R2... +![Main Window](../doc/img/MainWindow.png) -The slots are arranged in a stacked fashion so that when a new device is added with the Acquisition -> Add device set menu a new slot is allocated in the last position and when a device is removed with the Acquisition -> Remove last device set menu the slot in the last position is deleted. Slot 0 (R0) receiver slot is created at initialization and cannot be deleted with the menu. The letter "R" in the tab names indicates that the slot is for a receiver (source) device while "T" designates a transmitter (sink) device. +

    Main menu

    -The tabbed windows are: - - - Sampling devices (1) - - Spectrum display control (2) - - Channels (3) - - Spectrum from device (4) - -The combination of a sampling device and its associated channels is called a "device set". - -![Main Window multi device support](../doc/img/MainWindow_tabs.png) - -The sampling devices tab (1) acts as a master and when one of its tabs is selected all other tabs are selected accordingly i.e. all R0s, all R1s, etc... in tabs (2), (3), (4) and (5) - -In each slave tab group (2), (3), (4) and (5) an individual tab corresponding to one device can be selected without affecting the selection of the other tabs. This way you can sneak peek into another spectrum or channel group without affecting the display of other tabbed windows. - -An additional dock widget supports the feature plugins. Plugins can be grouped in logical sets and graphically presented as tab groups (similarly to channels). For now there is only one "FO" group. - -![Features dock](../doc/img/Features_dock.png) - -Details of the feature plugins dock widget are presented in section 8 - -

    Interface details

    - -![Main Window interface](../doc/img/MainWindow_general.png) - -

    1. Main menu

    - -The following items are presented hierarchically from left to right: +The menu items from left to right are: - File: - _Exit_ (shortcut Ctl-Q): Exit the program - View: - _Fullscreen_ (Shortcut F11): Toggle full screen mode - - Device sets: - - _Add source device set_: adds a new source (receiver) type device set to the device set stack (last position) - - _Add sink device set_: adds a new sink (transmitter) type device set to the device set stack (last position) - - _Remove last device set_: removes the last device set from the device set stack except the first one - - Feature sets: - - _Add feature set_: adds a new feature set - - _Remove last feature set_: removes the last feature set from the feature set stack except the first one - - Window: presents the list of dockable windows. Check to make it visible. Uncheck to hide. These windows are: - - _Sampling devices control_: control of which sampling devices is used and add channels - - _Sampling devices_: the sampling devices UIs - - _Spectrum control_: the main spectrum displays control - - _Spectrum display_: the main spectrum displays. Note this is not a dockable window but occupies the central widget - - _Presets_: the saved presets - - _Commands_: the defined commands - - _Channels_: the channels active for each device - - _Features_: the feature plugins currently instantiated + - Workspaces: + - _New_: create a new workspace. See "workspaces" paragraph for details + - _View all_: show all workspaces + - _Remove empty_: remove empty workspaces, Only workspaces without any windows can be removed. - Preferences: - - _Audio_: opens a dialog to choose the audio output device (see 1.1 below for details) - - _Logging_: opens a dialog to choose logging options (see 1.2 below for details) - - _FFT_: opens a dialog to run the `fftwf-wisdom` utility with a choice of direct and possibly reverse FFT sizes. It produces a so called wisdom file `fftw-wisdom` that speeds up FFT allocations. It is created at a default location and will be used at next invocations of SDRangel - - _AMBE_: Opens a dialog to select AMBE3000 serial devices or AMBE server addresses to use for AMBE digital voice processing. If none is selected AMBE frames decoding will be done with mbelib if available else no audio will be produced for AMBE digital voice (see 1.3 below for details) + - _Configurations_: opens a dialog to manage instance configurations. See configurations dialog documentation [here](configurations.md) + - _Audio_: opens a dialog to choose the audio output device. See the audio management documentation [here](audio.md) + - _Logging_: opens a dialog to choose logging options. See "Logging" paragraph next for details + - _FFT_: opens a dialog to run the `fftwf-wisdom` utility with a choice of direct and possibly reverse FFT sizes. It produces a so called wisdom file `fftw-wisdom` that speeds up FFT allocations. It is created at a default location and will be used at next invocations of SDRangel. See "FFT" paragraph next for details. + - _AMBE_: Opens a dialog to select AMBE3000 serial devices or AMBE server addresses to use for AMBE digital voice processing. If none is selected AMBE frames decoding will be done with mbelib if available else no audio will be produced for AMBE digital voice. See "AMBE"paragraph next for details. + - _Lime RFE_: Presemt only if LimeSuite library is available. This opens a dialog to control a LimeRFE device via USB. The details are provided [here](limerfeusbgui.md). - _My Position_: opens a dialog to enter your station ("My Position") coordinates in decimal degrees with north latitudes positive and east longitudes positive. This is used whenever positional data is to be displayed (APRS, DPRS, ...). For it now only works with D-Star $$CRC frames. See [DSD demod plugin](../plugins/channelrx/demoddsd/readme.md) for details on how to decode Digital Voice modes. - _Devices_: section to deal with devices settings - _User arguments_: opens a dialog to let the user give arguments specific to a device and its instance (sequence) in the system + - _Commands_: opens a dialog to manage commands. See "Commands" paragraph next. + - _Save all_: save all preferences - Help: - - _Loaded Plugins_: shows details about the loaded plugins (see 1.3 below for details) + - _Loaded Plugins_: shows details about the loaded plugins. See "Loaded plugins" paragraph below for details. - _About_: current version and blah blah. -

    1.1. Preferences - Audio

    +

    1: Workspaces

    -See the audio management documentation [here](audio.md). +The different component windows are arranged freely in the MDI (Multiple Document Interface) area of the workspace. Any number of workspaces can be added that will stack upon each other by default and can be put forward using the side tabs (1). The workspace index appears on the left of the workspace top bar (2): -

    1.2. Preferences - Logging

    +![Workspaces](../doc/img/Workspaces.png) + +The different component windows are: + + - [Device](device/readme.md) to interface and control a physical SDR hardware device connected to the system + - [Main Spectrum](mainspectrum/readme.md) to show the spectrum of the baseband related to the device + - [Channel](channel/readme.md) to control a channel plugin + - [Feature](feature/readme.md) to control a feature plugin + +The workspaces are attached to a docking area of the main window and can be undocked to be moved to another display in a multiple screen setup for example. + +The workspace has a top bar with the following controls: + +![Workspaces](../doc/img/Workspace_top.png) + +

    1.1: Workspace index

    + +Shows the index of the workspaces in the list of workspaces as a "W" followd by the index. + +

    1.2: Create new receiver

    + +Creates a new receiver (source device set). A dialog opens to select which receiving device to use: + +![Workspaces Rx](../doc/img/Workspace_create_rx.png) + +

    1.3: Create new transmitter

    + +Creates a new transmitter (sink device set). A dialog opens to select which transmitting device to use similarly to (2) but with a choice of transmitting devices. + +

    1.4: Create new MIMO device

    + +Creates a new MIMO device (MIMO device set). A dialog opens to select which MIMO device to use similarly to (2) but with a choice of MIMO devices. + +

    1.5: Create a new feature

    + +Creates a new feature. A dialog opens to select which feature to use: + +![Workspaces features](../doc/img/Workspace_create_feature.png) + +

    1.6: Feature presets

    + +Opens a dialog to manage feature presets: + +![Workspaces feature presets](../doc/img/Features_presets.png) + +

    1.6.1: Feature selection

    + +Move the cursor to select a feature. Features can be organized into groups at the top level (here "Test"). When selecting a group only Edit and Delete group are available + +

    1.6.2: Add new preset

    + +Save the current feature set in a new preset. + +

    1.6.3: Update selected preset

    + +Update the selected preset with the current feature set + +

    1.6.4: Save presets

    + +This button is inactive. All presets are saved at program exit or with the `Preferences`/ `Save All` main window menu. + +

    1.6.5: Edit preset

    + +Change preset name or the preset group to which this preset belongs. If selection is a group the group name can be changed. + +

    1.6.6: Delete preset

    + +Delete selected preset or selected group + +

    1.6.7: Load preset

    + +Load preset in the current feature set. The Features that were present before are dismissed. + +

    1.6.8: Close dialog

    + +This button dismisses the dialog. + +

    1.7: Cascade windows

    + +Arranges windows in the MDI area of the workspace as cascaded windows. + +

    1.8: Tile windows

    + +Arranges windows in the MDI area of the workspace as tiled windows. + +

    1.9: Dock/undock workspace

    + +use this button to dock or undock the workspace from the main window docking area. + +

    1.10: Hide workspace

    + +Use this button to hide the workspace. Use the `Workspaces` / `View all` common on the main window the show all (hidden) workspaces. + +

    2: Preferences

    + +

    2.1: Logging

    ![Main Window logging preferences](../doc/img/MainWindow_logging.png) @@ -87,7 +147,7 @@ Log message will appear as follows: - 2: Message level: `(D)`: debug, `(I)`: info, `(W)`: warning, `(C)`: critical, `(F)`: fatal - 3: Message text -
    1.2.1. Console log minimum message level
    +

    2.1.1: Console log minimum message level

    This sets the minimum message level for a message do be displayed on the console: @@ -96,7 +156,7 @@ This sets the minimum message level for a message do be displayed on the console - Warning: all messages with QtWarning level and above - Error: all messages with QtCritical level and above. Includes QtFatal. -
    1.2.2. File log minimum message level
    +

    2.1.2: File log minimum message level

    This sets the minimum message level for a message do be logged to file: @@ -105,565 +165,111 @@ This sets the minimum message level for a message do be logged to file: - Warning: all messages with QtWarning level and above - Error: all messages with QtCritical level and above. Includes QtFatal. -
    1.2.3. File log enable
    +

    2.1.3: File log enable

    Use the checkbox to enable (check) or disable (uncheck) the dual logging to file -
    1.2.4. Log file selection
    +

    2.1.4: Log file selection

    Use this button to open a file dialog to choose or create a new log file. There is a 2s delay before a file change is effective. -
    1.2.5. Log file name
    +

    2.1.5: Log file name

    The full path of the log file appears here -
    1.2.6. Confirm changes
    +

    2.1.6: Confirm changes

    Use the "OK" button to validate all changes -
    1.2.7. Dismiss changes
    +

    2.1.7: Dismiss changes

    Use the "Cancel" button to dismiss all changes -

    1.3 Preferences - FFT

    +

    2.2: FFT

    When clicking on the FFT submenu a dialog opens for running the `fftwf-wisdom` utility with a choice of direct and possibly reverse FFT sizes. It produces a so called wisdom file `fftw-wisdom` that speeds up FFT allocations. It is created at a default location and will be used at next invocations of SDRangel. ![Main Window AMBE](../doc/img/MainWindow_fft.png) -
    1.3.1. FFTW Wisdom program
    +

    2.2.1: FFTW Wisdom program

    Path to the `fftwf-wisdom` program. It looks in the `PATH` variable and the "current" directory (that is the same directory where the `sdrangel` binary resides). -
    1.3.2. Select FFTW Wisdom program
    +

    2.2.2: Select FFTW Wisdom program

    Opens a file selection dialog to look for the `fftwf-wisdom` program. -
    1.3.3. FFT maximum size
    +

    2.2.3: FFT maximum size

    Select the maximum FFT size for precomputation. Sizes are powers of two between 128 and 32k. -
    1.3.4. Reverse FFT
    +

    2.2.4: Reverse FFT

    Select this checkbox to cover reverse FFTs -
    1.3.5. Command line
    +

    2.2.5: Command line

    This is the command line that will invoke the `fftwf-wisdom` program with its options -
    1.3.6. OK: launch the FFTW wisdom program
    +

    2.2.6: OK: launch the FFTW wisdom program

    When clicking the "OK" button the `fftwf-wisdom` program is launched in the background. A message pop-up appears with the PID of the process and the dialog exits. A new pop-up will appear with the output content when the program completes. -
    1.3.7. Cancel: dismiss the dialog without execution
    +

    2.2.7: Cancel: dismiss the dialog without execution

    When clicking the "Cancel" button the dialog is dismissed without execution of the `fftwf-wisdom` program. -

    1.4 Preferences - AMBE

    +

    2.3: AMBE

    When clicking on the AMBE submenu a dialog opens to let you specify physical AMBE devices to decode AMBE frames produced by digital voice signals (using DSD decoder plugin). ![Main Window AMBE](../doc/img/MainWindow_ambe.png) -
    1.4.1 AMBE server address and port or direct input
    +

    2.3.1: AMBE server address and port or direct input

    Use this freeflow text input box to specify either the address and port of an AMBE server in the form: <IPv4 address>:<port> or any directly attached physical device address like a COM port on Windows. -
    1.4.2 Import above address or device
    +

    2.3.2: Import above address or device

    Import the address or device specified in (1) into the list of used devices. The system will try to open the device or contact the server and will add it to the list only if successful. -
    1.4.3 Remove in use device or address
    +

    2.3.3: Remove in use device or address

    When a device or address is selected in the in use list (6) push this button to remove it from the list. The corresponding resources will be released. -
    1.4.4 Refresh in use list
    +

    2.3.4: Refresh in use list

    Checks the list of devices or addresses currently in use and update the in use list (6). -
    1.4.5 Empty in use list
    +

    2.3.5: Empty in use list

    Removes all devices or addresses in use. The in use list (6) is cleared consequently. This removes all AMBE devices related resources attached to the current instance of the SDRangel program. Therefore consecutive AMBE frames decoding will be handled by the mbelib library if available or no audio will be output. -
    1.4.6 In use list
    +

    2.3.6: In use list

    List of devices or addresses currently in use for AMBE frames decoding by this instance of the SDRangel program. -
    1.4.7 Import serial device
    +

    2.3.7: Import serial device

    Imports a serial device scanned in the list of available AMBE 3000 serial devices (9) in the in use list. If this device is already in the in use list then nothing happens and this is reported in the status text (10) -
    1.4.8 Import all serial devices
    +

    2.3.8: Import all serial devices

    Imports all serial devices scanned in the list of available AMBE 3000 serial devices (9) in the in use list. If any device is already in the in use list then it is not added twice. -
    1.4.9 List of available AMBE 3000 serial devices
    +

    2.3.9: List of available AMBE 3000 serial devices

    This is the list of AMBE 3000 currently attached to the system directly. This list gets updated at every opening of the dialog. -
    1.4.10 Status text
    +

    2.3.10: Status text

    A brief text reports the result of the current action -
    1.4.11 Close button
    +

    2.3.11: Close button

    Use this button to dismiss the dialog -

    1.5 Prefernces - LimeRFE

    - -Only if LimeSuite library is available this opens a dialog to control a LimeRFE device via USB. The details are provided [here](limerfeusbgui.md). - -

    1.6 Preferences - Devices - User arguments

    - -See the devuces user arguments management documentation [here](deviceuserargs.md). - -

    1.7. Help - Loaded plugins display

    - -When clicking on Help -> Loaded Plugins from the main menu bar a dialog box appears that shows information about the plugins loaded in SDRangel: - -![Main Window loaded plugins](../doc/img/MainWindow_loadedPlugins.png) - -
    Name
    - -Plugin display name. Tells briefly what this plugin is about. - -
    Version
    - -Starting with SDRangel version 2.0.0 this is the SDRangel version when the plugin was last updated. - -
    GPL
    - -Tells if the plugin is under GPL license. - -
    Expansion
    - -The plugin entry can be expanded or collapsed using the caret on the left. When expanded it shows more information about the copyright of the author and locations on the web where the plugin can be found. In all cases this is just here. - -
    OK button
    - -Click here when done to dismiss the dialog. - -

    2: Sampling devices

    - -This is where the plugin GUI specific to the device is displayed. - -![Sampling Device common](../doc/img/SampleDevice_common.png) - -**On the top of the dockable widget you have the following controls:** - -

    2.1: Change device

    - -Use this push button to open the device selection dialog to change the sampling device. This dialog will open: - -![Main Window sampling devices dialog](../doc/img/MainWindow_SDDialog.png) - -
    2.1.1: Device selection combo
    - -Use this combo box to select the device. Only available devices will appear in the list. For devices having more than one channel (ex: LimeSDR) the channel number will appear next to the device sequence number inside the brackets. Ex: `LimeSDR[0:1] 0009060B00473419` designates the second Rx (Rx #1) of the first encountered LimeSDR which serial number is 0009060B00473419. - -
    2.1.2: Device selection confirmation
    - -Use the `OK` button to confirm your choice and exit the dialog - -
    2.1.3: Device selection cancellation
    - -Use the `Cancel` button to exit the dialog without any change - -

    2.2: Reload currently selected device

    - -This button activates a close/open sequence to recycle the device. It may be useful when the device is not streaming anymore or in an attempt to clear possible errors. Make sure the streaming is stopped first. - -

    2.3: Current device identfier

    - -The identifier as shown in cotrol (2.1.1) appears truncated to the first 40 characters. - -**For every device there are the following common controls:** - -

    2.4. Start or stop acquisition

    - -
    2.4.1 left click
    - -Left click to start or stop streaming - - - When a play icon (▶) is displayed with a grey background the device is not operational - - When a play icon (▶) is displayed with a blue background the device is ready to start - - When a stop icon (■) is displayed with a green background the device is currently running - - When a play icon (▶) is displayed with a red background there is an error and a popup displays the error message. An Error typically occurs when you try to start the same device in more than one tab. - -
    2.4.2 right click
    - -Right click to control device reverse API. This dialog opens: - -![Basic device settings](../doc/img/BasicDeviceSettings.png) - -
    2.4.2.1: Toggle reverse API feature
    - -Use this checkbox to toggle on/off the reverse API feature. With reverse API engaged the changes in the device settings are forwarded to an API endpoint given by address (2.1.2.2), port (2.1.2.3) and device index (2.1.2.4) in the same format as the SDRangel REST API device settings endpoint. With the values of the screenshot the API URL is: `http://127.0.0.1:8888/sdrangel/deviceset/0/device/settings` The JSON payload follows the same format as the SDRangel REST API device settings. For example with HachRF Rx this would be something like: - -``` -{ - "deviceHwType": "HackRF", - "hackRFInputSettings": { - "LOppmTenths": 0, - "bandwidth": 1750000, - "biasT": 0, - "centerFrequency": 435000000, - "dcBlock": 0, - "devSampleRate": 2400000, - "fcPos": 2, - "iqCorrection": 0, - "linkTxFrequency": 0, - "lnaExt": 0, - "lnaGain": 16, - "log2Decim": 0, - "vgaGain": 16 - }, - "tx": 0 -} -``` -Note that the PATCH method is used. The full set of parameters is sent only when the reverse API is toggled on or a full settings update is done. - -The start and stop actions are also forwarded with the `/sdrangel/deviceset/{deviceSetIndex}/device/run` API endpoint using POST (start) or DELETE (stop) methods. - -More details on this feature can be found on the corresponding Wiki page. - -
    2.4.2.2: API address
    - -This is the IP address of the API endpoint - -
    2.4.2.3: API port
    - -This is the IP port of the API endpoint - -
    2.4.2.4: Device index
    - -This is the targeted device index - -
    2.4.2.5: Cancel changes and exit dialog
    - -Do not make any changes and exit dialog - -
    2.4.2.6: Validate and exit dialog
    - -Validates the data (saves it in the channel marker object) and exits the dialog - -

    2.5: Device sampling rate

    - -This is the sampling rate in kS/s of the I/Q stream extracted from the device after possible decimation. The main spectrum display corresponds to this sampling rate. - -

    2.6: Center frequency

    - -This is the current center frequency in kHz with dot separated thousands (MHz, GHz). On devices for which frequency can be directly controlled (i.e. all except File Source and Remote Input) you can use the thumbwheels to set the frequency. Thumbwheels move with the mouse wheel when hovering over a digit. - -When left clicking on a digit a cursor is set on it and you can also use the arrows to move the corresponding thumbwheel. - -When right clicking on a digit the digits on the right are all set to zero. This effectively does a ceil rounding at the current position. - -

    Additional inputs

    - -Most devices will also present an interface to control automatic DC removal and I/Q imbalance and also a control of the LO correction in ppm. - - - Example1: ![Sampling Device corr 1](../doc/img/SampleDevice_corr01.png) - - Example2: ![Sampling Device corr 2](../doc/img/SampleDevice_corr02.png) - -

    3. Spectrum display control

    - -![Spectrum GUI](../doc/img/MainWindow_spectrum_gui.png) - -These are the controls of the main spectrum display in (7). The same controls are found in the plugins that feature a spectrum display. For example: - - Channel Analyzer - - Broadcast FM demodulator - - ChirpChat (LoRa) demodulator - - File sink - - FreeDV demodulator and modulator - - Frequency tracker - - SigMF file sink - - SSB demodulator and modulator - - UDP source and sink - -

    3A. Spectrum display control line 1

    - -![Spectrum GUI A](../doc/img/MainWindow_spectrum_gui_A.png) - -

    3A.1. FFT window selector

    - -Use this combo box to select which window is applied to the FFT: - - **Bart**: Bartlett - - **B-H**: Blackmann-Harris - - **FT**: Flat top - - **Ham**: Hamming - - **Han**: Hanning (default) - - **Rec**: Rectangular (no window) - - **Kai**: Kaiser with alpha = 2.15 (beta = 6.76) gives sidelobes < -70dB - -

    3A.2. FFT size

    - -Select the size of the FFT window among these values: - - 128 - - 256 - - 512 - - 1k = 1024 (default) - - 2k = 2048 - - 4k = 4096 - -

    3A.3. FFT Overlap

    - -FFT Overlap in number of samples over half of the FFT size. The percentage of overlap appears in the tooltip. Ranges from 0 (no overlap) to half the FFT size minus one (maximum overlap). - -Example with a FFT of 1k (1024) and an overlap of 128 the overlap percentage is 128 ÷ 512 = 25% - -

    3A.4. Averaging mode

    - -Use this combo to select which averaging mode is applied: - - **No**: no averaging. Disables averaging regardless of the number of averaged samples (4.6). This is the default option - - **Mov**: moving average. This is a sliding average over the amount of samples specified next (4.6). There is one complete FFT line produced at every FFT sampling period - - **Fix**: fixed average. Average is done over the amount of samples specified next (4.6) and a result is produced at the end of the corresponding period then the next block of averaged samples is processed. There is one complete FFT line produced every FFT sampling period multiplied by the number of averaged samples (4.6). The time scale on the waterfall display is updated accordingly. - - **Max**: this is not an averaging but a max hold. It will retain the maximum value over the amount of samples specified next (4.6). Similarly to the fixed average a result is produced at the end of the corresponding period which results in slowing down the waterfall display. The point of this mode is to make outlying short bursts within the "averaging" period stand out. With averaging they would only cause a modest increase and could be missed out. - -

    3A.5. Number of averaged samples

    - -Each FFT bin (squared magnitude) is averaged or max'ed over a number of samples. This combo allows selecting the number of samples between these values: 1 (no averaging), 2, 5, 10, 20, 50, 100, 200, 500, 1k (1000) for all modes and in addition 2k, 5k, 10k, 20k, 50k, 1e5 (100000), 2e5, 5e5, 1M (1000000) for "fixed" and "max" modes. Averaging reduces the noise variance and can be used to better detect weak continuous signals. The fixed averaging mode allows long time monitoring on the waterfall. The max mode helps showing short bursts that may appear during the "averaging" period. - -The resulting spectrum refresh period appears in the tooltip taking sample rate, FFT size (3A.2), average size (3A.5) and overlap (3A.3) into consideration. Averaging size adjustment is valid for fixed average and max modes only: - -Period = ((((FFT_size ÷ 2) - overlap) × 2) ÷ sample_rate) × averaging_size - -

    3A.6. Play/Pause spectrum

    - -Use this button to freeze the spectrum update. Useful when making measurements (Paragraph 6). - -

    3B. Spectrum display control line 2

    - -![Spectrum GUI B](../doc/img/MainWindow_spectrum_gui_B.png) - -

    3B.1. Autoscale

    - -Scales spectrum by setting reference level and range automatically based on maximum and minimum levels. Takes the average of FFT size ÷ 32 minima for the minimum and 10 dB over maximum for the maximum. - -

    3B.2. Reference level

    - -This is the level in dB at the top of the display range. You can select values between 0 and -110 in 1 dB steps - -

    3B.3. Range

    - -This is the range of display in dB. You can select values between 1 and 100 in 1 dB steps - -

    3B.4. FPS capping

    - -The refresh rate of the spectrum is capped by this value in FPS i.e the refresh period in seconds is 1 ÷ FPS. The default value is 20 and corresponds to general usage. You may use a lower value to limit GPU usage and power consumption. You may also use a higher value for an even more reactive display. "NL" corresponds to "No Limit". With "No Limit" the spectrum update will be triggered immediately when a new FFT is calculated. Note that actual refresh rate will be limited by other factors related to hardware and graphics drivers. - -The refresh period is limited anyway by the FFT period which is the FFT size divided by the baseband sampling rate and multiplied by the fixed average or max size (3A.5) in case these features are engaged (3A.4). Setting a resulting FFT refresh time above the refresh rate will make sure that a short burst is not missed particularly when using the max mode. - -Example with a FFT size of 1k (1024) and no overlap, a baseband rate of 48 kS/s and an averaging size of 5 the refresh period is: - -(1024 ÷ 48000) × 5 ≈ 107 ms - -Thus if the FPS capping is 20 (50 ms) the refresh period will be in fact 107 ms (≈ 9 FPS) anyway. - -

    3B.5. Logarithmic/linear scale

    - -Use this toggle button to switch between spectrum logarithmic and linear scale display. The face of the button will change to represent either a logaritmic or linear curve. - -When in linear mode the range control (4.4) has no effect because the actual range is between 0 and the reference level. The reference level in dB (4.3) still applies but is translated to a linear value e.g -40 dB is 1e-4. In linear mode the scale numbers are formatted using scientific notation so that they always occupy the same space. - -

    3B.6. Spectrum server control

    - -A websockets based server can be used to send spectrum data to clients. An example of such client can be found in the [SDRangelSpectrum](https://github.com/f4exb/sdrangelspectrum) project. - - - Left button: toggles server on/off - - Right button: opens a secondary dialog that lets you choose the server listening (local) address and port. - -The server only sends data. Control including FFT details is done via the REST API. FFT frames are formatted as follows (in bytes): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OffsetLengthValue
    08Center frequency in Hz as 64 bit integer
    88Effective FFT time in milliseconds as 64 bit integer
    168Unix timestamp in milliseconds as 64 bit integer
    244FFT size as 32 bit integer
    284FFT bandwidth in Hz as 32 bit integer
    324 - Indicators as 32 bit integer LSB to MSB: -
      -
    • bit 0: Linear (1) / log (0) spectrum indicator
    • -
    • bit 1: SSB (1) / DSB (0) spectrum indicator
    • -
    • bit 2: USB (1) / LSB (0) spectrum indicator
    • -
    -
    36N*4Vector of N = FFT size 32 bit floating point spectrum power values either log (dB) or linear
    - -

    3B.7. Spectrum markers dialog

    - -Opens the [spectrum markers dialog](spectrummarkers.md) - -

    3B.8. Spectrum calibration

    - -Use the toggle button to switch between relative and calibrated power readings. - -Right click to open the [calibration management dialog](spectrumcalibration.md) - -

    3C. Spectrum display control line 3

    - -![Spectrum GUI C](../doc/img/MainWindow_spectrum_gui_C.png) - -

    3C.1. Clear spectrum

    - -This resets the maximum spectrum trace and phosphor remanence - -

    3C.2. Phosphor display

    - -Toggles the phosphor display on the spectrum - -

    3C.3. Phosphor display stroke and max hold decay

    - -This controls the decay rate of the stroke when phosphor display is engaged (4.C). The histogram pixel value is diminished by this value each time a new FFT is produced. A value of zero means no decay and thus phosphor history and max hold (red line) will be kept until the clear button (4.B) is pressed. - -

    3C.4. Phosphor display stroke and max hold decay divisor

    - -When phosphor display is engaged (4.C) and stroke decay is 1 (4.7) this divides the unit decay by this value by diminishing histogram pixel value by one each time a number of FFTs equal to this number have been produced. Thus the actual decay rate is 1 over this value. This allow setting a slower decay rate than one unit for each new FFT. - -

    3C.5. Phosphor display stroke strength

    - -This controls the stroke strength when phosphor display is engaged (4.C). The histogram value is incremented by this value at each new FFT until the maximum (red) is reached. - -

    3C.6. Maximum hold trace

    - -Toggles the maximum hold trace display (red trace) on the spectrum - -

    3C.7. Current trace

    - -Toggles the current trace display (yellow trace) on the spectrum - -

    3C.8. Trace intensity

    - -This controls the intensity of the maximum (4.D) and current (4.E) spectrum trace - -

    3C.9. Waterfall/spectrum placement

    - -Toggles the spectrum on top or on bottom versus waterfall - -

    3C.10. Waterfall

    - -Toggles the waterfall display - -

    3C.11.Grid

    - -Toggles the grid display - -

    3C.12.Grid intensity

    - -Controls the intensity of the grid display - -

    5. Presets and commands

    - -The presets and commands tree view are by default stacked in tabs. The following sections describe the presets section 5A) and commands (section 5B) views successively - -

    4A. Presets

    - -This is a tree view of the saved presets. Presets record the channels setup and a copy of the settings of each sample source that has been used when saving this preset. Thus you can use the same channel arrangement with various devices having their particular setup. - -![Main Window presets view](../doc/img/MainWindow_presets_view.png) - -

    4A.1. Preset selection

    - -You select a preset or a preset group by clicking on its line in the tree view. All actions (6) will be done relative to this preset or preset group. - -

    4A.2. Group

    - -You can organize your presets into groups. Groups can be collapsed or expanded by using the caret icon on the left. - -

    4A.3. Center frequency

    - -The center frequency used in this preset is displayed here. - -

    4A.4. Rx/Tx indicator

    - -"R" is displayed for a Rx device set and "T" for a Tx device set - -

    4A.5. Preset name

    - -You can give a name to your preset. Names need not to be unique. - -

    4A.6. Preset control or actions

    - -The controls are located as icons at the bottom of the window: - -![Main Window presets](../doc/img/MainWindow_presets.png) - -
    4A.6.1. New preset
    - -Click on this icon to create a new preset with the current values in the selected sample device tab (Main window: 2). - -
    4A.6.2. Update preset
    - -Click on this icon to create a update the selected preset with the current values in the selected sample device tab (Main window: 2). Please note that this does not save the preset immediately on disk to save presets immediately you need to use the save button (4). - -
    4A.6.3. Edit preset
    - -Opens a new window where you can change the group name and description. - - - for group items you can rename the group or merge all group presets into an existing group by selecting this existing group - - for preset items you can: - - move the preset to another existing group by selecting this existing group - - assign this preset to a new group by typing in this new group - - change the description - -
    4A.6.4. Save presets
    - -Presets are saved to disk automatically at exit time you can however request to save them immediately using this icon. - -
    4A.6.5. Export preset
    - -Using the previous icon presets are saved globally in a system dependent place. Using this icon you can export a specific preset in a single file that can be imported on another machine possibly with a different O/S. The preset binary data (BLOB) is saved in Base-64 format. - -
    4A.6.6. Import preset
    - -This is the opposite of the previous operation. This will create a new preset in the selected group or the same group as the preset being selected. - -
    4A.6.7. Delete preset
    - - - on a preset item: deletes the selected preset. - - on a preset group: deletes the group and all its presets. - -
    4A.6.8. Load preset
    - -Applies the selected preset to the current device set (source and channel plugins). - -

    4B. Commands

    +

    2.4: Commands

    This is a tree view of the saved commands. Commands describe the path to an executable file, its arguments a possible link to a keystroke event that triggers the execution. Similarly to presets commands can be arranged into groups and have a description short text. @@ -673,43 +279,43 @@ Of course any binary that resides in your system can be used that way like `/bin ![Main Window presets view](../doc/img/MainWindow_commands_view.png) -

    4B.1. Command selection

    +

    2.4.1: Command selection

    You select a command or a command group by clicking on its line in the tree view. All actions (6) will be done relative to this command or command group. -

    4B.2. Group

    +

    2.4.2: Group

    You can organize your commands into groups. Groups can be collapsed or expanded by using the caret icon on the left. -

    4B.3. Description

    +

    2.4.3: Description

    Short description of a command. -

    4B.4. Key binding indicator

    +

    2.4.4: Key binding indicator

    - `-`: no key binding - `P`: key press binding - `R`: key release binding -

    4B.5. Key binding sequence

    +

    2.4.5: Key binding sequence

    -This is a descriptive text of the key sequence that is used for the key binding. +Thisis a descriptive text of the key sequence that is used for the key binding. -

    4B.6. Command control or actions

    +

    2.4.6: Command control or actions

    The controls are located as icons at the bottom of the window: ![Main Window commands](../doc/img/MainWindow_commands.png) -
    4B.6.1. Create new command
    +
    2.4.6.1: Create new command
    Click on this icon to create a new command. This opens an edit dialog see the edit section (5B.6.3) for the details of the edit dialog. -
    4B.6.2. Duplicate command
    +
    2.4.6.2: Duplicate command
    Click on this icon to duplicate the currently selected command (inactive on groups). Later you can edit the details of the copy with the edit dialog (see 5B.6.3 next) -
    4B.6.3. Edit command or command group
    +
    2.4.6.3: Edit command or command group
    Command groups @@ -723,15 +329,15 @@ You can edit the details of the command with this dialog. ![Main Window command group edit](../doc/img/MainWindow_command_edit.png) -
    4B.6.3.1. Edit group
    +
    2.4.6.3.1: Edit group
    You can select an existing group with the combo or create a new one for this command using the text edit box -
    4B.6.3.2. Edit description
    +
    2.4.6.3.2: Edit description
    You can edit the description using this text box. The description will appear in the tree view. -
    4B.6.3.3. Executable file selection
    +
    2.4.6.3.3: Executable file selection
    Clicking on this button will open a file dialog to select the executable file that will be run with this command. The file selection dialog has predefined file pattern selections: @@ -740,11 +346,11 @@ Clicking on this button will open a file dialog to select the executable file th - `*.sh` or `*.bat` for shell or batch files - `*.bin` or `*.exe` for binary files -
    4B.6.3.4. Executable file path
    +
    2.4.6.3.4: Executable file path
    This is the full path of the selected executable file. -
    4B.6.3.5. Command line arguments
    +
    2.4.6.3.5: Command line arguments
    Use the text box to edit the arguments given to the executable file as in `program arguments`. @@ -754,41 +360,41 @@ You can use special codes to insert information specific to the application cont - `%2`: the port of the web REST API - `%3`: the currently selected device set index -
    4B.6.3.6. Key binding
    +
    2.4.6.3.6: Key binding
    Use this checkbox to enable or disable the command execution binding to a key or combination of keys press or release event -
    4B.6.3.7. Key binding capture
    +
    2.4.6.3.7: Key binding capture
    Use this button to capture the key or key combination that will be used for the key binding. After pushing this button just type in the key or key combination. -
    4B.6.3.8. Key binding display
    +
    2.4.6.3.8: Key binding display
    This shows the key or combination of keys used for the key binding. -
    4B.6.3.9. Release key binding
    +
    2.4.6.3.9: Release key binding
    Use this checkbox to bind the key or combination of keys to the key release event. If unchecked the binding will be associated to the key press event. -
    4B.6.3.10. Confirm changes
    +
    2.4.6.3.10: Confirm changes
    Use the "OK" button to confirm the changes. -
    4B.6.3.11. Cancel changes
    +
    2.4.6.3.11: Cancel changes
    Use the "Cancel" button to cancel the changes. -
    4B.6.4. Run command or groups of commands
    +
    2.4.6.4: Run command or groups of commands
    This will run the currently selected command. If the selection is a group it will run all commands of the group starting them in the displayed order. Please note that commands are run in independent processes and therefore all launched commands in the group will run concurrently. -
    4B.6.5. View last command run details
    +
    2.4.6.5: View last command run details
    This dialog will show the results of the last run including the output (merged stdout and stderr). ![Main Window command output](../doc/img/MainWindow_command_output.png) -
    4B.6.5.1. Process status
    +
    2.4.6.5.1: Process status
    When the process is not running the stop icon (■) is displayed. The background color indicate different states: @@ -798,31 +404,31 @@ When the process is not running the stop icon (■) is displayed. The backgr When the process is running the play icon (▶) is displayed with an orange background. -
    4B.6.5.2. Refresh data
    +
    2.4.6.5.2: Refresh data
    Pushing this button will update the data displayed with the latest status. Please note that the log is displayed only when the process is terminated. -
    4B.6.5.3. Start time
    +
    2.4.6.5.3: Start time
    This is the timestamp of process start. It is filled with dots `...` if the process has never started during this session. -
    4B.6.5.4. End time
    +
    2.4.6.5.4: End time
    This is the timestamp of process end. It is filled with dots `...` if the process has never terminated during this session. -
    4B.6.5.3. PID
    +
    2.4.6.5.3: PID
    This is the process PID. It is 0 if the process has never run during this session. -
    4B.6.5.6. Process kill
    +
    2.4.6.5.6: Process kill
    Use this button to kill (send SIGKILL) the running process. It has no effect if the process is not running. -
    4B.6.5.7. Command line
    +
    2.4.6.5.7: Command line
    This shows the actual command line that was used to start the process -
    4B.6.5.8. Error status
    +
    2.4.6.5.8: Error status
    This is the translation of `QProcess::ProcessError`. Possible values are: @@ -834,372 +440,59 @@ This is the translation of `QProcess::ProcessError`. Possible values are: - `Read error`: an error occurred when attempting to read from the process. For example, the process may not be running. - `Unknown error`: an unknown error occurred. -
    4B.6.5.9. Exit code
    +
    2.4.6.5.9: Exit code
    This is the program exit code. When the process crashes this is the signal by which the process end was caused. For example if you kill the process with button (6) it sends the process a SIGKILL (code 9) and therefore the value is 9. -
    4B.6.5.10. Exit status
    +
    2.4.6.5.10: Exit status
    There are only two possibilities: either the program exits normally but possibly with a non zero exit code or it ends with a crash. -
    4B.6.5.11. Process log
    +
    2.4.6.5.11: Process log
    This is the log of the process (merged stdout and stderr). Please note that it is updated only on program termination. -
    4B.6.5.12. Exit
    +
    2.4.6.5.12: Exit
    By pushing the "Close" button the process output window is closed. -
    4B.6.6. Save commands
    +
    2.4.6.6: Save commands
    This will save the commands immediately. The commands will be automatically saved when the application exits normally. -
    4B.6.7. Delete commands or group of commands
    +
    2.4.6.7: Delete commands or group of commands
    This will delete the currently selected command or if selection is a group this will delete all commands in the group. -
    4B.6.8. Activate keyboard bindings
    +
    2.4.6.8: Activate keyboard bindings
    Use this button to activate the keyboard bindings. Note that you need to have this button selected (its background should be lit in beige/orange) for the key bindings to be effective. -

    5. Channels

    +

    3: Help

    -This area shows the control GUIs of the channels currently active for the device. When the preset is saved (as default at exit time or as a saved preset) the GUIs are ordered by increasing frequency. If presets share the same frequency they are ordered by their internal ID name. Thus new channel GUIs will appear ordered only when reloaded. +

    3.1: Loaded plugins

    -Details about the GUIs can be found in the channel plugins documentation which consists of a readme.md file in each of the channel plugins folder (done partially). +When clicking on Help -> Loaded Plugins from the main menu bar a dialog box appears that shows information about the plugins loaded in SDRangel: -

    5.1: Channel dock top bar - Add channels

    +![Main Window loaded plugins](../doc/img/MainWindow_loadedPlugins.png) -Channels are added by clicking on the circled "+" icon (1) on the top bar of the channels dockable widget: +

    Name

    -![Channels dock](../doc/img/Channels_dock.png) +Plugin display name. Tells briefly what this plugin is about. -This opens the following dialog: +

    Version

    -![Add Channels dialog](../doc/img/AddChannels_dialog.png) +Starting with SDRangel version 2.0.0 this is the SDRangel version when the plugin was last updated. -
    5.1.1: Channel selection
    +

    GPL

    -Use this combo to select which channel type to add +Tells if the plugin is under GPL license. -
    5.1.2: Close dialog
    +

    Expansion

    -Use this button to dismiss the dialog +The plugin entry can be expanded or collapsed using the caret on the left. When expanded it shows more information about the copyright of the author and locations on the web where the plugin can be found. In all cases this is just here. -
    5.1.3: Add channel
    +

    OK button

    -Add a new channel by clicking on the `Apply` button. You may click it several times to add more channels. The dialog can be dismissed with the `Close` button or the closing window icon `X` on the top bar. +Click here when done to dismiss the dialog. -

    5.2. Basic channel settings

    - -![Channel control 01](../doc/img/MainWindow_channel_01.png) - -With most channel types some common basic settings can be set with a popup dialog. This dialog is opened by clicking on the small grey square on the top left of the channel window. The settings are as follows: - -![Basic channel settings](../doc/img/BasicChannelSettings.png) - -
    5.1.1: Window title
    - -Changes the channel window title - -
    5.1.2: Channel color
    - -Changes the color of the window title bar and spectrum overlay. To change the color click on the color square to open a color chooser dialog. The hex rgb value is displayed next to the color square. - -
    5.1.3: Frequency scale display type
    - -When the mouse is over the channel window or over the central line in the spectrum a channel parameter is displayed on the frequency scale. This parameter can be: - - - Freq: channel absolute center frequency - - Title: channel window title - - AdSnd: UDP address and send port - - AdRcv: UDP address and receive port - -
    5.1.4: Toggle reverse API feature
    - -Use this checkbox to toggle on/off the reverse API feature. With reverse API engaged the changes in the channel settings are forwarded to an API endpoint given by address (5.1.5), port (5.1.6), device index (5.1.7) and channel index (5.1.8) in the same format as the SDRangel REST API channel settings endpoint. With the values of the screenshot the API URL is: `http://127.0.0.1:8888/sdrangel/deviceset/0/channel/0/settings` The JSON payload follows the same format as the SDRangel REST API channel settings. Using the same example this would be: - -``` -{ - "SSBDemodSettings": { - "agc": 0, - "agcClamping": 0, - "agcPowerThreshold": -40, - "agcThresholdGate": 4, - "agcTimeLog2": 7, - "audioBinaural": 0, - "audioDeviceName": "System default device", - "audioFlipChannels": 0, - "audioMute": 0, - "dsb": 0, - "inputFrequencyOffset": 0, - "lowCutoff": 300, - "rfBandwidth": 3000, - "rgbColor": -16711936, - "spanLog2": 3, - "title": "SSB Demodulator", - "volume": 3 - }, - "channelType": "SSBDemod", - "tx": 0 -} -``` -Note that the PATCH method is used. The full set of parameters is sent only when the reverse API is toggled on or a full settings update is done. - -More details on this feature can be found on the corresponding Wiki page. - -
    5.1.5: API address
    - -This is the IP address of the API endpoint - -
    5.1.6: API port
    - -This is the IP port of the API endpoint - -
    5.1.7: Device index
    - -This is the targeted device index - -
    5.1.8: Channel index
    - -This is the targeted channel index - -
    5.1.9: Cancel changes and exit dialog
    - -Do not make any changes and exit dialog - -
    5.1.10: Validate and exit dialog
    - -Validates the data (saves it in the channel marker object) and exits the dialog - -

    5.2 Device stream assignment

    - -![Channel control 02](../doc/img/MainWindow_channel_02.png) - -The bigger square next to the leftmost "c" square is the device stream assignment control. With single Rx (source device set) and single Tx devices (sink device set) this is inactive because the channel is simply connected to the single stream as shown by the "S" letter. - -This is in place for future MIMO devices and channels support (v.5). - -

    6. Spectrum from device

    - -This shows the spectrum in the passband returned from the sampling device possibly after decimation. The actual sample rate is shown in the device control at the left of the frequency display (2.3) - -The spectrum display is controlled by the display control (4). - -

    Status line

    - -![Spectrum Statuss](../doc/img/Spectrum_Status.png) - -A status line is displayed at the left of the top margin. It displays the following items from left to right: - - - if frequency zooming is active the zooming factor - - `CF:` followed by the Center Frequency of the displayed spectrum possibly with multiplier suffix (G, M, k) - - `SP:` followed by the frequency SPan of the displayed spectrum possibly with multiplier suffix (M, k) - -

    Spectrum markers

    - -![Spectrum Markers](../doc/img/Spectrum_Markers.png) - -Note that spectrum markers appear only when spectrum display is active (shoes data) - -The spectrum markers can be set either with the mouse as explained next or with the [spectrum markers dialog](spectrummarkers.md) that can be opened with the markers button (3B.7). - -Use Shift and mouse left click to set a new marker. There is a maximum of two markers with a different status: - - The first marker will display frequency (2) and power (1) or time (5) on the scale side of the view. Frequency units are the same as displayed in the frequency scale. - - The second marker will display frequency difference (3 or 6) and power difference (4) or time difference (7) from the first marker on the opposite side of the scales. Difference values may be suffixed with a multiplier character. - -Base units are Hz for frequency difference and seconds for time. Power is expressed either in dB or plain value depending on the linear or log setting for the spectrum display. - -Values may be suffixed by a multiplier character: - - **p**: pico (times 1e-12) - - **n**: nano (times 1e-9) - - **u**: micro (times 1e-6) - - **m**: milli (times 1e-3) - - no character: no change (times one) - - **k**: kilo (times 1e3) - - **M**: mega (times 1e6) - - **G**: giga (times 1e9) - -Use mouse right click anywhere in the view to remove the last entered marker. Use shift and mouse right click to remove all markers. - -

    Mouse scroll wheel

    - -![Spectrum Mousewheel](../doc/img/MainWindow_spectrum_mousewheel.png) - -
    A: Channel moving
    - -When the mouse is over the center line of a channel: - - - scrolling will move the channel by +/- 10 Hz at each scroll up/down respectively - - combined with Ctrl it will move the channel by +/- 100 Hz - - combined with Shift it will move the channel by +/- 1 kHz - -
    B: Frequency zooming
    - -When the mouse is in the spectrum or waterfall area but not over the center line of a channel it will zoom in/out along X (frequency) axis by a 0.5 step at each scroll up/down respectively between 1x (no zoom) and 10x. Note that in order to zoom on the center line of a channel you may move the mouse pointer in the top margin (center line moving is not active there but zooming is). - -When frequency zooming is active use Alt + left click to move the center frequency to the clicked point. - -
    C: Power zooming
    - -When the mouse is inside the power scale (spectrum) the power range is decreased by 2 (zoom in) or increased by 2 (zoom in) at each wheel step forward or backward respectively. The behavior of the reference level depends on where in the scale is the mouse pointer: - - - in the top third: the reference level is maintained thus the reference level at the top stays the same - - in the middle third: the reference level is decreased by 1 (zoom in) or increased by 1 (zoom out) at each wheel step forward or backward thus the level in the middle stays the same - - in the bottom third: the reference level is decreased by 2 (zoom in) or increased by 2 (zoom out) at each wheel step forward or backward thus the level at the bottom stays the same - -
    D: Time zooming
    - -When the mouse is inside the time scale (waterfall) the overlap is increased by 1 (zoom in) or decreased by 1 (zoom out) at each wheel step forward or backward respectively. Overlap is bounded by 0 and half of the FFT size minus one. - -

    7. Status

    - -![Main Window status](../doc/img/MainWindow_status.png) - -

    7.1. SDRangel version

    - -This is the current tag or the latest tag followed by the number of commits since the latest tag followed by the git commit SHA1 (8 hex characters) preceded by 'g'. Ex: `v4.5.3-29-gf5f2349d` - -

    7.2. Qt version

    - -Qt version with which this copy of SDRangel was compiled. - -

    7.3. Architecture

    - -Codename of the CPU architecture in which SDRangel is running. - -

    7.4. Operating system

    - -Pretty print of the operating system in which SDRangel is running. - -

    7.5. Local date and time

    - -Local time timestamp according to system clock. Format: `yyyy-mm-dd HH:MM:ss TZ` - -

    8. Features

    - -Feature plugins implement pieces of functionality not directly related to the I/Q stream(s) DSP processing and not part of the core functionality. It can control and interact devices and channels to achieve this specialzed piece of functionality. Examples are PTT (Push To Talk) to switchover Rx/Tx device sets as you would do with a transciever or control via rigctl protocol. - -This area shows the feature GUIs of the features currently instantiated (active). The top bar has the following controls: - -![Features dock top](../doc/img/Features_top.png) - -

    8.1 Add feature

    - -Click on this button to open a dialog to add features. The dialog function is similarl to the add channels dialog in section 5.1: - -![Features add dialog](../doc/img/Features_add.png) - -
    8.1.1: Feature selection
    - -Use this combo to select which feature type to add - -
    8.1.2: Close dialog
    - -Use this button to dismiss the dialog - -
    8.1.3: Add feature
    - -Add a new feature by clicking on the `Apply` button. You may click it several times to add more feature instances. The dialog can be dismissed with the `Close` button or the closing window icon `X` on the top bar. - -

    8.2: Basic features settings

    - -![Features top button](../doc/img/Features_basic.png) - -At the left of the top bar of every feature GUI a "c" button opens a dialog to set some parameters common to all feature plugins: - -![Basic channel settings](../doc/img/Features_basic_dialog.png) - -
    8.2.1: Window title
    - -Changes the channel window title - -
    8.2.2: Feature color
    - -Changes the color of the window title bar. To change the color click on the color square to open a color chooser dialog. The hex rgb value is displayed next to the color square. - -
    8.2.3: Toggle reverse API feature
    - -Use this checkbox to toggle on/off the reverse API feature. With reverse API engaged the changes in the feature settings are forwarded to an API endpoint given by address (8.2.4), port (8.2.5), feature set index (8.2.6) and feature index (8.2.7) in the same format as the SDRangel REST API feature settings endpoint. With the values of the screenshot the API URL is: `http://127.0.0.1:8888/sdrangel/featureeset/0/feature/0/settings` The JSON payload follows the same format as the SDRangel REST API feature settings. Using the same example this would be: - -``` -{ - "SimplePTTSettings": { - "reverseAPIAddress": "127.0.0.1", - "reverseAPIChannelIndex": 0, - "reverseAPIDeviceIndex": 0, - "reverseAPIPort": 8888, - "rgbColor": -65536, - "rx2TxDelayMs": 200, - "rxDeviceSetIndex": 0, - "title": "Simple PTT", - "tx2RxDelayMs": 200, - "txDeviceSetIndex": 1, - "useReverseAPI": 0 - }, - "featureType": "SimplePTT" -} -``` -Note that the PATCH method is used. The full set of parameters is sent with the PUT method only when the reverse API is toggled on or a full settings update is done. - -
    8.2.4: API address
    - -This is the IP address of the API endpoint - -
    8.2.5: API port
    - -This is the IP port of the API endpoint - -
    8.2.6: Feature set index
    - -This is the targeted feature set index - -
    8.2.7: Feature index
    - -This is the targeted feature index - -
    8.2.8: Cancel changes and exit dialog
    - -Do not make any changes and exit dialog - -
    8.2.9: Validate and exit dialog
    - -Validates the data and exits the dialog - -

    8.3: Presets dialog

    - -Feature sets (groups) can be saved to and retrieved from specialized feature presets - -![Features presets dialog](../doc/img/Features_presets.png) - -
    8.3.1: Feature selection
    - -Move the cursor to select a feature. Features can be organized into groups at the top level (here "Test"). When selecting a group only Edit and Delete group are available - -
    8.3.2: Add new preset
    - -Save the current feature set in a new preset. - -
    8.3.3: Update selected preset
    - -Update the selected preset with the current feature set - -
    8.3.4: Save presets
    - -This button is inactive. All presets are saved at program exit or with the Presets save button. - -
    8.3.5: Edit preset
    - -Change preset name or the preset group to which this preset belongs. If selection is a group the group name can be changed. - -
    8.3.6: Delete preset
    - -Delete selected preset or selected group - -
    8.3.7: Load preset
    - -Load preset in the current feature set. The Features that were present before are dismissed. - -
    8.3.8: Close dialog
    - -This button dismisses the dialog.