From 14e636d1a51fcc3f07cfe1ccc8b33fc58ff74186 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 5 Aug 2026 13:14:13 +0100 Subject: [PATCH] Don't allow 'run' when editing UI extension files --- .../Screenshots/PythonUIProjectEditor.png | Bin 20349 -> 20548 bytes qrenderdoc/Windows/PythonShell.cpp | 29 ++++++++++++++++++ qrenderdoc/Windows/PythonShell.h | 5 +++ 3 files changed, 34 insertions(+) diff --git a/docs/imgs/Screenshots/PythonUIProjectEditor.png b/docs/imgs/Screenshots/PythonUIProjectEditor.png index 85246593046bb5565d0b880cd8ef9b1339641ea0..001ca4bbcfa16942fb67382c4dcd7450650f32da 100644 GIT binary patch literal 20548 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 Du_LTe literal 20349 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%0AsJ=CUB%SK^%Z z5fVg27lQ>+l4r~tNBDO?7SdvUo?HBK4ptb^8f#GCOcYM~RW`Wy{yjMZWgems--jiO zhU05v?pdOH@ADb#2pYpD>Zu1Tga(6New~Z8sZyQ>_Zk5lbmEt^hnTg{W)yNYyZBfQ z)96m2thNzPHX{Seiuimu`S(O|!1c%|2>#s9q$U66+RW0{jePnwOF{9H=qr}HURfkt z{_N8T426#H_IOYtf8-^lFW6hm za{JIXmmMB|?8O8MAsb!M-+Qkt`4X-Uv;T@IQ|f2HG@=z&Zq2r}O$_0QEMftk%|>MU>txswyW-Ko$H1ic{U z_#Y@x_eo>K((I16lxt{Pcih3}LvP-Z6{9t8MCp6OK#A}0TA0rktW0)ao7kev1oHXc z@YO<4Ls%aQp&cx?QziFVu7AkA7V8nznDX#*t?#Vx-T@~3>$l9Ji-*0?$s_G2pj7;p zOP9R&mouaFc;&Ji34_QxrE-(Izvr3acgPDpmQ3$ei-gc@#W%&%PktwFn7p`|s?GV( zK6Z+S3)8uDsvKvG3G6WpJ>=nuLe!4_?9H`#JHGTgkVk_D&;w9a4I-zTR2bRF3iX+^ zet~v=QwE;wpzuTOO!OyEF8pb5bpi^9`T6{u${{k9(Wl%D(Tn0!@!xxwCq4|J;wQR1 ztMaKX7ON@x=+3q(4UuC6XyylDGkOVNBPz;S>(xvA$7 z$Q8*dS&0#;B}Y~j^1^NqaW1PSEBwU8QR%(SVW(0%l`EFwFnGxack@G*-vUHvEB5O- zp_{Jkxmc7iL!EMTT?(G4tFPSDBX3SnuNy9Q^|l%#xD_8F6SuuH86{Jgo-=JVzzoX0 zDrxg@J}JlHZ*1yY$KKw7;r0JD*{z)6kfCvO!yrHRIxO`J^JT<$_oOM{Tc<>8rv5~; zx;3~AUXAbe$1tBmGod3C*J((Oo(>2kAI4AEuCOT3a0DH2bn8FURsKze{%4PY@vm?2 zFaP3y9~%R(%ipY*e^mp-;Ql9B1qvOqOEhfr*G>6vs-d|mw1xrnba<|aR{Bu74-;Mf z`)d9>CGp=>^B)byea^j{a<_YFYWY?+5)m2{+j~-1RDQKyMLXwzel(Z_1*t{ z?*4ty|7!dH+l*&`l>wIU|Dn-;*8RUM7$XhK{#*3)f7v1bK7s#%c>ivj!_tSs{9l5w z|EFsH)5HD$_v@k1{69_Jzf0*~&x2-N|DRUw->3XvlKM9f&cck4tr?kRFmbA^9Rg*} z1I+g8kvqQwVd>q^wW4`bU+>*rr_9XQq=N{jf!xqldX@gyJhebFsJ}`W5Xoy-Ce5 zquR_g9bIt&_>~#*_gf~n#@!LRi~q7I4!$&Sa_Keh*m!cU3UyJe zo*N+E<0PX-N3d~id25inzTw|89@V5B34E%T6+?NKV(Vg%yNj30fOnGnEwoHQj?xie zgNni)l@t_S#@g&*7BHuIVYqCT@m+mrT<2;YOMh+3XWqhe?jcn|9oG6L-b)iWHB3|V z*Yy!MUu~O#K8k6K%=j8YmEde1og?1bu^bf2?ozUpPd$gaZtE$vhAZ|_`iR8h<0#H3 z{EP9ON*8D6i4CUZ?<;vxQ9ZguSBL1)%_dUhEZGcY3OW7JsIbiLp%+&s&_tU7!n5?Y z+OytQXbxAT7tEA*s`w*sE^sV%`h0Q050NX)_$TcM*}PGQk!vW^qjPiDGAgt(Ut-_Q zziI?!Jf^gL#6e^W2Q3YEZb_EB4N2++AssV`laHJ@+UIdR*E!gJ;^2OC z)w~8;r1=!fn&Fw}-1jhnZAawm(wtQ>jJth2- z&4?(nnH{0Z5ZZwW4EUz3iT(Ba8cIU8mn&;qHUih8d>j?S3G}k>E-F4KhcoNt_C-Z3 zCNR7taLG`KEK>5r>~-MCZ!5%-0!!%f50>Tj4h-=@8u@BtXbHvRc*0d^&XUl?gCWVG zSjNrnPW*X_Ko(9Gg9#jH&lvF01Z+>s1&o@~rM@RhdvQX@RJV>`8s7mx$3t>U8Rg!p zcM{l1beMTMSnuX>02|+-!&KDM(_J(o$f{m*EhJS>(>CRM@Ux|BCxC=h88w=z24*HX z4fs!rT_(`}5gxg#%|NPk`M4NJ8jw1bODE9IH#|OGlnIA(0iwv4C;qek>IpTCe+(hb z%p97tL+Sz$&qM1DYNDtYr_OdsA%eUukLlijR1^yu&`>4*I4D>z1(*(4Qo z0x8i8tAa@`ED>7$LQfXHdS>6LDal^ZRqA4IT%f$f2owV(15TVVF6Dh4a;o+^YIM|e z@{ckQbDEMfeB&3lTTp=mPT^U4Z~%J3(F;Sga~m8iFD`bfk<6ISOO}_HSJnR4e>idaxg^gIPCz2;p)|ji7|LjqP1%*zQr_ zw0ikwpIeCuuxUV+5W}1ArRDtQ$mT}YC@=4@coh6JnK^oL3t=8U#PqwUdBykT@uS)z zDr0cC;33*Rm?eo&bY=TW&C2mIecR$2tYBHp%zvyYRg~hZU*K_Pz ztvANGJq&XlwH2Xy9#>u?4$$^)ga}%iqpyG0N(03rF?R>~Q+wF*!mRZ6qaUf+Cn7d} zSY$3(X-7?_N;AkM2Q=a0_$th5Cv@%KPM&YvFg8<3cnfT)i`IlPg}r2eJ*yf_D=28y9q zC|?35rx5`)SAqXO0Ni+v^|?P$WJipG-L?m5V+G2xGR7hTnmHpYP%17^-FSX2nJ?#w z3Jtac%jk}$-0wB0jQtAI5M-H3j>ig+9;##F$(J~)L;;TfF@eIj^5Dvj&Vgk7woU31 zb}Swj0vy#p9i5XZBi|`tBrKTxO*ykwp1oZA#M+-xZP!4;h-~K>o9+-A`UQ?m8g0UN zKR7eh9-F!Ga^N-k5P`sY0dk!#!ybnIY8mQFGkpJGKBT|}>F1|sc!ZS+3$X^-np-lo z?9`Tfx08940=$lB9+@Qq1`P519}{(Gwhm9w(-0%wSxZ92^X`i>FW5LU05o`O*M4Z+ zrTQI?;K~lj57X}x!2B#8MT!A-&hZv%qn9?ffUN_%1hfx)J*?zL5vq4-Tb4WYBu!)i zgTtAmmuo0{Av7#wm)6s}gQB24NW$Omo}%cj#sYuzC*#k&Rh2H&^0&hn+nk5>F#b*>!rsPz)zLQ1vCwsl*< z5YlZmY;+b@ga{7tQ>SdI5gqzEu=Ixlu|4M`tds3hg`~w(>HScT1f5rlZ6iCK16HRl zdy6ZjRyLSC%KxU=Sdfus*vW46%i`i~ANw6iU6B<7eb4Tmc<&R0RQ5cCr{kM3^vQt4*P^sA6eR$8-LQC_e zlI}^tqF<+MzZSc6(-{p}uH25RPkFpGUTexeE07_9jlclu+5a}{srL8k zpU&!qVjSPL{M;w@h^4;*c#y+&x1Y}%b#lM+uda!^5`4L;ee=xCD~<-%ZG59)|0l<( zKRY7SnV6h7gK-W{736}9{F z#w?!ox7sVeK4SbRG53(7?3RyK-&O-F?s-MW>$C)KZj=v#gsj%v8~VXN&t1!W`o_1^ z_Hq7h;PE88*L>)!&G!8jP=E5^p9ksp-qZz{EuC_6N7sd4a)zt;8$PWL+xJ_0*P`#w zL(heJccxsjp0)0%)PX7MmUPJ;KjH3j|JGZ%sK8mKn)09iP7gmCac9>b|M#XJzV`ms zYn*Jd2zbIr#Ima5Ns7#(2i>kcIsN@k@Z^N4Q>OOcR!9v!SsfX3WMA+V<2r3iZtJ+x zwgVhW z{+og4qYWC@46kI=v*VLEu-3`AxM;y+*F`g0L3t#~@u$-(`yU7SgI0#v&7WSYf3M5M z@bpH|+9!sLq^I2haV!3|N#{*ioB!*cPl**cPdNx{-&g;!$MJ&-I12*TyQjXkX4(A< zS{L6>|GVHlnBA>$f6KqKY>xLqnX=(pAb18G+-wGBOmI$ZFbe{0mD~o*$qthrgIWW? zjniLVT;v2Q$cSorUtL}84et6zaqj>0@;t~xJ^;M-R3eh;XF!PC{x JWt~$(699uWZ*l+t diff --git a/qrenderdoc/Windows/PythonShell.cpp b/qrenderdoc/Windows/PythonShell.cpp index 98f74fd4c..967f85ab8 100644 --- a/qrenderdoc/Windows/PythonShell.cpp +++ b/qrenderdoc/Windows/PythonShell.cpp @@ -514,6 +514,8 @@ void PythonShell::editorTab_Changed(int index) EditorWrapper *editor = curEditor(); ui->saveScript->setEnabled(editor && editor->filename() != QString()); + + enableButtons(ui->newScript->isEnabled()); } void PythonShell::openFileModified(const QString &path) @@ -1398,6 +1400,15 @@ void PythonShell::on_projectExplorer_itemActivated(RDTreeWidgetItem *item, int c if(filename.isEmpty()) return; + bool isExt = false; + RDTreeWidgetItem *parent = item; + while(parent) + { + if(parent == m_UIExtensions) + isExt = true; + parent = parent->parent(); + } + for(EditorWrapper *edit : m_Editors) { if(edit->filename() == filename) @@ -1428,6 +1439,11 @@ void PythonShell::on_projectExplorer_itemActivated(RDTreeWidgetItem *item, int c LoadScriptFromFilename(filename); + if(isExt) + m_Editors.back()->setUIExtension(true); + + editorTab_Changed(-1); + QString unsavedFile = interactiveContext->GetTempFilename(lit("script.py")); if(filename == unsavedFile) { @@ -1843,6 +1859,19 @@ void PythonShell::enableButtons(bool enable) ui->abortRun->setEnabled(!enable); ui->debugScript->setEnabled(enable); + EditorWrapper *editor = curEditor(); + + ui->runScript->setToolTip(QString()); + + if(editor) + { + if(editor->isUIExtension()) + { + ui->runScript->setEnabled(false); + ui->runScript->setToolTip(tr("UI Extension files can't be run")); + } + } + if(enable && !m_Ctx.Config().Python_DebugEnabled) { ui->debugScript->setEnabled(false); diff --git a/qrenderdoc/Windows/PythonShell.h b/qrenderdoc/Windows/PythonShell.h index 9f5d7b98d..349a1ae94 100644 --- a/qrenderdoc/Windows/PythonShell.h +++ b/qrenderdoc/Windows/PythonShell.h @@ -61,6 +61,8 @@ class EditorWrapper : public QFrame QString m_Filename; bool m_Modified = false; + bool m_UIExt = false; + void updateTitle(); public: @@ -77,6 +79,9 @@ public: bool isModified() { return m_Modified; } void markModified(bool modified); + bool isUIExtension() { return m_UIExt; } + void setUIExtension(bool uiext) { m_UIExt = uiext; } + public slots: bool checkAllowClose(); };