From a0e79c993fd4b6886d997a814582c1b64c929355 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 3 Nov 2018 09:39:43 +0100 Subject: [PATCH 1/3] Added LPF support and all chip models available for select --- gui/ecp5/mainwindow.cc | 51 ++++++++++++++++++++++++++++---- gui/ecp5/mainwindow.h | 4 +++ gui/ecp5/nextpnr.qrc | 1 + gui/ecp5/resources/open_lpf.png | Bin 0 -> 1928 bytes 4 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 gui/ecp5/resources/open_lpf.png diff --git a/gui/ecp5/mainwindow.cc b/gui/ecp5/mainwindow.cc index b3c53849..aa2911ea 100644 --- a/gui/ecp5/mainwindow.cc +++ b/gui/ecp5/mainwindow.cc @@ -20,6 +20,7 @@ #include "mainwindow.h" #include "bitstream.h" #include "log.h" +#include #include #include @@ -53,6 +54,12 @@ void MainWindow::newContext(Context *ctx) void MainWindow::createMenu() { // Add arch specific actions + actionLoadLPF = new QAction("Open LPF", this); + actionLoadLPF->setIcon(QIcon(":/icons/resources/open_lpf.png")); + actionLoadLPF->setStatusTip("Open LPF file"); + actionLoadLPF->setEnabled(false); + connect(actionLoadLPF, &QAction::triggered, this, &MainWindow::open_lpf); + actionLoadBase = new QAction("Open Base Config", this); actionLoadBase->setIcon(QIcon(":/icons/resources/open_base.png")); actionLoadBase->setStatusTip("Open Base Config file"); @@ -67,10 +74,12 @@ void MainWindow::createMenu() // Add actions in menus mainActionBar->addSeparator(); + mainActionBar->addAction(actionLoadLPF); mainActionBar->addAction(actionLoadBase); mainActionBar->addAction(actionSaveConfig); menuDesign->addSeparator(); + menuDesign->addAction(actionLoadLPF); menuDesign->addAction(actionLoadBase); menuDesign->addAction(actionSaveConfig); } @@ -81,11 +90,11 @@ static QStringList getSupportedPackages(ArchArgs::ArchArgsTypes chip) { QStringList packages; const ChipInfoPOD *chip_info; - if (chip == ArchArgs::LFE5U_25F) { + if (chip == ArchArgs::LFE5U_25F || chip == ArchArgs::LFE5UM_25F || chip == ArchArgs::LFE5UM5G_25F) { chip_info = get_chip_info(reinterpret_cast *>(chipdb_blob_25k)); - } else if (chip == ArchArgs::LFE5U_45F) { + } else if (chip == ArchArgs::LFE5U_45F || chip == ArchArgs::LFE5UM_45F || chip == ArchArgs::LFE5UM5G_45F) { chip_info = get_chip_info(reinterpret_cast *>(chipdb_blob_45k)); - } else if (chip == ArchArgs::LFE5U_85F) { + } else if (chip == ArchArgs::LFE5U_85F || chip == ArchArgs::LFE5UM_85F || chip == ArchArgs::LFE5UM5G_85F) { chip_info = get_chip_info(reinterpret_cast *>(chipdb_blob_85k)); } else { log_error("Unsupported ECP5 chip type.\n"); @@ -100,9 +109,15 @@ static QStringList getSupportedPackages(ArchArgs::ArchArgsTypes chip) void MainWindow::new_proj() { QMap arch; - arch.insert("Lattice ECP5 25K", ArchArgs::LFE5U_25F); - arch.insert("Lattice ECP5 45K", ArchArgs::LFE5U_45F); - arch.insert("Lattice ECP5 85K", ArchArgs::LFE5U_85F); + arch.insert("Lattice ECP5 LFE5U-25F", ArchArgs::LFE5U_25F); + arch.insert("Lattice ECP5 LFE5U-45F", ArchArgs::LFE5U_45F); + arch.insert("Lattice ECP5 LFE5U-85F", ArchArgs::LFE5U_85F); + arch.insert("Lattice ECP5 LFE5UM-25F", ArchArgs::LFE5UM_25F); + arch.insert("Lattice ECP5 LFE5UM-45F", ArchArgs::LFE5UM_45F); + arch.insert("Lattice ECP5 LFE5UM-85F", ArchArgs::LFE5UM_85F); + arch.insert("Lattice ECP5 LFE5UM5G-25F", ArchArgs::LFE5UM5G_25F); + arch.insert("Lattice ECP5 LFE5UM5G-45F", ArchArgs::LFE5UM5G_45F); + arch.insert("Lattice ECP5 LFE5UM5G-85F", ArchArgs::LFE5UM5G_85F); bool ok; QString item = QInputDialog::getItem(this, "Select new context", "Chip:", arch.keys(), 0, false, &ok); if (ok && !item.isEmpty()) { @@ -131,6 +146,21 @@ void MainWindow::load_base_config(std::string filename) actionSaveConfig->setEnabled(true); } +void MainWindow::open_lpf() +{ + QString fileName = QFileDialog::getOpenFileName(this, QString("Open LPF"), QString(), QString("*.lpf")); + if (!fileName.isEmpty()) { + std::ifstream in(fileName.toStdString()); + if (ctx->applyLPF(fileName.toStdString(), in)) { + log("Loading LPF successful.\n"); + actionPack->setEnabled(true); + } else { + actionLoadLPF->setEnabled(true); + log("Loading LPF failed.\n"); + } + } +} + void MainWindow::open_base() { QString fileName = QFileDialog::getOpenFileName(this, QString("Open Base Config"), QString(), QString("*.config")); @@ -152,10 +182,19 @@ void MainWindow::save_config() void MainWindow::onDisableActions() { + actionLoadLPF->setEnabled(false); actionLoadBase->setEnabled(false); actionSaveConfig->setEnabled(false); } +void MainWindow::onJsonLoaded() { actionLoadLPF->setEnabled(true); } + void MainWindow::onRouteFinished() { actionLoadBase->setEnabled(true); } +void MainWindow::onProjectLoaded() +{ + if (ctx->settings.find(ctx->id("input/lpf")) != ctx->settings.end()) + actionLoadLPF->setEnabled(false); +} + NEXTPNR_NAMESPACE_END diff --git a/gui/ecp5/mainwindow.h b/gui/ecp5/mainwindow.h index f85c2abc..f67f7a81 100644 --- a/gui/ecp5/mainwindow.h +++ b/gui/ecp5/mainwindow.h @@ -38,15 +38,19 @@ class MainWindow : public BaseMainWindow protected: void onDisableActions() override; + void onJsonLoaded() override; void onRouteFinished() override; + void onProjectLoaded() override; protected Q_SLOTS: virtual void new_proj(); void newContext(Context *ctx); + void open_lpf(); void open_base(); void save_config(); private: + QAction *actionLoadLPF; QAction *actionLoadBase; QAction *actionSaveConfig; diff --git a/gui/ecp5/nextpnr.qrc b/gui/ecp5/nextpnr.qrc index 09f96d74..ca7e5b1a 100644 --- a/gui/ecp5/nextpnr.qrc +++ b/gui/ecp5/nextpnr.qrc @@ -1,5 +1,6 @@ + resources/open_lpf.png resources/open_base.png resources/save_config.png diff --git a/gui/ecp5/resources/open_lpf.png b/gui/ecp5/resources/open_lpf.png new file mode 100644 index 0000000000000000000000000000000000000000..10772fc667b54a46210731228d323af0f9525d2a GIT binary patch literal 1928 zcmV;32Y2|1P)#m?@={EeCmEd^rT<1hqy3{NqrXN!pr5}3!M|d}{kM&OLp9^@WK*u`KxwQrHgs`l zzW;pxq7;$UsCyRf#9OJ~w7>P7M`c}Cok^+6PDVSsml()~bq_byy|DYqfz@=Mp{ z=$-3Upnp()_W74UvNdiL)NzMI8grd@(h&=AkEcc0KYet(!kbYtLh}ZhDl~?nAWYruOgNIM?y(Kblj?hI7C? zvkd#8KfI7%c(lE%Jzcd`#w+7kYn`YP6}ZB?z%&rOuLy@;$;p;a{Q|532|;Rz^-;P6 z;SAT`{y9ZoZlzpRb{q^UK32)c{m#v(J2<#6pK48UW8ntDLV!9`)K3Sg$)o$6a^Kf$ zeF^BweO&-RG!3G`lpvT#h4WCEM(iniw*#=@-cPKBryAk8+vB9O&7eRz3gzH6XY_g{ zDS+eZ3FXR3Ihkm}tPY?y3SkM#w-EEYcx}mh0@!47$C_i|;Vgs`C4xk5ZptOtkm0xg z2zYl=<2>#BP$Ibk`~|oTllpliSb6s+}@F5lDR~Jng?wS4uWzNPTIli z%5gU1fUC%~+RobRwe!HkNo3Rmu$I`kO*W4NDuRRp;SzDNdPE6BHMkkTSfKcRF@@}C zMtKS>IIe@&;GtYaSPBXL9F*h_GM(%YuBriti_{e8?v|PHuZfW_xRDhsmIn9YBLAFTI;I=V6;F@Ac#+_ zt3oIq)pQ=!xu1OR2TNa3bkOkiL{^N8QguKf<%dn%-(ANRm-KDG6~Go0dUg_FPkOP*a6{GA`BnI zEX5m`VjQ72o`SH5yg7pU_FKrGj*v>l@mYEA0OQjYt_=J1X~VWn4s9(0+AzOh^o2n? z4$Rd75G!PwyTKC({KPLlh(_5(BpO3SGqKR^e9Vd?%MMgx0cgkyJ?mULTC(UUqA_bp zdzxBRGdy8@U=b+RYd~8X+PcA%L6>7tdKRUpAesQ=XT(Tj>QSE z^DG`v0Hl8_A_g2w&5yV-AqzkesMLpHWXa~&f}TU9f&x@^05K($5|m1^6(H9>jlzJ{ zC^UjbEddzVvwW|JKv__hS|#Gzs7xnCsk$lyxu!gXGZ4fY5HpPug-D#6l_Zqg2*Jds zmgKtJcf`g8y%MsHp;j?m9F|F7c2x$HhVM{0Sb$VMqv=q zNL-;2qGb?>iGga(V%ggB*JAv99%+_?S5r;V>oB$l;>d|Dwr3xr0iI6LYl6(+X zBUvsI2I=3Lu%eg2DGXs?7`<)%T1W|40K&Tf1cCin$Jz|osn`fArd}cp8I;(>_bZ@849YRoDw?5jDJI7KRr&!rlxy_j2oQ@>Dn7Z58BkaRLD`j%6HKfN z3}SSwc4EqvP3B?~|62yfWEPlT>Wc0H;5r=0Hh7=|5CN-V)hDMHk;EO6_~hkI!Pz7N4ArV|c|>j}0<6{nNTwSi-T$bJzsecYA1wn|MyJm0Q z3E*BM9|Dd6+wa>ie(*62oCdA~`d$DHKqt`j0Dp)pNsI3PCqJ Date: Sat, 3 Nov 2018 10:02:53 +0100 Subject: [PATCH 2/3] Added image generator and regenerate icons --- gui/create_img.sh | 6 ++++++ gui/ecp5/resources/open_base.png | Bin 2022 -> 2175 bytes gui/ecp5/resources/open_lpf.png | Bin 1928 -> 2117 bytes gui/ecp5/resources/save_config.png | Bin 1428 -> 1645 bytes gui/ice40/resources/open_pcf.png | Bin 1984 -> 2139 bytes gui/ice40/resources/save_asc.png | Bin 1384 -> 1509 bytes gui/resources/open_json.png | Bin 2093 -> 2177 bytes 7 files changed, 6 insertions(+) create mode 100755 gui/create_img.sh diff --git a/gui/create_img.sh b/gui/create_img.sh new file mode 100755 index 00000000..1508d023 --- /dev/null +++ b/gui/create_img.sh @@ -0,0 +1,6 @@ +convert -font helvetica -fill red -pointsize 8 -gravity center -draw "text 2,8 'JSON'" resources/open.png resources/open_json.png +convert -font helvetica -fill red -pointsize 8 -gravity center -draw "text 2,8 'PCF'" resources/open.png ice40/resources/open_pcf.png +convert -font helvetica -fill red -pointsize 8 -gravity center -draw "text 2,8 'BASE'" resources/open.png ecp5/resources/open_base.png +convert -font helvetica -fill red -pointsize 8 -gravity center -draw "text 2,8 'LPF'" resources/open.png ecp5/resources/open_lpf.png +convert -font helvetica -fill red -pointsize 8 -gravity center -draw "text 2,8 'ASC'" resources/save.png ice40/resources/save_asc.png +convert -font helvetica -fill red -pointsize 7 -gravity center -draw "text 2,8 'CONFIG'" resources/save.png ecp5/resources/save_config.png \ No newline at end of file diff --git a/gui/ecp5/resources/open_base.png b/gui/ecp5/resources/open_base.png index d58d226cafd28a4074335a10092dccb139f0793a..b60cf25a109b1e2488b211be1e7bb7a7bc01e04f 100644 GIT binary patch delta 2145 zcmV-n2%h)m5C0I5Bsm0UK}|sb0I`n?{9y$E001CkNK#Dz0D2|>0Dy!50Qvv`0D$NK z0Cg|`0P0`>06Lfe02gqax=}olAr*fIbV*G`2jU9@2>~};N+A~j00)CfL_t(o!^M|- zj9hgU$3N%ZJ9lPwXJ==h-EK>_Eu{qtjZi6Qnm%xe2}DDShFAPUNHhkbhWH2n_zy8L zCSn2_G!iu=hN@r)#z&-9txupWty{{Y-L33ycf0S|dEe*n_{W{n(kV(r;_rW-`OUd= zf9G@0`JQvn!2fy4e|_TvlEo!UNCy!R(4b6JpVbDS9~gjqSqhzn&fOU|^9d*AY_n~9 zAc`aWhCl07yyLa8+Eepa>1_I|yz>_po_rGo`lDwe!qhuZwz&B1=H@{sBHLInGk_p736X4n-#!;RMGyG_g2Q z8TCd73o8m)H|U2AWnYv>lb25+J}JGb?kHA}tE|0&+zJa7ppvdDNXsEse@ zmv8AA=y4mS!E}8ZV~l?l*24m?^D;0Gge{T1*f92NR@dMBBQP;&0P3NphD2ou7C80d z4=L63Ov;w3Wf3FEW0h;z55E--`rEF{r@B&{UOtV#>?4Ot(Sv?!cIS0gb@+?ka1*-z zt|78v$5-@h!%{eeLkInQ7ci2MB+NC5VO7k&af0rT})! z-D2xL-PhDad}#o05`r>R&!F*d6Wh7$DPWqL3v8Bwt1=LrE#o)kW~XfY)oFhHPoI}( zBdiClM>W*ffxiJWK)Dq_f%+I)`^EY1u_nA>b8k4`Vw!sm6)8ewVk{J~1k1H>2C^JZ zTVM<6F4O0|;2nPju4-0BD}XU1&Q0_1P@%49pb(r3T%sNoWz2)Oe3*L&MZtet*!Bf)xCJ1N6g&k#dE%&{ z1nSUm^GM%T@*DQzT5YHpETCa%fR^r$g!fHtGcn7=I zUTY2S8p>X~ww^tH@R=&Gy#>H88)ztARay3JwD+U*Y`T-)-VZh7-e{I*l$0tq-Q5N5 z+`5A;xyyff{2#yM(8MXYGKKBh#C{AD5!crS*}TgS4bB&LR5bTQw24shKPosVFF@mNL+%rh#f7^ zWmjk)D6=xX%;vt8{OpYd4vtsY>9(=u3YWF3Q)JUH(=eQPOJ{+F76987oJ@vvdoKiY zsDfZX<8$=}aS6hCG@L<91ywJJ2r;QtOkYoyT)RbYx3GJ>4LgdtV#uPqQz42eF2~Wa zQ8RxHEVTfrQPLfQ;3)XDrgK1}#926ngbQFA2oY$EG@F8A5H%n%Z5d_lN}Jx!3{e=; zo-w#igx81|KO5J83Q%g*KxAm^9)!3GQ8m$>X&})Ygl8eHp$H$L#+XyT7&H9he`mu z51QrhoK5n%rytof zkW|AxN6{WZDk1XtD8w=Bn}Qp2=+%EI_+&3c5pwT1`d|V5SOz|uMTilN3H+GJ8B_BD z%D^%ZyaT}Z&5gY)(qQHg4HJR=d>#%Lkyzp5UC6#Ecyv9wDFacA-1R2hQ$W5u133#s z(c9Y*jp287nD9XrI>5WnVQgAUP3JXQ=K;Mb+wLS4pa$8~iSFrq`@Jt1lmdUEfC&&W z=ud|Lg>SAvP4srZP-5h!&Sb9!abmnPF{4wu2oz~fMehKxEpEuPIS@6ejUaCiZHlTQ z$u5D>bHjjX+9LFVrlrJ51xV5x8V%*O37u&Qu+akGy3We6H|DBgq^YK_|FHD@$GKmt zwq6HBzz@(PC(W4)0WNlO8L)o~*vPxhi|>Dp0|$XqKy)!c8_);jJ|O3i<6~~1!za=BH&5|w*UYDC3HntbYx+4WjbSWWnpw>05UK!I4v+ZEif`vF*iCeGdeIb zD=;!TFfe=O#HIiM03~!qSaf7zbY(hiZ)9m^c>ppnF*q$SI4v+TR52YlIxsUjFfuDJ XGCD9Y3cGw700000NkvXXu0mjfq&(!% delta 2008 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 delta 1913 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 delta 1365 zcmV-b1*-bx3+M`vB!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^Rd1{w<*3E~+4>;M1+^+`lQR9M5smR*QdRTRg6=i@pv8I4VT4T$OJNMYqn z5TThE4*8(?;ERw*TG5vhWDbm$P}qYHK?czW8k$XmQz;T5C4W(bG7=fwCcv+uo54^6h=a@c3@v(|t8|Np)Abr@x|wY4c@Ft%^s?%Zh2|EG_e znws!D57%|^JrB?K@%m zFi=%oz7##wCV#@go@+esI@ZN+0|Rtlyhv+nYq~yb$=jI^bY$q#_bY$>sl5vr@}uN$ zHanjGb=$@zxrNQsabm*uytOS&nSCk_4xk#pcZv+F;~-*JdGN!vDdfXPf3AA>eLYyX zKCt0x_m>A;0LRO9ZQQUZx3GD7TCi2LQ(}dZyiR7bqkoF)+S`+OD$uf^ktHp6P zdk1JvwpKs#U;~OG$uARBOY>_5P#JK7O@YxUoEoC;@9zP%4Q6*M|!LlTrYpabQVPl%`DIIwmR1DQ6&q+}d6QAX+h&ZL;E? zN(X!X{C@@beslyaJTU+jP{&SE!azhr7R1SuC;xRLGDguvT2Tvq3c$p)X~uLbpWbY< zq97TN*S@3G>T-;wSv&BGi5)z%#?dpJ| zQR7iXQb5s0qc9RGfe2v;fheIUp+t;{M5!GITz?1VOsuW|z-U^*&aR967vtf^Nf?FD zXgPquXw+QdwU5@#8`I=#cAtt8I}l0*0AV5l720Ur!6Y`45#o9DKADFS(QP#Hlt^U2 zIg@g+&jb`gBjo@Jq1v{l=-MQ)YO!HS0xAPWH8Oa1Z>CsGJTa9{L13g}|I?(2SV0v{ z5`U9nLN%^BW*`P>$qW=KGGHPJvWuV`KR*~VpjLH>kBr1sOAI3JcuDfvQ)|h}oD^FI zU?dcV1L5lRkZgBso^d;-w~uiRcQSmg8>z3y2>2iDq~`Tk@vdA3pl2|^S;OjIo}*O%1Bs)1i({m%*+HV7%jWSEC2;5ufE9)Qh#-& z7v1p&;~Qr%FB~MC(LiwMFmm(=llONr?S;qaJ#qrib(l4!mhg@VnD{taCM=0xCP5)o z%Y>@ncJ9ON@29r*7QFs`a-Z&tPJ!z&{Lmt?{sr=Rrf%D8 z{WT~UNqtZeKwu<2Dv1PPdpjpO4uA38*#VAs96~!j=Et5q^|e0J>&8*HY6WN3Z{cj; zAV;6yNxSPK5b(W+-sF4gel)y-d1d2I*hM5v~wP{QFYx!yB3aRlzg=&F0 zs>sv{TzhX1`Ivem_RSZR#4iI7gkpI_lQTU^!;wtGF;Z;VlDXbXkKqjgBuu7|-K00000NkvXXu0mjf$Nh%t diff --git a/gui/resources/open_json.png b/gui/resources/open_json.png index 90c07267351ba64f30fd125aecfc0b7826de506f..7352824bd9b5292cc94f2226b37da7461f83fd9f 100644 GIT binary patch delta 2147 zcmV-p2%Pt=5P=bpBsm0UK}|sb0I`n?{9y$E001CkNK#Dz0D2|>0Dy!50Qvv`0D$NK z0Cg|`0P0`>06Lfe02gqax=}olAr*fIbV*G`2jU9@2>~};N+A~j00)IhL_t(o!^M|v zj2%@O$A4#L?%aEK?{4qj-R*X_OJBDI`W9)WBEhzh@B8{F+`(A z8UiH7NFpIIkO-Lp)w{&;A+wSY#d-uN0%sJ=r!%S)EZIyqBjpxgp z`^?OFe)By4=bY!l|9PnY`o#xS7N0B;ZD=5*PMM0lBy~Wp8i0C8gd`vuyjBz>t4pn?v zki6tO^PQ^DTA;JNll9BjQ)($~oMw8n%*sKE%mMo21AJ2DI7_kdv&JiWpFY7LM>xd3 z(b>_3p~g^Oz9*mc(>@D&f%Zl1jJl&sgD6IbcSAy^^H5_?9+n;}O`IYOk{bIWn z7#xyceBs5$&w+m=p+#Pkzf4U`{dtet^VlsrZduZvYsXkarjVgJP~8>{M4x4d=YjFd zrJ^YU4}U2&y!hJt)-Bom7#%C`q+`V$bS%G}j=q~HWT&=lST@)7yVuR0WWhP0$Sfn( zusSl|K7V`Xl1{&F>r8*tCa~5zQ7y`IjCX)(AZm*2rH0{`va;&7XTchf5Tt?FDoU3j zoZ;kKzob-^GbvY990!AnKdW5D{m$vAFW7oRd#WSFsrgd`^8spKNk15*Cb!?g!MAIM|Oc{bADl9^68nJsASPMY^rLR~EUu}gSoST2Z&$NL8hCZ7HWKqj$=q^bi%I4Z391O%8XN@WC>-Cx zTaxA7v;(dp-C=*b8?Q7D0M{p#(F|ZMv2&X&9tqS02?fIQfs556N*Hdy=>Wz9#g9rU zdK)}w1Y%00Ao%dw#-oAe+bw^LWF|+ml#?B@HqXilQ zLHxzKE`;Jy_uEn3TWBA+8{cU`l*RE{5vzG-Q<>-9+RM`i|3r0JNM>;c$9H1K))G}B zx<=aAv0|gMbI0=R#uc^fp}j9wfLodXg0h9W(5MLWfs1tAOy{+`=<51J68Cyio;og7 zTndFeyS9I9V^eN5PyO=`>>E7^*QIcM7ZVs5)oiZzv3`rg+7&hYXqb0TPzQROH2~~C z44tdi(7ol$MRcaIi$a&SK*`3ky4v2qkP zbj+}!uS8E;F+Wq`*qA#5X1)m^yU4*&5q(>~NjiVO7IY141;io}p(Fx{Vh~$JnG%>H zuAZU8U7&SIncnm~>$`jT_3;_@jx4ah5KFr-q3?#?W^R)?;F;?|KCTy0ph+@Y{YKpTql zMjwA1vJ=2u6M$GD-PQ-5Ku}Gb1EOPR(Ksra0b56*K@2L{6aRU{!^nSwb`Iy+rQjLVlSTM^hK3h$Voauq52gBLBaqFt zLpTG$6r!iWmQiAmeN)h%M%}*}8X>$oi9A=WMkRQU>OM z@IxsG0{f}1o;27gltjpy4C=ebplVRxUj-EnkDrE|i&BEzSwP*>fqG&B9xZ_*paprf z1NCYJLBMm6Z?~ZCD-nFrWq3kLiSsJW{eaw*ZS~>`5R1AukKCJ2&V7Sw6J&q)HLQ}%002ovPDHLkV1i^b;~fA1 delta 2080 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 KMNUMnLSTYkuHjq& From 27fcaf50d2d4f4bfbb010bc842de4bea1cb402e1 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 3 Nov 2018 10:03:27 +0100 Subject: [PATCH 3/3] Fix lpf button action --- gui/ecp5/mainwindow.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/gui/ecp5/mainwindow.cc b/gui/ecp5/mainwindow.cc index aa2911ea..fe2f9e57 100644 --- a/gui/ecp5/mainwindow.cc +++ b/gui/ecp5/mainwindow.cc @@ -154,6 +154,7 @@ void MainWindow::open_lpf() if (ctx->applyLPF(fileName.toStdString(), in)) { log("Loading LPF successful.\n"); actionPack->setEnabled(true); + actionLoadLPF->setEnabled(false); } else { actionLoadLPF->setEnabled(true); log("Loading LPF failed.\n");