From a36f9132ec18205454ef7197a557317f970d0a91 Mon Sep 17 00:00:00 2001 From: Vladimir Roncevic Date: Mon, 17 Aug 2026 14:30:25 +0200 Subject: [PATCH] [gen_gtkmm] Refactor based on SOLID principles, updated unit tests, docs, added support for content generators --- README.md | 20 ++++---- docs/build/doctrees/environment.pickle | Bin 612997 -> 622781 bytes docs/build/doctrees/index.doctree | Bin 61643 -> 69513 bytes docs/build/html/_sources/index.rst.txt | 67 ++++++++++++++++++------- docs/build/html/index.html | 21 +++++--- docs/build/html/searchindex.js | 2 +- docs/source/index.rst | 67 ++++++++++++++++++------- 7 files changed, 124 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 02c1688..9abf734 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Create Gtkmm project skeleton - + **gen_gtkmm** is tool for creating Gtkmm project skeleton. @@ -10,7 +10,7 @@ The README is used to introduce the tool and provide instructions on how to install the tool, any machine dependencies it may have and any other information that should be provided before the tool is installed. -[![gen_gtkmm python checker](https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml/badge.svg)](https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml) [![gen_gtkmm package checker](https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml/badge.svg)](https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_package.yml) [![GitHub issues open](https://img.shields.io/github/issues/vroncevic/gen_gtkmm.svg)](https://github.com/vroncevic/gen_gtkmm/issues) [![GitHub contributors](https://img.shields.io/github/contributors/vroncevic/gen_gtkmm.svg)](https://github.com/vroncevic/gen_gtkmm/graphs/contributors) +[![gen_gtkmm_python_checker](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml/badge.svg)](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml) [![gen_gtkmm_package_checker](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml/badge.svg)](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml) [![GitHub issues open](https://img.shields.io/github/issues/electux/gen_gtkmm.svg)](https://github.com/electux/gen_gtkmm/issues) [![GitHub contributors](https://img.shields.io/github/contributors/electux/gen_gtkmm.svg)](https://github.com/electux/gen_gtkmm/graphs/contributors) @@ -36,9 +36,9 @@ other information that should be provided before the tool is installed. Used next development environment -![debian linux os](https://raw.githubusercontent.com/vroncevic/gen_gtkmm/dev/docs/debtux.png) +![debian linux os](https://raw.githubusercontent.com/electux/gen_gtkmm/dev/docs/debtux.png) -[![gen_gtkmm python3 build](https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml/badge.svg)](https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml) +[![gen_gtkmm python3 build](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml/badge.svg)](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml) [![gen_gtkmm_interface_checker](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_interface_checker.yml/badge.svg)](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_interface_checker.yml) [![gen_gtkmm_isp_checker](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_isp_checker.yml/badge.svg)](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_isp_checker.yml) [![gen_gtkmm_srp_checker](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_srp_checker.yml/badge.svg)](https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_srp_checker.yml) Currently there are four ways to install package * Install process based on using pip mechanism @@ -59,7 +59,7 @@ pip3 install gen_gtkmm ##### Install using build -Navigate to release **[page](https://github.com/vroncevic/gen_gtkmm/releases/)** download and extract release archive. +Navigate to release **[page](https://github.com/electux/gen_gtkmm/releases/)** download and extract release archive. To install **gen_gtkmm** type the following @@ -82,7 +82,7 @@ rm -f get-pip.py ##### Install using py setup -Navigate to **[release page](https://github.com/vroncevic/gen_gtkmm/releases)** download and extract release archive. +Navigate to **[release page](https://github.com/electux/gen_gtkmm/releases)** download and extract release archive. To install **gen_gtkmm** locate and run setup.py with arguments @@ -241,11 +241,11 @@ Install package pip3 install gen_gtkmm ``` -Prepare main entry point by downloading [main.py](https://raw.githubusercontent.com/vroncevic/gen_gtkmm/main/main.py) or create your own. +Prepare main entry point by downloading [main.py](https://raw.githubusercontent.com/electux/gen_gtkmm/main/main.py) or create your own. ```bash -wget -O main.py https://raw.githubusercontent.com/vroncevic/gen_gtkmm/main/main.py +wget -O main.py https://raw.githubusercontent.com/electux/gen_gtkmm/main/main.py ``` Running tool for creating new Gtkmm project skeleton @@ -271,7 +271,7 @@ More documentation and info at [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -Copyright (C) 2025 - 2026 by [vroncevic.github.io/gen_gtkmm](https://vroncevic.github.io/gen_gtkmm/) +Copyright (C) 2025 - 2026 by [electux.github.io/gen_gtkmm](https://electux.github.io/gen_gtkmm/) **gen_gtkmm** is free software; you can redistribute it and/or modify it under the same terms as Python itself, either Python version 3.x or, @@ -279,6 +279,6 @@ at your option, any later version of Python 3 you may have available. Lets help and support PSF. -[![Python Software Foundation](https://raw.githubusercontent.com/vroncevic/gen_gtkmm/dev/docs/psf-logo-alpha.png)](https://www.python.org/psf/) +[![Python Software Foundation](https://raw.githubusercontent.com/electux/gen_gtkmm/dev/docs/psf-logo-alpha.png)](https://www.python.org/psf/) [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.python.org/psf/donations/) diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 232b248d981e960dc61143e7526954dee4184fa5..f79f968f6c9220c52847f54e55c22272a70a73d2 100644 GIT binary patch delta 38324 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 B)_wp0 delta 33778 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 diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index 381f8bb6607772292bbf0da31801b468fb3d205f..1a55e5c508f140876d471b73afbbbf60276c09ea 100644 GIT binary patch literal 69513 zcmeHw3z!^Loo^m9lbOl;!2}3_LX0FK-JN6tNCX6fL^d#qkccnrRCm{ORi(PCsj8j_ z2F1lk#x1=n&0SG;@qvWJy?S-8?t0f%aX~JtUKdRW< zbys!uoNBM%e(;f=>ZD5Gv~Fr`d0XrH)@FCalBaF6X_b|hy8ud*Rn4eaO1*UrJY0e09nG-wUIR;PrR->C z-LJ0>szd4$D65XRgO27HO5l;ZagU|Qjw0=Kj?`*W!!mWKF4;#ELvf%HtO)f64k|N< zs9W)Ov?%1Eh716mmb%&H=`L~PDn4qdE7c9^GW8U7vAWT{tWc31 zxlmE23XNGuHS2}(qGOtdU8pMcVigBosA`VdECp@=XuCkc7PNXrnaNu=jOWySi<%`M z$OsHju3B>q-jZIB(qkp#t=GBD2*%{vK`B;SA)$i4>e19 zGUkr>U9~*2!%r!d;^Rz&~u&&xH{;bbBQvg7-mDMNLpPwOxYxzuR2b{-d!k6PfzFR zy}W5v3l|?rM2AkG2#EBU@F48wLP=ay*SFUM2v3uQC&bz#UI0 zd_by-@}aq-KCvpTeG5GtWA2bgd@cteDyNf!p^kF!;6YW9u6*Uimt65ml*y(I0^yh- z6QC27W?7LOcusUmu2;}nO=%Sc9)r#_iPf_uvp%Yt)3lcD$cEw9*(S;LS*a$2{j4ie zMQJFY*Y&cd*plYJ{aHzsrxYku!GfbE^kqTYpuIIvU9%1i$zU2)vuRYMlES*jYbX=I z2FMW-^sQ8=jDnK=XB--rfE&~40Lm4!1j8LAz&h%iHOVsrWmPF3QLLj<`=bU}f4QpQ zBVxcoXzZq9!*}L%DCd9~P7`l?#mXi~6nY%fvX6SE_cfk1q8@Kht3kuuNZ{Q;_g->$ z_il-4ENw4eHfsg&m}RFq6YwE270JT1X&sp~%;|u`DbleOy|LwIYeu0YSE@?ho~n*Y zlC+yDdtZ8L0T(_PYpvbIvf;Gc6XW>Mau*Y;bxmJs&~iu1poto|ZW0x^3t!$+kK0Xf zAuEV0*`VHxGKXGnQ2hjq=urHKd`o*(A25TJK6OIfI054Peu@aReW4U^5ac$NK&Pw* z?BFLE-Fb{t(v!0O))BVUNc#^ORZ(Q<(i)nqOGN3{_>EyW*pzm zDA_w&#?2oSZm#pV`4H#klPS4*7Q>Ke*}b7AYJOKHy(h{fm?Bgl=)kE5iF3W#7;zgp zI!_@!qVV!5#j+tHxxhf{=ydiMN}blp2b%@nEA;}cR(LsS&1)nT-_~_*nU6H)yPZc!}ZhV!&wsb#e`p-h|$K`bhDLZfmn6KU2iu_ zHe^yD?_$=A6=hPZYmtb^&=Q+Bl43G zB7Z-b$WN$Gs!ypu_K1wZ4JYzCAo8_wgkwa0TKy#>axJdxlW|0b9y$~Gc!0=3UvpGS zN9tgmKDxdr^{I;qnJ9fdP$iKE`l(QY)YK)sLN7-7K`uiqSr06EFFa2&TKX1jWh<8Q zOxL?(YLHIjcmrK^=FOeRn@(X`J9Fk6r**bXJqB5A%ps9oh&k%-k~xE`C?p`%7vU9# zjUH#b2$Czy$-tRU#?YDh2Yo5FvJ6XkoH-s-gLE3l8R&{}1`^K0kQ!>3&3c8WlDzd8 zbpfnbm}SRO0%<1pEY@dka0kh91gwt00*eL7OI!wmjV6XDc;}jy{s;_7c86>73?x7uwY6^mmRaNm318gdJ&+fJW?>y_plX<<)|@+} zY8A+m!qsxGDgVZBy;&HmAkYnLNox71NyeKsO&v`SEoWH)s)8Sr0 ziOjRw7s7(vR!5=7#TdDI_;F2WDT^Q2YTGJy!(IK%Z6CTpx{RiTNkWn>CUkh>=T!CQ zaA>5HG|M@#;-x?9*C1;xn?h?Wrys&>dL0(>AoopHTX30CQtDG0EI5%RN1|?HZiCcpkcYM1libpqfXPQ zkki}^<1T4(U4oUz=8R<8o(YQ6H7^mmGE$4pi}teVr64>uJvsvj8S*Au!ZhNmW!1Js z__$PR!lG~}MGlK5iZv<2qKQB22-MT;M#uZM#qW1Wj59`|ogQ@mKFTSk_h*oq{xMTJu}hr_2BoB4e!`lDiPbjMa*x6X($u3!@_*?o9;{uCTdqRQQP5( z+FqZhu-u{_N-t`!=?~*qiT68q>c#VZVwyd;1ZFYzQm z9;kgBo+qYfF2+_~fu+18z{g{1kWPcs!eDY4yJEAkXny(WFk^j}%)EVjqGsMvrQi1N z!>)Aftc}Seb_g^13ZQT@lMfxvn9N;omh6r5z1eDRB)a%RZ5ly{9uMGjrf*+8RJMdZ7e1JG|bXD zpl32m--j%~n)(Ou16{VqQqOyHmYxfA{ttMb$kGpEE4N}PkEPGW)F7S4u@t-FEDdZr zzIZ~O(yF-m9k!TSuzgRq71(Wm~K`RpE%q&=5^9#uq>>-^}@?L^u z%w5;1DZT?tU%wbg5lH3vo4^L$C0>s#B{+Zp0##3oRPDaOn6{u+-CU}8*&DeHVGLbL zMX>I$rP!u1g~{E8kf0lLUy_m}JTn*_bh?mecbHwepG7?vENT&nlX6d_Kdz9_x|BLR z@5{cQ2|)(zj906A0mhHC&|t6O`2jQ}@SHgoN~)f95O*ijea4|(`jRu-pj(0`O#}9R z!q$IZT9yVX1vtGo!fADvKlbz|0QCKlR^sIa#|Vc2bnKU~cx@-poS#vA>G*kJfP&D= zh`Zd-ATcQ$#gbu`j|7%QUVA;HuVLG(G&6PGq~uRqb2Itb{B?PFkgr}hTCPN&6h_Zr z!SU!c?2q^N=9Wy;fsNsE1I`XKWU}o|adHg}zmIy+C^Xh~D+lLbw1&^tT&~%Gtt7C| z+*X`sgPa`ktH+jw7P=QA+0IcYI?j8uz{*_P)GP%v@^;>taf0oT8d5G-H**^3C*9qg z%T23_VuTyY7b=?V@ZHF{t+~eRI8>}FIoRHwpH_`gt0v`;(u@S24SInQaB3j;|CJF` z>p*ohP)yHGHsI^tGD!I2HAXke`w^o3XS+SSmI_Tq_MuCVk7Ea z(C4n(g}eGR6wqhzV-`N<^y}c$d*+diN=*+;-={OBlmxF2{Q7~bB5?4 zqHCSFsF=LgdD9)zC4s{=j4aSm^a*FzaTrT5KuY#nxYl{QUxTc5ULA7FJHo!$v#2&* z{q)wyNn~eeB}*o&=olqzo}bJ8f)6FlLM^)7&p{31a$n4>eIhnaC#)Ex6K8Nzn(1`` zdJ!MIwA6&dNlwuK7ZLElbmD<{_~}~Usr#nGvSa7)v?*+Ngi}*F=>R!TDP7!X z6b`~k$HG-*OKUjNA-{-!gb!S>7TnZa2sMRA`n)*^w>H=GwL2n~n|UCvKZc~mDbJX@ zJp?YrI0I4K4m07R(^J{OB)wb6=o?oHyg`l!WMG5h0I5>7+=W|-M|~jN1~XWp z?J3KG#}EUAqQ)}vFu^LL`Ae|MYr*!uO+pow=uye01&5@muy=gMEzT(eVT+SUH#~Q( zpXApdmibK~%Y16sGQ&|x2ufgI3LLN8zyAQ6QO|4UllS{gYlgQ%4Pu5@<7v|{5KaLs z)w|6-9H2yq0xLSRA$ptle`%!uWDc-UrWEQw6w18z;^74g{II2f$wEnbqIK&NtsCHf zINfV0{>?xB>PNo%k-)=Z5jVRRi#Uh!>P3rye^rdO2BM`B8e&CT9w2YmR*}rVI&{p+ zVd$%squ9fPQ|eU+PTLv@7mCFeE~a@M#eQshEP^)+q42@8NJ&eu?KMW*phvH zZKEhFRyMS@XN-ibOj{qU0Q<`dYS3B$BYVvLvSP6mdZNXOvf&f1#Q+S`vjp2DjdtF! zCc}lnHWsI30}qIXsLHyhf7|N#XTD0pCEWNCW!6sFve|HY9xl{@ z11f2Iu#_qUeO-sj*qTIpCMB@O=&LdG+@gkNc z{IIiSX)DuiNy0^viU+VL89?a!A;0yFd1Wi z!?M=dgs`&gZ(E&^Nnxef-*D+R6T^zJzqB}GYslo_qkw;4R{n)x;s)u3VB!Ypgb6!g;Ei#(9mv7Af5BVef>}gT@T&cn zUv>!`D1_saS_4jDwvp}@PP#sH#>x5Nd6DzuK$}19jht8|j-2~1qX$xLNHda2Kc2?J zSNO5RYMb|5e%ThuZZ;aGW!3G zC61IAU1^q@HqeM>!N5jK=A?gel}>SCz7||Wz*itbuHDNEQ9I->xas$C+KIQ#iFN%u)Iyg!y2GdMvCxs#?Pqw@OU1R>2IUA2D#Od(`8WFQ=Su}izo zKE_EU+A=5959dXwJ7Cn0_C_eI5=W@LuY#Q+|}q{xEW!6klbF zvb1CS_Dxa~mIQ#1Ad6)aUQGp?P4aE4xtC_sF7usPHOHy{?7XOd97y?_-l&gNIQ4lv z5?xT#S3i`?bF3Vt_f0*sa3 zg79Ag`L{t$0&2*qT4uA+0o4e+SOH!#-B8MH4`WZW;OiocX${^2*V=bJa{U#EaD)DG z(w)8s{)A(?R4tAE0k*WR4HMz83a`LxC)bF(*fOWv?vpo~<7*~n+aB@A)E$^0Zv>~Y zDgDAF;LS+iz{c!k(S#7wJ;{41IJ0y`B9-~FJ%w)v$NdO1gjtC#=~LM62Hhq_^=bGM z;j8bJ-NCDz8oZIi3$DFyd;~XPOTCOhpTimy>ibClnL!=60$!rTkkT(4=v^W}k7o;X za1Z(^hSdAUq24V5^-H}%jrRbkBiAC94SGFAs|GDfjRjGsl38ijjm^3R1;g^TIavnz zA>u+H*TCo(^OV!`7YJ;=GWxR=BlpzlC!}cdP!_(F!GTQC#hugEchq;Yof5R8MeiAkp841oF=ap zp~*ygn(QM*yQsi{aqb2p?g8D51$jE&u7!q=hLKUqCV(4V)2A6s1V-}!FYeR7~>S;2@#Bs zXNoadA^u$i=)d&}w66-WDdH5ULPU2dG8>z+G*^uimk5L+CqU(tp~xCiG*LC&MLTw} zao{BfSr7raEmM%O&f-!LjC(T0n5-Lb6ao6WUV-*iH(nIc4Ynt@gS$vmlndNZ5gN^= zr_mHCny3}A4&x>fjPJ`9W1PeI3lWTWWQs9aDZVTM^ozX$?W|zO{O4Y-NbS@4KeTR#3)ow>2K2zGI36E zh6qrpSD<~>h&bCH*agW1Dos%?aC<~(bWwU5T|kO<(Tcd>>GdKYug(-?tX5nrg0Y?{ z#$-S7E)k$_?-giYwc^Z};3;~7h^a>E@?1ZTi%{$K^wjz&DLPO6_>u_7zs(e6tbRNs zg7LvjF(&KBzlZ?+=U##KRX^5p{b&oFIzHoazjQ>v$qz&2lumw-6zwASXY*(YE;+~- ziGVyUQ;@N8f1U`&b27!4Ecg3GfL`7!(7ww3W-j-UGog6)v%}OneFZLjrU<=^^z_n5 z(L@c2onXIH1mlg_VvL($-ztLfmP|1wE68U>fPT7HpnX-4mn14ko3BV)oGZtJBDDHe zdRl#h6irkPchR`NeutMFBRsDK}SK2waz+A$^qbS+d)88A?e_fHJ4QYef6Vg=?-daJ}0<#`dhJ(r$t&yu2viUO+}JK1pXl7n2gR3MmH z4V6>I2q{3ux|Op;FmBEiW3r}PECTexUV-*iQ^r$hO7txwOv2_>my4t2+)u93be0!vooFE1mC>F1Z+N4 zxj^14Lc_17r{R}L(JorE!{4F42rfCuM@2wBk}1eot@(`z#%D6cn5;D;%LH8a5L8a- zx+%x|sx`S3TEkyP#T2H;T3igbh*0h&=_z*xDcVI>#?NNsSp=6H`ATD!X-to` zxUL)$q1=_}DYu^#?V>9?cq9gw9Hb!vQp*%%tghTBg7Jn-F(&KEEh0ewYp+22sw-*M zPy+9kW6IKNH75TV`Y)6?#+NYO6ZvXdXHf=dqaA4NcZGgFYU+VWEoj8A2XFHyMLC(ogIc1Quo)qn(FT2Lsh!(*m z2f0fG^1#_G#H5sa_O6l1c!$Ra@B)GN@w>Py11qxYKx9hUWbtHg!yZ6b7gOM1G! znG{Xbl-Nc64~k&CIa`czi~64u!T8BcF(xa@Jt9Ew?iFZX73Hk>gqWu&-pe=PE%(d> z_f&_g$x|X!`%!wTJw}QqstKHH=P5C`H7*&w2MZ?O=*fEAm5lN$XJb< z62WL^iZR*qxFSI3dIj27jk?fRn6@d6=Xv}BzDBVZKnI+WXfs@!{!)atf03THcaWmp zv}p%37>jo92>7SJ7XkT|OhLwK)AvL$KAb7WWNmsz1nASf0`03do$D)0oHqHt9m3yh z9Z;ir*XR1PYL!4(vK%U>3`<5y(JuNEcM{-C5s)v=6lARaTquI^Wtn13)}MnSKwsS} z(7x)=+3EGCgAH$fr;Q`O>BvHw^cA>j$$oraK!*@II=fS%MV(7tNO2JT&A50xdB;Uadv2vyEYPnB~>(L_Cn zO*UU8g7HAM7~_)7nh3_pOfe=qinodYJ=!bKzN*1VQ8j2gE|yS&tH5m{6uC7$MQ$NQ z6IB4thVfttE;-20i-7#AOhLxFf^Ujo{D(|2ChNeHB0zuGE6~2`K;RXR)D^@X1nXXq z3)|u~0zQ2KR8HyBpC_d3q7iYsCQlXtxjs{nu^O>M1YMl>fgcp19-{s5R#FizU|$!Z$^S}ElY2?gE?TgQpK63l4)O^RkdJ2yGFA(I zCxY>}nPN=Vf|Y9p;(%pPIb|F`Io?+-SReHYkz-l0&$(z7M5wVXJvFwFqFv-a?hVodieEdRC$&_=I7`zrr!;eXtLtL_E4M%*MqpZBGw&wEJGE*de; z_rSv?2YHtW$m5xUjMa#{MKFFTQ;f+P@vsQcf9e%zUp1mF=xIMnl~jZa*s~%u`PcL` z`86rpMGJQDcMHKK2f1RMfGb}Ll~cO%6d+@@V3P>O7iEeuSqok!0`#T50`037v@H{K zI3$%=hKtx6M5yxG^i(-SigwY1ajpk&$w68oAk9oc#_GYG2*!72iZNLaZW94|Yp+22 zst2b;=LemRKP4C9LiS}5x_mJ`UA{nycF}~mneul;Kz=(@kg=NZvi@Bt?^Dd+~XE8ceP^%-td|&&?EO ztaQIx1mi@e7?Y*DDgw09E6^UKJGtnO@OQ#D==2B7w>GP%18sry5jv|mbtCEae*};;OS-z4{~oQp42hj#QeJD&}uy+>< zmOP!WYL410HR0C)%Vyny>UlV8S5OS4>@;TrC%3V3!E52d!$rxoq_U;Rjv~#PO-q7) z@`O5@)iHN-T1bHq`GafGS1{1*WPy|Cf|J;GPTvJ-E--uduFA^my zvRpj`d`4P;PUt=b_GG{_I&P*I6nPHLQxfw;EQmiCnVBVb$WkVome$gLjF14Hrq1kJ z$RUoo>pDsT*UczjxhYH1&Hova_ONaqn64_0l-o}P9_3k>?w)zezG2@UJP+i{)*gH@ zM4^B^*mY&IUPpa*Ow*7inV#aEx-u>8b&k|(lJ`5&l6?d;-7)J-Ddtz1b9?z1b6&kz z;;)3p66W@v#;l{7^>Lrup4G|aPy?mfEE#4l=gc+~sfvT!CFOEv(`hsvDPO24HM77* zmq}YbPdC6=v*qbmLv-Mp;tn>68|JD?Ju$nR;N;P_COG*K2pT>lU1FAPMx($T&en5! zVk^4%alZ!fwfBWw{Ha%%;IArXxmg2;BRiT|m*jc{{OzPE$qs|ktr*95iQiiK)upbEI!Sz8br@$EOyk>Iq3?*_z3L_=JWzu2!fsTGP zg2rCBtMl)H6Fo7mvw*{TW9o4;hZWx{crf3R#*M=FP_KiILmujk6eOSo@I4Shp|r{c zsF~BufJ=&p+rdX2K~Mo7ML}{kN^&?~2U$2o1{Lr0F-ZRokI1mfl^z2?d_tnK?eO&U zH25YoU3t^0a_WTd7eFpXBZA?c)k9@cHz+}Wf`~w>K!R3;`wGa-dpy|c#%}t;;w91~By< z1b1pVz$#o0;=9pT4nVlS3O-Pf9taB(vzMW{-T<1Hz}Ts6_HHH^eYCa-Mt}7)x4r)p z(jEx+Ev?jaATprTA9FiA;YRkp)Ix*AM<;NPUxPS-Z-tz|8xIE&K(xZwkhz%9*-6Zl zq-2;SaPU)wJ^LpPUU}Io4jsH~VsE}yVYW7?77rs7sum~3_8ZWUM||jMH6)=~P?igr zvdn8lzDhj=utIkCB2ijJ6z?RQ1v0V7IVQdrk{aoN9EJ*oI0uD1x#Uxae@4s!b);j6 z*Apzu=I9Ruq$s2s%Yrxq(5M7Q9ww*?%4CA7oDA{N+d)+tvzAs>9TKG&T3M-={iH}z z5w1K-*7p(^qw);+HHh;3Q%HF>9j!JDX=+>|U~J{6bX10XiK<9D^V|KK5$Ay7e~TC4 z;Ps$uXf?>N?B4A=eyvu`+p4A*6%1<%CAm^n3YX)6Z6&w&z~xipxsuUT^7d49RFb6K zj%>kXjMqn3P^~x7A> z-g$jXy-VK$gtVKG@Op}*Qa0!(d6dQM`JjF#e#3b;3rwP6f-lMLiy4Zfw%yxYro_fwB|=lUc?-n}wC@3t~9DaPH2gX!$mcLItVQrHr=A)EJX zk$^vEOF8^=4yNf2d-*mm8;7drNB`WwCltas($n@acVl8-0V%xNBW9Zv4!W<*4id=z zh6LyVJjDo}_z;YRrHKuL+x0az0RRtJkscxMdS*)EN1P}_1(|+KuELb2qZ?(#I&r;| zBQ+6Tz>!k8=>+q;af12nt^BtIwr-U)Tbi^KMY7FFXBx7~FT?b%RF>7*ai-FRx%*VY)P!7Imzmd6KpjZGJx`wBFR&-X2>N&VTtHn zY&P#M4-JxXYs?+-bu1u*?@BF$$ck|w>y1=u#@w&{C!rpXT5xD|#fV11>16GDak6&u z<%(lVs$w)qAZ0fj4byU@16N&2Sq7FOsR+k)TLf3Up$G<(kHz5{J=(A*CBv+mN2zSE zwTE_Z{MM*9?qv-H=PEdRD?oQS>@Fu84OPxJ>haMO&mmwfNM)u7qK4UUm?z%PoL@$0 znR~t)_&`FdpL_24Gah4TX!T|MmM*l~zz{}~31rONAOE*N`*HDFkmWy&WBKsWidhG{ z(v{)UQHB$M@@zwf*{2SxWHz0h){BR(Drkk0Q^$Wr+WMY7#mo1Cd7q38mLu#X)xhxC z=@>mkyJ2khCz9ICqnGicP``^ zT=#AHywo;JiZU}XG8LTfczHc$OT3vz(4-9Nr{RF{R@`Xymp}DfIN{AwI46DzoEST?3n%tt zD+l0%abitO4bo{GC$OtHPP`X6!F)kG{WEd~9huU>jE}Z%9);J{;eUkCTrr5B2(#m_ zk-CYB@g*c5*3`d(ALxoac6eTiv*YJLqwyHxvV4_(KeqA@@WI$oh^aw3jbjIP6~~UZ zBRi?#8A?w z{nOaWFX4mH{_>a_q|-RsV^^H^JXUp2D6<4!4we~nEP=Na=e~_bqToSsA6$+P9#Iv{>k_ zC^sz&R!NIqTNCawcE`}_N^8O$h6B2o#J5}SYKSf&p>NpvNsH{}skGdo*T|5uvs*W{ z=yb>(qKo6L33cTJnFGO2GRL%_rI89mM6mg))_^ZdEz@)Wsxqm~wA_V-mb;WfC_=wS zpunj2wP_jfZMkEXizV2yg-`94J_UQ%+%=QXM%{Fjz>{O{avQ>?db3uXf!ztU)-iVl z&MO<_1*60)_pomss(x48xE99nQ7WplAkp{B1ywa>SioQGoVaW~HjHXz18MaGK zxGTvWBI(F|eyd?C&5Bu^si8EjQf3;atrUYbiIkL`;*@4{atYHD z(79zW7#lQ$C>=Dq+$&a`)C>?K*fTkXSI`OUej|#h)UmY+uzV>vM_?8Gx^JPo8kG$s zr(Oj?gtWQlw60inrn{n{G>V`i3aDtAh~_f91N-=tBI<>EA`5}xwjEdy26Z|COA-K3 zvgjx^V2=ar7>4_~P1|-*P>yTWskHQ%c=}`fbmq{fXak~Q2R);0bQ&BbdKf#{izw41L-l# zxCO+w3v19&!0Y=W#Yh|peUWXA2n_8Jh)k`dR6v7g0fDM04)k$C8A=@~DzMehD9V)z z8eM{VHMWeV7;{q8pv}39mHJc*cH6qc)S7_$f+TA7iUzvj6zN(Ak(<>33M9(`TMKQ# zyKJc`=erdoIovT&*1PGiX_*#0 zdN)2=hvuGdp`qrjr60#<{Ajw@*SJ(_YDT4{e|!-<=BKk@*9|ZUUhe?=h8fzgV38C2 z^cVnY@P|K$JhZLA!{_i}bPc{YI zM^ZnIPXeU=A%15W1VZyBO8z7xvOCbg?bp||^wVIkf^3s@Fs*|0cb8xxdc9fySCBXT z*YKe_>b3eup|Jkv_;Cq-T#O%MxbtBxe*6x<{uVzp{5pvrV-PCnYw_d5uuW3`AbxCz zMPogOAHTw{zrc^X@#~lHqlq6De%yf{AIFb{7(@OCUi}~Z_!WNCVTk$>{Fue3Qy5{o zBZwWh3ld2p=;u`D7y&*x9l||Ir)BE3>Jdt$XOVb>NH0UG5F*{~6X_YeB1AfgkPwMv;1wYf9u=TO z!X5RLNI$_VLL}T$LWyMH6(Q1};T0hg?#-Y?`WapkB4O}Mh@?00>V4Q0In&@S5Bdrs z0n5u8-MNSUiQd7GfR&?WGI)oU1E&kVrB*Tx-~EuH>moP((j%c3M_8|<(wb2FVE!zp z1-|-(Xj|SBh_E4GDVt3+co5FQi45H44kjEz=Ouf*`!|7n>vw|8>|1ERqje=XVc1;{ v?i?%+Zo;G;`|(TY_EP^gaUDywdf8}JAZ#$J7;TJJFvRkr5lpK$OZoo?;KjXt literal 61643 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�=5##$^N_(t4E3e${HL|IZv~oOM=W>vT^$7 zC|1puWLvt9q*_qKR*dN#k^))*IsY!K)7d!3n9R??ip7pm+3}ZT8aVaX0eqg93|OeK zBqnK2v$B%}TTOcn>e8?8H)V7F2F$ro_ zsOgM*&;JY29(Rh^wXjo6XKP=Lv$Zp>RvcSW6{A7?wCy$;rsYW2-SAF2WZ*NBL^!TH zTX4lYjBu=aF@lTt#XF_U;zthVx;Yj<_?(`GkU%ODWrBc;O|>pDLr~!Dv`%uoAsbd7 zVQEm^;cav*xo(4{gVh&d38-o*w%vq9TyM}J8%u|lc%w{4sWcBQak0In-dNeSV1dyo z`gKittJobwt1HbZZy3%mV&RTcQnJ!Ps7q1tix5B-q4M*;VO2pKIsk76`JOh zx@O8lj=(~@V_HztNClV(Ytyv`d|7FkrUOuwX>G3QEiE*?l@vk|+C2^eqyAUdGT_^4 z$1E31u%eAm?WX=XEbV*ir=gCz=_sKmC%o0RQg-TYtvCluWVPlAZw&oTgZ%ys^wfsh zHqkqp}sM2g}87B5-=aG!JQEpi?V|KL3~;rmb8kHbbvF2l-(O~o$1_# zIa`D4GoufSie;HrQ3XRY6bsakP|FVNk5ILTY8fQ8G`-C&Pg<(bzX)vb#%R4911o)I z^g&BuZ!Pu#49`|UMF#Y#>8&>8dew!U2hey0zAuB#8gGN8lufHr48IlvdKiLCZW_7? z8qq4u8q^_gOm-c!$ZvVeG_bYR6}Q$X2KESwB{yKLUa{&j>?TclYsej9={WlQR>M}@ zidmeip*5{l<{GB06vHKnm6V<0jAm=pUe^>MWMM>rj`%27FrEPCRzYWMU}>{{tQ7-t z2Adc~8}_7>=7P7@o`==JxuOb5w}FXw(;F~MH2qa}O$MUf;sUE}P}BzUoqjDEW?A-C zySc2&fCmPi@(r|1R0ySyyA5b!4A9X%6zT>Rz+kv? zF!V=YGPROY0S3W6QD0xqE@eHzzwJ9$QJB?5W86ipun;m@U>6}{L~M1<$TFZq6;WeSygaIn)>8Y z;BfnMwgsqPhtF5jj1tle8$GsO!^hw7-e=r4h={&oDA!4Dfh zuENElEAZod{FuOx2k_$~_;D2kHvJ0x_zT#K)4z%zM_^q*zaBqc!;e?+<39Yj7eBs= zA1~m?R_K*}4t|W|#|Hdp;>SJs@m~CRH+;C>2qMOP6*4FU^MdM}AaEB5)Dr~e0)cpf zz*`{D76_~b0%?K3Ss+kO5Ev&2gay+43DWceY4(Jxo(;(e)ypdN7WFt)${VOGqLdnH zhA8EmctwhNUL}5_Z1nJz01OEM!V8!~2 z(EmeA?e{kiLtuanaR@O$THKwY4F@qba(iWPo4B);TD@$z6?C6fjDVvR4EuhB#HoN= G%Ku*`D?#4? diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index 6012a0b..229dadf 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -11,17 +11,17 @@ other information that should be provided before the tool is installed. |gen_gtkmm python checker| |gen_gtkmm python package| |github issues| |documentation status| |github contributors| -.. |gen_gtkmm python checker| image:: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml/badge.svg - :target: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml +.. |gen_gtkmm python checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml -.. |gen_gtkmm python package| image:: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml/badge.svg - :target: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_package.yml +.. |gen_gtkmm python package| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml -.. |github issues| image:: https://img.shields.io/github/issues/vroncevic/gen_gtkmm.svg - :target: https://github.com/vroncevic/gen_gtkmm/issues +.. |github issues| image:: https://img.shields.io/github/issues/electux/gen_gtkmm.svg + :target: https://github.com/electux/gen_gtkmm/issues -.. |github contributors| image:: https://img.shields.io/github/contributors/vroncevic/gen_gtkmm.svg - :target: https://github.com/vroncevic/gen_gtkmm/graphs/contributors +.. |github contributors| image:: https://img.shields.io/github/contributors/electux/gen_gtkmm.svg + :target: https://github.com/electux/gen_gtkmm/graphs/contributors .. |documentation status| image:: https://readthedocs.org/projects/gen-gtkmm/badge/?version=latest :target: https://gen-gtkmm.readthedocs.io/en/latest/?badge=latest @@ -36,14 +36,28 @@ other information that should be provided before the tool is installed. 🚀 Installation ------------------ -|gen_gtkmm python3 build| +Used next development environment -.. |gen_gtkmm python3 build| image:: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml/badge.svg - :target: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml +.. image:: https://raw.githubusercontent.com/electux/gen_gtkmm/dev/docs/debtux.png + :alt: debian linux os + +|gen_gtkmm python3 build| |gen_gtkmm interface checker| |gen_gtkmm isp checker| |gen_gtkmm srp checker| + +.. |gen_gtkmm python3 build| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml + +.. |gen_gtkmm interface checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_interface_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_interface_checker.yml + +.. |gen_gtkmm isp checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_isp_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_isp_checker.yml + +.. |gen_gtkmm srp checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_srp_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_srp_checker.yml Navigate to release `page`_ download and extract release archive. -.. _page: https://github.com/vroncevic/gen_gtkmm/releases +.. _page: https://github.com/electux/gen_gtkmm/releases To install **gen_gtkmm** type the following @@ -145,7 +159,7 @@ Tool structure ✨ Features ------------- -* Automatically scaffolds UI Gtkmm projects with build/make files. +* Automatically scaffolds Gtkmm projects with build/make files. * Provides a modular and extensible architecture based on OOP and SOLID principles. * Includes command line interface (CLI) support via a command/executor structure. * Robust validation of project bundles, dependencies, and options. @@ -169,11 +183,11 @@ Install package pip3 install gen_gtkmm -Prepare main entry point by downloading `main.py` or create your own. +Prepare main entry point by downloading `main.py `_ or create your own. .. code-block:: bash - wget -O main.py https://raw.githubusercontent.com/vroncevic/gen_gtkmm/main/main.py + wget -O main.py https://raw.githubusercontent.com/electux/gen_gtkmm/main/main.py Running tool for creating new Gtkmm project skeleton @@ -192,15 +206,34 @@ More documentation and info at 👥 Contributing ----------------- -`Contributing to gen_gtkmm `_ +`Contributing to gen_gtkmm `_ 📄 Copyright and licence -------------------------- -Copyright (C) 2025 - 2026 by `vroncevic.github.io/gen_gtkmm `_ +|gpl v3 license| |apache 2.0 license| + +Copyright (C) 2025 - 2026 by `electux.github.io/gen_gtkmm `_ **gen_gtkmm** is free software; you can redistribute it and/or modify it under the same terms as Python itself, either Python version 3.x or, at your option, any later version of Python 3 you may have available. Lets help and support PSF. + +|psf logo| + +|donate| + +.. |gpl v3 license| image:: https://img.shields.io/badge/License-GPLv3-blue.svg + :target: https://www.gnu.org/licenses/gpl-3.0 + +.. |apache 2.0 license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg + :target: https://opensource.org/licenses/Apache-2.0 + +.. |psf logo| image:: https://raw.githubusercontent.com/electux/gen_gtkmm/dev/docs/psf-logo-alpha.png + :target: https://www.python.org/psf/ + +.. |donate| image:: https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif + :target: https://www.python.org/psf/donations/ + diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 36f7480..a8d6e0f 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -46,7 +46,7 @@

Create Gtkmm project skeletongen_gtkmm python checker gen_gtkmm python package github issues documentation status github contributors

+

gen_gtkmm python checker gen_gtkmm python package github issues documentation status github contributors

Contents

    @@ -76,8 +76,10 @@

    Create Gtkmm project skeleton

    🚀 Installation

    -

    gen_gtkmm python3 build

    -

    Navigate to release page download and extract release archive.

    +

    Used next development environment

    +debian linux os +

    gen_gtkmm python3 build gen_gtkmm interface checker gen_gtkmm isp checker gen_gtkmm srp checker

    +

    Navigate to release page download and extract release archive.

    To install gen_gtkmm type the following

    tar xvzf gen_gtkmm-x.y.z.tar.gz
     cd gen_gtkmm-x.y.z/
    @@ -172,7 +174,7 @@ 

    📁 Tool structure

    ✨ Features

      -
    • Automatically scaffolds UI Gtkmm projects with build/make files.

    • +
    • Automatically scaffolds Gtkmm projects with build/make files.

    • Provides a modular and extensible architecture based on OOP and SOLID principles.

    • Includes command line interface (CLI) support via a command/executor structure.

    • Robust validation of project bundles, dependencies, and options.

    • @@ -407,8 +409,8 @@

      🛠 Usage
      pip3 install gen_gtkmm
       
      -

      Prepare main entry point by downloading main.py or create your own.

      -
      wget -O main.py https://raw.githubusercontent.com/vroncevic/gen_gtkmm/main/main.py
      +

      Prepare main entry point by downloading main.py or create your own.

      +
      wget -O main.py https://raw.githubusercontent.com/electux/gen_gtkmm/main/main.py
       

      Running tool for creating new Gtkmm project skeleton

      @@ -426,15 +428,18 @@

      📚 Docs¶<

      👥 Contributing

      -

      Contributing to gen_gtkmm

      +

      Contributing to gen_gtkmm

      diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 529432c..9ea10fd 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["gen_gtkmm", "gen_gtkmm.core", "gen_gtkmm.core.model", "gen_gtkmm.core.model.project_setup", "gen_gtkmm.core.service", "gen_gtkmm.core.service.engine", "gen_gtkmm.core.service.iservice", "gen_gtkmm.core.service.isubprocessor", "gen_gtkmm.engine", "gen_gtkmm.setup", "gen_gtkmm.setup.bundle", "gen_gtkmm.setup.dep_validator", "gen_gtkmm.setup.dependencies", "gen_gtkmm.setup.factory", "gen_gtkmm.setup.keys", "gen_gtkmm.setup.opt_validator", "gen_gtkmm.setup.options", "gen_gtkmm.setup.registry", "gen_gtkmm.setup.validator", "index", "main", "modules"], "filenames": ["gen_gtkmm.rst", "gen_gtkmm.core.rst", "gen_gtkmm.core.model.rst", "gen_gtkmm.core.model.project_setup.rst", "gen_gtkmm.core.service.rst", "gen_gtkmm.core.service.engine.rst", "gen_gtkmm.core.service.iservice.rst", "gen_gtkmm.core.service.isubprocessor.rst", "gen_gtkmm.engine.rst", "gen_gtkmm.setup.rst", "gen_gtkmm.setup.bundle.rst", "gen_gtkmm.setup.dep_validator.rst", "gen_gtkmm.setup.dependencies.rst", "gen_gtkmm.setup.factory.rst", "gen_gtkmm.setup.keys.rst", "gen_gtkmm.setup.opt_validator.rst", "gen_gtkmm.setup.options.rst", "gen_gtkmm.setup.registry.rst", "gen_gtkmm.setup.validator.rst", "index.rst", "main.rst", "modules.rst"], "titles": ["gen_gtkmm package", "gen_gtkmm.core package", "gen_gtkmm.core.model package", "gen_gtkmm.core.model.project_setup module", "gen_gtkmm.core.service package", "gen_gtkmm.core.service.engine module", "gen_gtkmm.core.service.iservice module", "gen_gtkmm.core.service.isubprocessor module", "gen_gtkmm.engine module", "gen_gtkmm.setup package", "gen_gtkmm.setup.bundle module", "gen_gtkmm.setup.dep_validator module", "gen_gtkmm.setup.dependencies module", "gen_gtkmm.setup.factory module", "gen_gtkmm.setup.keys module", "gen_gtkmm.setup.opt_validator module", "gen_gtkmm.setup.options module", "gen_gtkmm.setup.registry module", "gen_gtkmm.setup.validator module", "Create Gtkmm project skeleton", "main module", "gen_gtkmm"], "terms": {"core": [0, 17, 19, 21], "model": [0, 1, 19], "servic": [0, 1, 8, 9, 10, 12, 14, 19], "setup": [0, 3, 19, 21], "bundl": [0, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19], "gengtkmmbundl": [0, 8, 9, 10, 13, 17, 18], "dep_valid": [0, 9, 19], "gengtkmmbundledependenciesvalid": [0, 9, 11], "depend": [0, 9, 11, 13, 14, 17], "gengtkmmbundledepend": [0, 9, 11, 12, 17], "factori": [0, 6, 7, 9, 19], "gengtkmmbundlefactori": [0, 9, 13], "kei": [0, 9, 19], "gengtkmmbundlekei": [0, 9, 14], "opt_valid": [0, 9, 19], "gengtkmmbundleoptionsvalid": [0, 9, 15], "option": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20], "gengtkmmbundleopt": [0, 9, 13, 15, 16], "registri": [0, 9, 19], "gengtkmmbundleregistri": [0, 9, 17], "valid": [0, 9, 11, 15, 19], "gengtkmmbundlevalid": [0, 9, 18], "engin": [0, 1, 4, 19, 21], "gengtkmm": [0, 8, 10, 12, 16, 21], "_cli": [0, 8], "_is_initi": [0, 8], "_logger": [0, 8], "process": [0, 5, 7, 8, 10, 12], "__init__": [0, 1, 2, 4, 8, 9, 19], "py": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "copyright": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "2021": 0, "2026": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "vladimir": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "roncev": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "elektron": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "ronca": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "gmail": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "com": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "free": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "softwar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "redistribut": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "modifi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "under": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "term": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "gnu": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "public": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "licens": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "publish": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "foundat": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "either": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "version": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "your": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "later": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "distribut": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "hope": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "without": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "warranti": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "even": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "impli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "merchant": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "fit": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "FOR": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "A": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "particular": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "purpos": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "see": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "more": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "detail": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "should": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "receiv": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "copi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "along": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "program": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "If": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "http": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "www": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "org": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "info": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "initi": [0, 1, 2, 4, 5, 6, 7, 8, 9], "submodul": [1, 19, 21], "project_setup": [1, 2, 19], "projectsetup": [1, 2, 3, 5], "iservic": [1, 4, 10, 12, 19], "isubprocessor": [1, 4, 5, 10, 12, 19], "chip_config": [2, 3], "defin": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "domain": 3, "project": 3, "class": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "map": [3, 5, 11, 13, 14, 15, 17], "str": [3, 5, 10, 13, 14, 16, 17], "object": [3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 18], "sourc": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "base": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "It": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "attribut": [3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "chip": 3, "configur": [3, 5, 13, 19], "execut": [4, 5, 6, 7, 8, 10, 12], "is_initi": [4, 5, 6, 7], "subprocessor": [4, 5, 7, 9, 10, 12, 14, 19], "_abc_impl": [4, 6, 7], "_is_protocol": [4, 6, 7], "_is_runtime_protocol": [4, 6, 7], "run": [4, 7, 19, 20], "applic": 5, "file": [5, 13, 14, 16, 19], "orchestr": [5, 8, 10, 12], "_subprocessor": 5, "adapt": [5, 8, 10, 12, 20], "subprocess": 5, "method": [5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18], "write": 5, "user": 5, "check": [5, 6, 7, 11, 15, 18, 19], "param": [5, 6, 7], "gtkmm": 5, "paramet": [5, 6, 7, 8, 11, 13, 15, 17, 18], "The": [5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "return": [5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 20], "result": [5, 6, 7], "code": [5, 20], "stdout": 5, "stderr": 5, "except": [5, 8, 10, 11, 13, 14, 15, 17, 18, 20], "none": [5, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20], "bool": [5, 6, 7, 8, 11, 15, 18, 20], "true": [5, 6, 7, 8, 11, 15, 18, 20], "fals": [5, 6, 7, 8, 11, 15, 18, 20], "otherwis": [5, 6, 7, 8, 11, 15, 18, 20], "abstract": [6, 7], "interfac": [6, 7, 8, 10, 12, 14, 19], "provid": [6, 7, 11, 13, 15, 17, 18, 19], "an": [6, 7, 11, 13, 15, 17, 18], "arg": [6, 7], "kwarg": [6, 7], "protocol": [6, 7], "_abc": [6, 7], "_abc_data": [6, 7], "serviceparamstyp": 6, "executeresulttyp": 6, "sub": [7, 10, 12], "subprocessorparamstyp": 7, "subprocessorresulttyp": 7, "flag": 8, "indic": 8, "whether": 8, "logger": 8, "log": 8, "messag": 8, "dure": 8, "command": [8, 10, 12, 19], "line": [8, 10, 12, 19], "icli": [8, 10, 12, 19], "ilogg": 8, "verbos": 8, "success": [8, 20], "cli": [9, 10, 12, 14, 19, 20], "to_dict": [9, 10], "is_valid": [9, 11, 15, 18], "_info_fil": [9, 13], "create_bundl": [9, 13, 17], "get_vers": [9, 13, 17], "dependency_bas": [9, 14], "dependency_cli": [9, 14], "dependency_servic": [9, 14], "dependency_subprocessor": [9, 14], "option_info_fil": [9, 14], "get_dependency_to_typ": [9, 14], "get_option_to_typ": [9, 14], "info_fil": [9, 14, 16], "basebundl": [10, 12], "hold": 10, "compon": [10, 12, 14, 17], "": [10, 12], "convert": 10, "dictionari": 10, "dict": 10, "represent": 10, "classmethod": [11, 13, 14, 15, 17, 18], "atsvalueerror": [11, 13, 15, 17, 18], "must": [11, 13, 15, 17, 18], "proper": [11, 13, 15, 17, 18], "valu": [11, 13, 15, 17, 18], "atstypeerror": [11, 13, 15, 17, 18], "instanc": [11, 13, 15, 17, 18], "its": [11, 13, 15, 17, 18], "respect": [11, 13, 15, 17, 18], "type": [11, 13, 14, 15, 17, 18, 19], "typeddict": [12, 16], "creat": [13, 17], "path": [13, 16], "pre": 13, "infrastructur": [13, 19], "config": [13, 19], "cfg": [13, 19], "runtim": 14, "constraint": 14, "constant": 14, "classvar": 14, "mappingproxi": 14, "encapsul": 17, "simplif": 17, "gen_gtkmm": [19, 20], "develop": 19, "python": 19, "readm": 19, "introduc": 19, "instruct": 19, "how": 19, "machin": 19, "mai": 19, "other": 19, "inform": 19, "befor": 19, "packag": [19, 21], "subpackag": [19, 21], "modul": [19, 21], "main": [19, 21], "navig": 19, "releas": 19, "page": 19, "download": 19, "extract": 19, "archiv": 19, "To": 19, "follow": 19, "tar": 19, "xvzf": 19, "x": 19, "y": 19, "z": 19, "gz": 19, "cd": 19, "python3": 19, "wget": 19, "bootstrap": [19, 20], "pypa": 19, "io": 19, "get": 19, "pip": 19, "m": 19, "upgrad": 19, "setuptool": 19, "build": 19, "pip3": 19, "r": 19, "requir": [19, 20], "txt": 19, "isol": 19, "wheel": 19, "dist": 19, "py3": 19, "whl": 19, "rm": 19, "f": 19, "docker": 19, "imag": 19, "contain": 19, "next": 19, "librari": 19, "ats": 19, "util": 19, "app": 19, "script": 19, "oop": 19, "gen_gtkmm_command_definit": 19, "gen_gtkmm_command_executor": 19, "icommand_definit": 19, "icommand_executor": 19, "logo": 19, "scheme": 19, "json": 19, "templat": 19, "tgz": 19, "10": 19, "directori": 19, "44": 19, "automat": 19, "scaffold": 19, "ui": 19, "make": 19, "modular": 19, "extens": 19, "architectur": 19, "solid": 19, "principl": 19, "includ": 19, "support": 19, "via": 19, "executor": 19, "robust": 19, "come": 19, "schema": 19, "definit": 19, "high": 19, "qualiti": 19, "full": 19, "100": 19, "unit": 19, "test": 19, "name": 19, "stmt": 19, "miss": 19, "cover": 19, "8": 19, "0": 19, "9": 19, "14": 19, "27": 19, "57": 19, "39": 19, "22": 19, "36": 19, "18": 19, "35": 19, "26": 19, "15": 19, "24": 19, "43": 19, "16": 19, "21": 19, "13": 19, "55": 19, "23": 19, "19": 19, "48": 19, "34": 19, "12": 19, "32": 19, "total": 19, "927": 19, "prepar": 19, "entri": [19, 20], "point": [19, 20], "own": 19, "o": 19, "raw": 19, "githubusercont": 19, "vroncev": 19, "new": 19, "mytool": 19, "gtkmm4": 19, "output": 19, "demo": 19, "document": 19, "readthedoc": 19, "2025": 19, "github": 19, "same": 19, "itself": 19, "avail": 19, "let": 19, "help": 19, "psf": 19, "task": 20, "content": 21}, "objects": {"": [[0, 0, 0, "-", "gen_gtkmm"], [20, 0, 0, "-", "main"]], "gen_gtkmm": [[1, 0, 0, "-", "core"], [8, 0, 0, "-", "engine"], [9, 0, 0, "-", "setup"]], "gen_gtkmm.core": [[2, 0, 0, "-", "model"], [4, 0, 0, "-", "service"]], "gen_gtkmm.core.model": [[3, 0, 0, "-", "project_setup"]], "gen_gtkmm.core.model.project_setup": [[3, 1, 1, "", "ProjectSetup"]], "gen_gtkmm.core.model.project_setup.ProjectSetup": [[3, 2, 1, "", "chip_config"]], "gen_gtkmm.core.service": [[5, 0, 0, "-", "engine"], [6, 0, 0, "-", "iservice"], [7, 0, 0, "-", "isubprocessor"]], "gen_gtkmm.core.service.engine": [[5, 1, 1, "", "Service"]], "gen_gtkmm.core.service.engine.Service": [[5, 3, 1, "", "execute"], [5, 3, 1, "", "is_initialized"], [5, 2, 1, "", "subprocessor"]], "gen_gtkmm.core.service.iservice": [[6, 1, 1, "", "IService"]], "gen_gtkmm.core.service.iservice.IService": [[6, 2, 1, "", "_abc_impl"], [6, 2, 1, "", "_is_protocol"], [6, 2, 1, "", "_is_runtime_protocol"], [6, 3, 1, "", "execute"], [6, 3, 1, "", "is_initialized"]], "gen_gtkmm.core.service.isubprocessor": [[7, 1, 1, "", "ISubProcessor"]], "gen_gtkmm.core.service.isubprocessor.ISubProcessor": [[7, 2, 1, "", "_abc_impl"], [7, 2, 1, "", "_is_protocol"], [7, 2, 1, "", "_is_runtime_protocol"], [7, 3, 1, "", "is_initialized"], [7, 3, 1, "", "run"]], "gen_gtkmm.engine": [[8, 1, 1, "", "GenGtkmm"]], "gen_gtkmm.engine.GenGtkmm": [[8, 2, 1, "", "_cli"], [8, 2, 1, "", "_is_initialized"], [8, 2, 1, "", "_logger"], [8, 3, 1, "", "process"]], "gen_gtkmm.setup": [[10, 0, 0, "-", "bundle"], [11, 0, 0, "-", "dep_validator"], [12, 0, 0, "-", "dependencies"], [13, 0, 0, "-", "factory"], [14, 0, 0, "-", "keys"], [15, 0, 0, "-", "opt_validator"], [16, 0, 0, "-", "options"], [17, 0, 0, "-", "registry"], [18, 0, 0, "-", "validator"]], "gen_gtkmm.setup.bundle": [[10, 1, 1, "", "GenGtkmmBundle"]], "gen_gtkmm.setup.bundle.GenGtkmmBundle": [[10, 2, 1, "", "base"], [10, 2, 1, "", "cli"], [10, 2, 1, "", "service"], [10, 2, 1, "", "subprocessor"], [10, 3, 1, "", "to_dict"]], "gen_gtkmm.setup.dep_validator": [[11, 1, 1, "", "GenGtkmmBundleDependenciesValidator"]], "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator": [[11, 3, 1, "", "is_valid"], [11, 3, 1, "", "validate"]], "gen_gtkmm.setup.dependencies": [[12, 1, 1, "", "GenGtkmmBundleDependencies"]], "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies": [[12, 2, 1, "", "base"], [12, 2, 1, "", "cli"], [12, 2, 1, "", "service"], [12, 2, 1, "", "subprocessor"]], "gen_gtkmm.setup.factory": [[13, 1, 1, "", "GenGtkmmBundleFactory"]], "gen_gtkmm.setup.factory.GenGtkmmBundleFactory": [[13, 2, 1, "", "_info_file"], [13, 3, 1, "", "create_bundle"], [13, 3, 1, "", "get_version"]], "gen_gtkmm.setup.keys": [[14, 1, 1, "", "GenGtkmmBundleKeys"]], "gen_gtkmm.setup.keys.GenGtkmmBundleKeys": [[14, 2, 1, "", "DEPENDENCY_BASE"], [14, 2, 1, "", "DEPENDENCY_CLI"], [14, 2, 1, "", "DEPENDENCY_SERVICE"], [14, 2, 1, "", "DEPENDENCY_SUBPROCESSOR"], [14, 2, 1, "", "OPTION_INFO_FILE"], [14, 3, 1, "", "get_dependency_to_type"], [14, 3, 1, "", "get_option_to_type"]], "gen_gtkmm.setup.opt_validator": [[15, 1, 1, "", "GenGtkmmBundleOptionsValidator"]], "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator": [[15, 3, 1, "", "is_valid"], [15, 3, 1, "", "validate"]], "gen_gtkmm.setup.options": [[16, 1, 1, "", "GenGtkmmBundleOptions"]], "gen_gtkmm.setup.options.GenGtkmmBundleOptions": [[16, 2, 1, "", "info_file"]], "gen_gtkmm.setup.registry": [[17, 1, 1, "", "GenGtkmmBundleRegistry"]], "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry": [[17, 3, 1, "", "create_bundle"], [17, 3, 1, "", "get_version"]], "gen_gtkmm.setup.validator": [[18, 1, 1, "", "GenGtkmmBundleValidator"]], "gen_gtkmm.setup.validator.GenGtkmmBundleValidator": [[18, 3, 1, "", "is_valid"], [18, 3, 1, "", "validate"]], "main": [[20, 4, 1, "", "main"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen_gtkmm": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21], "packag": [0, 1, 2, 4, 9], "subpackag": [0, 1], "submodul": [0, 2, 4, 9], "modul": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "content": [0, 1, 2, 4, 9, 19], "core": [1, 2, 3, 4, 5, 6, 7], "model": [2, 3], "project_setup": 3, "servic": [4, 5, 6, 7], "engin": [5, 8], "iservic": 6, "isubprocessor": 7, "setup": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "bundl": 10, "dep_valid": 11, "depend": [12, 19], "factori": 13, "kei": 14, "opt_valid": 15, "option": 16, "registri": 17, "valid": 18, "creat": 19, "gtkmm": 19, "project": 19, "skeleton": 19, "instal": 19, "tool": 19, "structur": 19, "featur": 19, "code": 19, "coverag": 19, "usag": 19, "doc": 19, "contribut": 19, "copyright": 19, "licenc": 19, "main": 20}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"gen_gtkmm package": [[0, "gen-gtkmm-package"]], "Subpackages": [[0, "subpackages"], [1, "subpackages"]], "Submodules": [[0, "submodules"], [2, "submodules"], [4, "submodules"], [9, "submodules"]], "Module contents": [[0, "module-gen_gtkmm"], [1, "module-gen_gtkmm.core"], [2, "module-gen_gtkmm.core.model"], [4, "module-gen_gtkmm.core.service"], [9, "module-gen_gtkmm.setup"]], "gen_gtkmm.core package": [[1, "gen-gtkmm-core-package"]], "gen_gtkmm.core.model package": [[2, "gen-gtkmm-core-model-package"]], "gen_gtkmm.core.model.project_setup module": [[3, "module-gen_gtkmm.core.model.project_setup"]], "gen_gtkmm.core.service package": [[4, "gen-gtkmm-core-service-package"]], "gen_gtkmm.core.service.engine module": [[5, "module-gen_gtkmm.core.service.engine"]], "gen_gtkmm.core.service.iservice module": [[6, "module-gen_gtkmm.core.service.iservice"]], "gen_gtkmm.core.service.isubprocessor module": [[7, "module-gen_gtkmm.core.service.isubprocessor"]], "gen_gtkmm.engine module": [[8, "module-gen_gtkmm.engine"]], "gen_gtkmm.setup package": [[9, "gen-gtkmm-setup-package"]], "gen_gtkmm.setup.bundle module": [[10, "module-gen_gtkmm.setup.bundle"]], "gen_gtkmm.setup.dep_validator module": [[11, "module-gen_gtkmm.setup.dep_validator"]], "gen_gtkmm.setup.dependencies module": [[12, "module-gen_gtkmm.setup.dependencies"]], "gen_gtkmm.setup.factory module": [[13, "module-gen_gtkmm.setup.factory"]], "gen_gtkmm.setup.keys module": [[14, "module-gen_gtkmm.setup.keys"]], "gen_gtkmm.setup.opt_validator module": [[15, "module-gen_gtkmm.setup.opt_validator"]], "gen_gtkmm.setup.options module": [[16, "module-gen_gtkmm.setup.options"]], "gen_gtkmm.setup.registry module": [[17, "module-gen_gtkmm.setup.registry"]], "gen_gtkmm.setup.validator module": [[18, "module-gen_gtkmm.setup.validator"]], "Create Gtkmm project skeleton": [[19, "create-gtkmm-project-skeleton"]], "Contents": [[19, null]], "\ud83d\ude80 Installation": [[19, "installation"]], "\ud83d\udce6 Dependencies": [[19, "dependencies"]], "\ud83d\udcc1 Tool structure": [[19, "tool-structure"]], "\u2728 Features": [[19, "features"]], "\ud83d\udcca Code coverage": [[19, "code-coverage"]], "Code coverage": [[19, "id1"]], "\ud83d\udee0 Usage": [[19, "usage"]], "\ud83d\udcda Docs": [[19, "docs"]], "\ud83d\udc65 Contributing": [[19, "contributing"]], "\ud83d\udcc4 Copyright and licence": [[19, "copyright-and-licence"]], "main module": [[20, "module-main"]], "gen_gtkmm": [[21, "gen-gtkmm"]]}, "indexentries": {"gen_gtkmm": [[0, "module-gen_gtkmm"]], "module": [[0, "module-gen_gtkmm"], [1, "module-gen_gtkmm.core"], [2, "module-gen_gtkmm.core.model"], [3, "module-gen_gtkmm.core.model.project_setup"], [4, "module-gen_gtkmm.core.service"], [5, "module-gen_gtkmm.core.service.engine"], [6, "module-gen_gtkmm.core.service.iservice"], [7, "module-gen_gtkmm.core.service.isubprocessor"], [8, "module-gen_gtkmm.engine"], [9, "module-gen_gtkmm.setup"], [10, "module-gen_gtkmm.setup.bundle"], [11, "module-gen_gtkmm.setup.dep_validator"], [12, "module-gen_gtkmm.setup.dependencies"], [13, "module-gen_gtkmm.setup.factory"], [14, "module-gen_gtkmm.setup.keys"], [15, "module-gen_gtkmm.setup.opt_validator"], [16, "module-gen_gtkmm.setup.options"], [17, "module-gen_gtkmm.setup.registry"], [18, "module-gen_gtkmm.setup.validator"], [20, "module-main"]], "gen_gtkmm.core": [[1, "module-gen_gtkmm.core"]], "gen_gtkmm.core.model": [[2, "module-gen_gtkmm.core.model"]], "projectsetup (class in gen_gtkmm.core.model.project_setup)": [[3, "gen_gtkmm.core.model.project_setup.ProjectSetup"]], "chip_config (gen_gtkmm.core.model.project_setup.projectsetup attribute)": [[3, "gen_gtkmm.core.model.project_setup.ProjectSetup.chip_config"]], "gen_gtkmm.core.model.project_setup": [[3, "module-gen_gtkmm.core.model.project_setup"]], "gen_gtkmm.core.service": [[4, "module-gen_gtkmm.core.service"]], "service (class in gen_gtkmm.core.service.engine)": [[5, "gen_gtkmm.core.service.engine.Service"]], "execute() (gen_gtkmm.core.service.engine.service method)": [[5, "gen_gtkmm.core.service.engine.Service.execute"]], "gen_gtkmm.core.service.engine": [[5, "module-gen_gtkmm.core.service.engine"]], "is_initialized() (gen_gtkmm.core.service.engine.service method)": [[5, "gen_gtkmm.core.service.engine.Service.is_initialized"]], "subprocessor (gen_gtkmm.core.service.engine.service attribute)": [[5, "gen_gtkmm.core.service.engine.Service.subprocessor"]], "iservice (class in gen_gtkmm.core.service.iservice)": [[6, "gen_gtkmm.core.service.iservice.IService"]], "_abc_impl (gen_gtkmm.core.service.iservice.iservice attribute)": [[6, "gen_gtkmm.core.service.iservice.IService._abc_impl"]], "_is_protocol (gen_gtkmm.core.service.iservice.iservice attribute)": [[6, "gen_gtkmm.core.service.iservice.IService._is_protocol"]], "_is_runtime_protocol (gen_gtkmm.core.service.iservice.iservice attribute)": [[6, "gen_gtkmm.core.service.iservice.IService._is_runtime_protocol"]], "execute() (gen_gtkmm.core.service.iservice.iservice method)": [[6, "gen_gtkmm.core.service.iservice.IService.execute"]], "gen_gtkmm.core.service.iservice": [[6, "module-gen_gtkmm.core.service.iservice"]], "is_initialized() (gen_gtkmm.core.service.iservice.iservice method)": [[6, "gen_gtkmm.core.service.iservice.IService.is_initialized"]], "isubprocessor (class in gen_gtkmm.core.service.isubprocessor)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor"]], "_abc_impl (gen_gtkmm.core.service.isubprocessor.isubprocessor attribute)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor._abc_impl"]], "_is_protocol (gen_gtkmm.core.service.isubprocessor.isubprocessor attribute)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor._is_protocol"]], "_is_runtime_protocol (gen_gtkmm.core.service.isubprocessor.isubprocessor attribute)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor._is_runtime_protocol"]], "gen_gtkmm.core.service.isubprocessor": [[7, "module-gen_gtkmm.core.service.isubprocessor"]], "is_initialized() (gen_gtkmm.core.service.isubprocessor.isubprocessor method)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor.is_initialized"]], "run() (gen_gtkmm.core.service.isubprocessor.isubprocessor method)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor.run"]], "gengtkmm (class in gen_gtkmm.engine)": [[8, "gen_gtkmm.engine.GenGtkmm"]], "_cli (gen_gtkmm.engine.gengtkmm attribute)": [[8, "gen_gtkmm.engine.GenGtkmm._cli"]], "_is_initialized (gen_gtkmm.engine.gengtkmm attribute)": [[8, "gen_gtkmm.engine.GenGtkmm._is_initialized"]], "_logger (gen_gtkmm.engine.gengtkmm attribute)": [[8, "gen_gtkmm.engine.GenGtkmm._logger"]], "gen_gtkmm.engine": [[8, "module-gen_gtkmm.engine"]], "process() (gen_gtkmm.engine.gengtkmm method)": [[8, "gen_gtkmm.engine.GenGtkmm.process"]], "gen_gtkmm.setup": [[9, "module-gen_gtkmm.setup"]], "gengtkmmbundle (class in gen_gtkmm.setup.bundle)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle"]], "base (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.base"]], "cli (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.cli"]], "gen_gtkmm.setup.bundle": [[10, "module-gen_gtkmm.setup.bundle"]], "service (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.service"]], "subprocessor (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.subprocessor"]], "to_dict() (gen_gtkmm.setup.bundle.gengtkmmbundle method)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.to_dict"]], "gengtkmmbundledependenciesvalidator (class in gen_gtkmm.setup.dep_validator)": [[11, "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator"]], "gen_gtkmm.setup.dep_validator": [[11, "module-gen_gtkmm.setup.dep_validator"]], "is_valid() (gen_gtkmm.setup.dep_validator.gengtkmmbundledependenciesvalidator class method)": [[11, "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator.is_valid"]], "validate() (gen_gtkmm.setup.dep_validator.gengtkmmbundledependenciesvalidator class method)": [[11, "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator.validate"]], "gengtkmmbundledependencies (class in gen_gtkmm.setup.dependencies)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies"]], "base (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.base"]], "cli (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.cli"]], "gen_gtkmm.setup.dependencies": [[12, "module-gen_gtkmm.setup.dependencies"]], "service (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.service"]], "subprocessor (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.subprocessor"]], "gengtkmmbundlefactory (class in gen_gtkmm.setup.factory)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory"]], "_info_file (gen_gtkmm.setup.factory.gengtkmmbundlefactory attribute)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory._info_file"]], "create_bundle() (gen_gtkmm.setup.factory.gengtkmmbundlefactory class method)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory.create_bundle"]], "gen_gtkmm.setup.factory": [[13, "module-gen_gtkmm.setup.factory"]], "get_version() (gen_gtkmm.setup.factory.gengtkmmbundlefactory class method)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory.get_version"]], "dependency_base (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_BASE"]], "dependency_cli (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_CLI"]], "dependency_service (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_SERVICE"]], "dependency_subprocessor (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_SUBPROCESSOR"]], "gengtkmmbundlekeys (class in gen_gtkmm.setup.keys)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys"]], "option_info_file (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.OPTION_INFO_FILE"]], "gen_gtkmm.setup.keys": [[14, "module-gen_gtkmm.setup.keys"]], "get_dependency_to_type() (gen_gtkmm.setup.keys.gengtkmmbundlekeys class method)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.get_dependency_to_type"]], "get_option_to_type() (gen_gtkmm.setup.keys.gengtkmmbundlekeys class method)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.get_option_to_type"]], "gengtkmmbundleoptionsvalidator (class in gen_gtkmm.setup.opt_validator)": [[15, "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator"]], "gen_gtkmm.setup.opt_validator": [[15, "module-gen_gtkmm.setup.opt_validator"]], "is_valid() (gen_gtkmm.setup.opt_validator.gengtkmmbundleoptionsvalidator class method)": [[15, "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator.is_valid"]], "validate() (gen_gtkmm.setup.opt_validator.gengtkmmbundleoptionsvalidator class method)": [[15, "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator.validate"]], "gengtkmmbundleoptions (class in gen_gtkmm.setup.options)": [[16, "gen_gtkmm.setup.options.GenGtkmmBundleOptions"]], "gen_gtkmm.setup.options": [[16, "module-gen_gtkmm.setup.options"]], "info_file (gen_gtkmm.setup.options.gengtkmmbundleoptions attribute)": [[16, "gen_gtkmm.setup.options.GenGtkmmBundleOptions.info_file"]], "gengtkmmbundleregistry (class in gen_gtkmm.setup.registry)": [[17, "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry"]], "create_bundle() (gen_gtkmm.setup.registry.gengtkmmbundleregistry class method)": [[17, "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry.create_bundle"]], "gen_gtkmm.setup.registry": [[17, "module-gen_gtkmm.setup.registry"]], "get_version() (gen_gtkmm.setup.registry.gengtkmmbundleregistry class method)": [[17, "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry.get_version"]], "gengtkmmbundlevalidator (class in gen_gtkmm.setup.validator)": [[18, "gen_gtkmm.setup.validator.GenGtkmmBundleValidator"]], "gen_gtkmm.setup.validator": [[18, "module-gen_gtkmm.setup.validator"]], "is_valid() (gen_gtkmm.setup.validator.gengtkmmbundlevalidator class method)": [[18, "gen_gtkmm.setup.validator.GenGtkmmBundleValidator.is_valid"]], "validate() (gen_gtkmm.setup.validator.gengtkmmbundlevalidator class method)": [[18, "gen_gtkmm.setup.validator.GenGtkmmBundleValidator.validate"]], "main": [[20, "module-main"]], "main() (in module main)": [[20, "main.main"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["gen_gtkmm", "gen_gtkmm.core", "gen_gtkmm.core.model", "gen_gtkmm.core.model.project_setup", "gen_gtkmm.core.service", "gen_gtkmm.core.service.engine", "gen_gtkmm.core.service.iservice", "gen_gtkmm.core.service.isubprocessor", "gen_gtkmm.engine", "gen_gtkmm.setup", "gen_gtkmm.setup.bundle", "gen_gtkmm.setup.dep_validator", "gen_gtkmm.setup.dependencies", "gen_gtkmm.setup.factory", "gen_gtkmm.setup.keys", "gen_gtkmm.setup.opt_validator", "gen_gtkmm.setup.options", "gen_gtkmm.setup.registry", "gen_gtkmm.setup.validator", "index", "main", "modules"], "filenames": ["gen_gtkmm.rst", "gen_gtkmm.core.rst", "gen_gtkmm.core.model.rst", "gen_gtkmm.core.model.project_setup.rst", "gen_gtkmm.core.service.rst", "gen_gtkmm.core.service.engine.rst", "gen_gtkmm.core.service.iservice.rst", "gen_gtkmm.core.service.isubprocessor.rst", "gen_gtkmm.engine.rst", "gen_gtkmm.setup.rst", "gen_gtkmm.setup.bundle.rst", "gen_gtkmm.setup.dep_validator.rst", "gen_gtkmm.setup.dependencies.rst", "gen_gtkmm.setup.factory.rst", "gen_gtkmm.setup.keys.rst", "gen_gtkmm.setup.opt_validator.rst", "gen_gtkmm.setup.options.rst", "gen_gtkmm.setup.registry.rst", "gen_gtkmm.setup.validator.rst", "index.rst", "main.rst", "modules.rst"], "titles": ["gen_gtkmm package", "gen_gtkmm.core package", "gen_gtkmm.core.model package", "gen_gtkmm.core.model.project_setup module", "gen_gtkmm.core.service package", "gen_gtkmm.core.service.engine module", "gen_gtkmm.core.service.iservice module", "gen_gtkmm.core.service.isubprocessor module", "gen_gtkmm.engine module", "gen_gtkmm.setup package", "gen_gtkmm.setup.bundle module", "gen_gtkmm.setup.dep_validator module", "gen_gtkmm.setup.dependencies module", "gen_gtkmm.setup.factory module", "gen_gtkmm.setup.keys module", "gen_gtkmm.setup.opt_validator module", "gen_gtkmm.setup.options module", "gen_gtkmm.setup.registry module", "gen_gtkmm.setup.validator module", "Create Gtkmm project skeleton", "main module", "gen_gtkmm"], "terms": {"core": [0, 17, 19, 21], "model": [0, 1, 19], "servic": [0, 1, 8, 9, 10, 12, 14, 19], "setup": [0, 3, 19, 21], "bundl": [0, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19], "gengtkmmbundl": [0, 8, 9, 10, 13, 17, 18], "dep_valid": [0, 9, 19], "gengtkmmbundledependenciesvalid": [0, 9, 11], "depend": [0, 9, 11, 13, 14, 17], "gengtkmmbundledepend": [0, 9, 11, 12, 17], "factori": [0, 6, 7, 9, 19], "gengtkmmbundlefactori": [0, 9, 13], "kei": [0, 9, 19], "gengtkmmbundlekei": [0, 9, 14], "opt_valid": [0, 9, 19], "gengtkmmbundleoptionsvalid": [0, 9, 15], "option": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20], "gengtkmmbundleopt": [0, 9, 13, 15, 16], "registri": [0, 9, 19], "gengtkmmbundleregistri": [0, 9, 17], "valid": [0, 9, 11, 15, 19], "gengtkmmbundlevalid": [0, 9, 18], "engin": [0, 1, 4, 19, 21], "gengtkmm": [0, 8, 10, 12, 16, 21], "_cli": [0, 8], "_is_initi": [0, 8], "_logger": [0, 8], "process": [0, 5, 7, 8, 10, 12], "__init__": [0, 1, 2, 4, 8, 9, 19], "py": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "copyright": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "2021": 0, "2026": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "vladimir": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "roncev": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "elektron": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "ronca": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "gmail": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "com": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "free": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "softwar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "redistribut": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "modifi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "under": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "term": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "gnu": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "public": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "licens": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "publish": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "foundat": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "either": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "version": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "your": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "later": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "distribut": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "hope": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "without": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "warranti": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "even": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "impli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "merchant": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "fit": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "FOR": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "A": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "particular": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "purpos": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "see": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "more": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "detail": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "should": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "receiv": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "copi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "along": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "program": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "If": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "http": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "www": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "org": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "info": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "initi": [0, 1, 2, 4, 5, 6, 7, 8, 9], "submodul": [1, 19, 21], "project_setup": [1, 2, 19], "projectsetup": [1, 2, 3, 5], "iservic": [1, 4, 10, 12, 19], "isubprocessor": [1, 4, 5, 10, 12, 19], "chip_config": [2, 3], "defin": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "domain": 3, "project": 3, "class": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "map": [3, 5, 11, 13, 14, 15, 17], "str": [3, 5, 10, 13, 14, 16, 17], "object": [3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 18], "sourc": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "base": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "It": [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "attribut": [3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "chip": 3, "configur": [3, 5, 13, 19], "execut": [4, 5, 6, 7, 8, 10, 12], "is_initi": [4, 5, 6, 7], "subprocessor": [4, 5, 7, 9, 10, 12, 14, 19], "_abc_impl": [4, 6, 7], "_is_protocol": [4, 6, 7], "_is_runtime_protocol": [4, 6, 7], "run": [4, 7, 19, 20], "applic": 5, "file": [5, 13, 14, 16, 19], "orchestr": [5, 8, 10, 12], "_subprocessor": 5, "adapt": [5, 8, 10, 12, 20], "subprocess": 5, "method": [5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18], "write": 5, "user": 5, "check": [5, 6, 7, 11, 15, 18, 19], "param": [5, 6, 7], "gtkmm": 5, "paramet": [5, 6, 7, 8, 11, 13, 15, 17, 18], "The": [5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "return": [5, 6, 7, 8, 10, 11, 13, 14, 15, 17, 18, 20], "result": [5, 6, 7], "code": [5, 20], "stdout": 5, "stderr": 5, "except": [5, 8, 10, 11, 13, 14, 15, 17, 18, 20], "none": [5, 8, 10, 11, 13, 14, 15, 17, 18, 19, 20], "bool": [5, 6, 7, 8, 11, 15, 18, 20], "true": [5, 6, 7, 8, 11, 15, 18, 20], "fals": [5, 6, 7, 8, 11, 15, 18, 20], "otherwis": [5, 6, 7, 8, 11, 15, 18, 20], "abstract": [6, 7], "interfac": [6, 7, 8, 10, 12, 14, 19], "provid": [6, 7, 11, 13, 15, 17, 18, 19], "an": [6, 7, 11, 13, 15, 17, 18], "arg": [6, 7], "kwarg": [6, 7], "protocol": [6, 7], "_abc": [6, 7], "_abc_data": [6, 7], "serviceparamstyp": 6, "executeresulttyp": 6, "sub": [7, 10, 12], "subprocessorparamstyp": 7, "subprocessorresulttyp": 7, "flag": 8, "indic": 8, "whether": 8, "logger": 8, "log": 8, "messag": 8, "dure": 8, "command": [8, 10, 12, 19], "line": [8, 10, 12, 19], "icli": [8, 10, 12, 19], "ilogg": 8, "verbos": 8, "success": [8, 20], "cli": [9, 10, 12, 14, 19, 20], "to_dict": [9, 10], "is_valid": [9, 11, 15, 18], "_info_fil": [9, 13], "create_bundl": [9, 13, 17], "get_vers": [9, 13, 17], "dependency_bas": [9, 14], "dependency_cli": [9, 14], "dependency_servic": [9, 14], "dependency_subprocessor": [9, 14], "option_info_fil": [9, 14], "get_dependency_to_typ": [9, 14], "get_option_to_typ": [9, 14], "info_fil": [9, 14, 16], "basebundl": [10, 12], "hold": 10, "compon": [10, 12, 14, 17], "": [10, 12], "convert": 10, "dictionari": 10, "dict": 10, "represent": 10, "classmethod": [11, 13, 14, 15, 17, 18], "atsvalueerror": [11, 13, 15, 17, 18], "must": [11, 13, 15, 17, 18], "proper": [11, 13, 15, 17, 18], "valu": [11, 13, 15, 17, 18], "atstypeerror": [11, 13, 15, 17, 18], "instanc": [11, 13, 15, 17, 18], "its": [11, 13, 15, 17, 18], "respect": [11, 13, 15, 17, 18], "type": [11, 13, 14, 15, 17, 18, 19], "typeddict": [12, 16], "creat": [13, 17], "path": [13, 16], "pre": 13, "infrastructur": [13, 19], "config": [13, 19], "cfg": [13, 19], "runtim": 14, "constraint": 14, "constant": 14, "classvar": 14, "mappingproxi": 14, "encapsul": 17, "simplif": 17, "gen_gtkmm": [19, 20], "develop": 19, "python": 19, "readm": 19, "introduc": 19, "instruct": 19, "how": 19, "machin": 19, "mai": 19, "other": 19, "inform": 19, "befor": 19, "packag": [19, 21], "subpackag": [19, 21], "modul": [19, 21], "main": [19, 21], "next": 19, "environ": 19, "navig": 19, "releas": 19, "page": 19, "download": 19, "extract": 19, "archiv": 19, "To": 19, "follow": 19, "tar": 19, "xvzf": 19, "x": 19, "y": 19, "z": 19, "gz": 19, "cd": 19, "python3": 19, "wget": 19, "bootstrap": [19, 20], "pypa": 19, "io": 19, "get": 19, "pip": 19, "m": 19, "upgrad": 19, "setuptool": 19, "build": 19, "pip3": 19, "r": 19, "requir": [19, 20], "txt": 19, "isol": 19, "wheel": 19, "dist": 19, "py3": 19, "whl": 19, "rm": 19, "f": 19, "docker": 19, "imag": 19, "contain": 19, "librari": 19, "ats": 19, "util": 19, "app": 19, "script": 19, "oop": 19, "gen_gtkmm_command_definit": 19, "gen_gtkmm_command_executor": 19, "icommand_definit": 19, "icommand_executor": 19, "logo": 19, "scheme": 19, "json": 19, "templat": 19, "tgz": 19, "10": 19, "directori": 19, "44": 19, "automat": 19, "scaffold": 19, "make": 19, "modular": 19, "extens": 19, "architectur": 19, "solid": 19, "principl": 19, "includ": 19, "support": 19, "via": 19, "executor": 19, "robust": 19, "come": 19, "schema": 19, "definit": 19, "high": 19, "qualiti": 19, "full": 19, "100": 19, "unit": 19, "test": 19, "name": 19, "stmt": 19, "miss": 19, "cover": 19, "8": 19, "0": 19, "9": 19, "14": 19, "27": 19, "57": 19, "39": 19, "22": 19, "36": 19, "18": 19, "35": 19, "26": 19, "15": 19, "24": 19, "43": 19, "16": 19, "21": 19, "13": 19, "55": 19, "23": 19, "19": 19, "48": 19, "34": 19, "12": 19, "32": 19, "total": 19, "927": 19, "prepar": 19, "entri": [19, 20], "point": [19, 20], "own": 19, "o": 19, "raw": 19, "githubusercont": 19, "electux": 19, "new": 19, "mytool": 19, "gtkmm4": 19, "output": 19, "demo": 19, "document": 19, "readthedoc": 19, "2025": 19, "github": 19, "same": 19, "itself": 19, "avail": 19, "let": 19, "help": 19, "psf": 19, "task": 20, "content": 21}, "objects": {"": [[0, 0, 0, "-", "gen_gtkmm"], [20, 0, 0, "-", "main"]], "gen_gtkmm": [[1, 0, 0, "-", "core"], [8, 0, 0, "-", "engine"], [9, 0, 0, "-", "setup"]], "gen_gtkmm.core": [[2, 0, 0, "-", "model"], [4, 0, 0, "-", "service"]], "gen_gtkmm.core.model": [[3, 0, 0, "-", "project_setup"]], "gen_gtkmm.core.model.project_setup": [[3, 1, 1, "", "ProjectSetup"]], "gen_gtkmm.core.model.project_setup.ProjectSetup": [[3, 2, 1, "", "chip_config"]], "gen_gtkmm.core.service": [[5, 0, 0, "-", "engine"], [6, 0, 0, "-", "iservice"], [7, 0, 0, "-", "isubprocessor"]], "gen_gtkmm.core.service.engine": [[5, 1, 1, "", "Service"]], "gen_gtkmm.core.service.engine.Service": [[5, 3, 1, "", "execute"], [5, 3, 1, "", "is_initialized"], [5, 2, 1, "", "subprocessor"]], "gen_gtkmm.core.service.iservice": [[6, 1, 1, "", "IService"]], "gen_gtkmm.core.service.iservice.IService": [[6, 2, 1, "", "_abc_impl"], [6, 2, 1, "", "_is_protocol"], [6, 2, 1, "", "_is_runtime_protocol"], [6, 3, 1, "", "execute"], [6, 3, 1, "", "is_initialized"]], "gen_gtkmm.core.service.isubprocessor": [[7, 1, 1, "", "ISubProcessor"]], "gen_gtkmm.core.service.isubprocessor.ISubProcessor": [[7, 2, 1, "", "_abc_impl"], [7, 2, 1, "", "_is_protocol"], [7, 2, 1, "", "_is_runtime_protocol"], [7, 3, 1, "", "is_initialized"], [7, 3, 1, "", "run"]], "gen_gtkmm.engine": [[8, 1, 1, "", "GenGtkmm"]], "gen_gtkmm.engine.GenGtkmm": [[8, 2, 1, "", "_cli"], [8, 2, 1, "", "_is_initialized"], [8, 2, 1, "", "_logger"], [8, 3, 1, "", "process"]], "gen_gtkmm.setup": [[10, 0, 0, "-", "bundle"], [11, 0, 0, "-", "dep_validator"], [12, 0, 0, "-", "dependencies"], [13, 0, 0, "-", "factory"], [14, 0, 0, "-", "keys"], [15, 0, 0, "-", "opt_validator"], [16, 0, 0, "-", "options"], [17, 0, 0, "-", "registry"], [18, 0, 0, "-", "validator"]], "gen_gtkmm.setup.bundle": [[10, 1, 1, "", "GenGtkmmBundle"]], "gen_gtkmm.setup.bundle.GenGtkmmBundle": [[10, 2, 1, "", "base"], [10, 2, 1, "", "cli"], [10, 2, 1, "", "service"], [10, 2, 1, "", "subprocessor"], [10, 3, 1, "", "to_dict"]], "gen_gtkmm.setup.dep_validator": [[11, 1, 1, "", "GenGtkmmBundleDependenciesValidator"]], "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator": [[11, 3, 1, "", "is_valid"], [11, 3, 1, "", "validate"]], "gen_gtkmm.setup.dependencies": [[12, 1, 1, "", "GenGtkmmBundleDependencies"]], "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies": [[12, 2, 1, "", "base"], [12, 2, 1, "", "cli"], [12, 2, 1, "", "service"], [12, 2, 1, "", "subprocessor"]], "gen_gtkmm.setup.factory": [[13, 1, 1, "", "GenGtkmmBundleFactory"]], "gen_gtkmm.setup.factory.GenGtkmmBundleFactory": [[13, 2, 1, "", "_info_file"], [13, 3, 1, "", "create_bundle"], [13, 3, 1, "", "get_version"]], "gen_gtkmm.setup.keys": [[14, 1, 1, "", "GenGtkmmBundleKeys"]], "gen_gtkmm.setup.keys.GenGtkmmBundleKeys": [[14, 2, 1, "", "DEPENDENCY_BASE"], [14, 2, 1, "", "DEPENDENCY_CLI"], [14, 2, 1, "", "DEPENDENCY_SERVICE"], [14, 2, 1, "", "DEPENDENCY_SUBPROCESSOR"], [14, 2, 1, "", "OPTION_INFO_FILE"], [14, 3, 1, "", "get_dependency_to_type"], [14, 3, 1, "", "get_option_to_type"]], "gen_gtkmm.setup.opt_validator": [[15, 1, 1, "", "GenGtkmmBundleOptionsValidator"]], "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator": [[15, 3, 1, "", "is_valid"], [15, 3, 1, "", "validate"]], "gen_gtkmm.setup.options": [[16, 1, 1, "", "GenGtkmmBundleOptions"]], "gen_gtkmm.setup.options.GenGtkmmBundleOptions": [[16, 2, 1, "", "info_file"]], "gen_gtkmm.setup.registry": [[17, 1, 1, "", "GenGtkmmBundleRegistry"]], "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry": [[17, 3, 1, "", "create_bundle"], [17, 3, 1, "", "get_version"]], "gen_gtkmm.setup.validator": [[18, 1, 1, "", "GenGtkmmBundleValidator"]], "gen_gtkmm.setup.validator.GenGtkmmBundleValidator": [[18, 3, 1, "", "is_valid"], [18, 3, 1, "", "validate"]], "main": [[20, 4, 1, "", "main"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen_gtkmm": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21], "packag": [0, 1, 2, 4, 9], "subpackag": [0, 1], "submodul": [0, 2, 4, 9], "modul": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "content": [0, 1, 2, 4, 9, 19], "core": [1, 2, 3, 4, 5, 6, 7], "model": [2, 3], "project_setup": 3, "servic": [4, 5, 6, 7], "engin": [5, 8], "iservic": 6, "isubprocessor": 7, "setup": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "bundl": 10, "dep_valid": 11, "depend": [12, 19], "factori": 13, "kei": 14, "opt_valid": 15, "option": 16, "registri": 17, "valid": 18, "creat": 19, "gtkmm": 19, "project": 19, "skeleton": 19, "instal": 19, "tool": 19, "structur": 19, "featur": 19, "code": 19, "coverag": 19, "usag": 19, "doc": 19, "contribut": 19, "copyright": 19, "licenc": 19, "main": 20}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"gen_gtkmm package": [[0, "gen-gtkmm-package"]], "Subpackages": [[0, "subpackages"], [1, "subpackages"]], "Submodules": [[0, "submodules"], [2, "submodules"], [4, "submodules"], [9, "submodules"]], "Module contents": [[0, "module-gen_gtkmm"], [1, "module-gen_gtkmm.core"], [2, "module-gen_gtkmm.core.model"], [4, "module-gen_gtkmm.core.service"], [9, "module-gen_gtkmm.setup"]], "gen_gtkmm.core package": [[1, "gen-gtkmm-core-package"]], "gen_gtkmm.core.model package": [[2, "gen-gtkmm-core-model-package"]], "gen_gtkmm.core.model.project_setup module": [[3, "module-gen_gtkmm.core.model.project_setup"]], "gen_gtkmm.core.service package": [[4, "gen-gtkmm-core-service-package"]], "gen_gtkmm.core.service.engine module": [[5, "module-gen_gtkmm.core.service.engine"]], "gen_gtkmm.core.service.iservice module": [[6, "module-gen_gtkmm.core.service.iservice"]], "gen_gtkmm.core.service.isubprocessor module": [[7, "module-gen_gtkmm.core.service.isubprocessor"]], "gen_gtkmm.engine module": [[8, "module-gen_gtkmm.engine"]], "gen_gtkmm.setup package": [[9, "gen-gtkmm-setup-package"]], "gen_gtkmm.setup.bundle module": [[10, "module-gen_gtkmm.setup.bundle"]], "gen_gtkmm.setup.dep_validator module": [[11, "module-gen_gtkmm.setup.dep_validator"]], "gen_gtkmm.setup.dependencies module": [[12, "module-gen_gtkmm.setup.dependencies"]], "gen_gtkmm.setup.factory module": [[13, "module-gen_gtkmm.setup.factory"]], "gen_gtkmm.setup.keys module": [[14, "module-gen_gtkmm.setup.keys"]], "gen_gtkmm.setup.opt_validator module": [[15, "module-gen_gtkmm.setup.opt_validator"]], "gen_gtkmm.setup.options module": [[16, "module-gen_gtkmm.setup.options"]], "gen_gtkmm.setup.registry module": [[17, "module-gen_gtkmm.setup.registry"]], "gen_gtkmm.setup.validator module": [[18, "module-gen_gtkmm.setup.validator"]], "Create Gtkmm project skeleton": [[19, "create-gtkmm-project-skeleton"]], "Contents": [[19, null]], "\ud83d\ude80 Installation": [[19, "installation"]], "\ud83d\udce6 Dependencies": [[19, "dependencies"]], "\ud83d\udcc1 Tool structure": [[19, "tool-structure"]], "\u2728 Features": [[19, "features"]], "\ud83d\udcca Code coverage": [[19, "code-coverage"]], "Code coverage": [[19, "id1"]], "\ud83d\udee0 Usage": [[19, "usage"]], "\ud83d\udcda Docs": [[19, "docs"]], "\ud83d\udc65 Contributing": [[19, "contributing"]], "\ud83d\udcc4 Copyright and licence": [[19, "copyright-and-licence"]], "main module": [[20, "module-main"]], "gen_gtkmm": [[21, "gen-gtkmm"]]}, "indexentries": {"gen_gtkmm": [[0, "module-gen_gtkmm"]], "module": [[0, "module-gen_gtkmm"], [1, "module-gen_gtkmm.core"], [2, "module-gen_gtkmm.core.model"], [3, "module-gen_gtkmm.core.model.project_setup"], [4, "module-gen_gtkmm.core.service"], [5, "module-gen_gtkmm.core.service.engine"], [6, "module-gen_gtkmm.core.service.iservice"], [7, "module-gen_gtkmm.core.service.isubprocessor"], [8, "module-gen_gtkmm.engine"], [9, "module-gen_gtkmm.setup"], [10, "module-gen_gtkmm.setup.bundle"], [11, "module-gen_gtkmm.setup.dep_validator"], [12, "module-gen_gtkmm.setup.dependencies"], [13, "module-gen_gtkmm.setup.factory"], [14, "module-gen_gtkmm.setup.keys"], [15, "module-gen_gtkmm.setup.opt_validator"], [16, "module-gen_gtkmm.setup.options"], [17, "module-gen_gtkmm.setup.registry"], [18, "module-gen_gtkmm.setup.validator"], [20, "module-main"]], "gen_gtkmm.core": [[1, "module-gen_gtkmm.core"]], "gen_gtkmm.core.model": [[2, "module-gen_gtkmm.core.model"]], "projectsetup (class in gen_gtkmm.core.model.project_setup)": [[3, "gen_gtkmm.core.model.project_setup.ProjectSetup"]], "chip_config (gen_gtkmm.core.model.project_setup.projectsetup attribute)": [[3, "gen_gtkmm.core.model.project_setup.ProjectSetup.chip_config"]], "gen_gtkmm.core.model.project_setup": [[3, "module-gen_gtkmm.core.model.project_setup"]], "gen_gtkmm.core.service": [[4, "module-gen_gtkmm.core.service"]], "service (class in gen_gtkmm.core.service.engine)": [[5, "gen_gtkmm.core.service.engine.Service"]], "execute() (gen_gtkmm.core.service.engine.service method)": [[5, "gen_gtkmm.core.service.engine.Service.execute"]], "gen_gtkmm.core.service.engine": [[5, "module-gen_gtkmm.core.service.engine"]], "is_initialized() (gen_gtkmm.core.service.engine.service method)": [[5, "gen_gtkmm.core.service.engine.Service.is_initialized"]], "subprocessor (gen_gtkmm.core.service.engine.service attribute)": [[5, "gen_gtkmm.core.service.engine.Service.subprocessor"]], "iservice (class in gen_gtkmm.core.service.iservice)": [[6, "gen_gtkmm.core.service.iservice.IService"]], "_abc_impl (gen_gtkmm.core.service.iservice.iservice attribute)": [[6, "gen_gtkmm.core.service.iservice.IService._abc_impl"]], "_is_protocol (gen_gtkmm.core.service.iservice.iservice attribute)": [[6, "gen_gtkmm.core.service.iservice.IService._is_protocol"]], "_is_runtime_protocol (gen_gtkmm.core.service.iservice.iservice attribute)": [[6, "gen_gtkmm.core.service.iservice.IService._is_runtime_protocol"]], "execute() (gen_gtkmm.core.service.iservice.iservice method)": [[6, "gen_gtkmm.core.service.iservice.IService.execute"]], "gen_gtkmm.core.service.iservice": [[6, "module-gen_gtkmm.core.service.iservice"]], "is_initialized() (gen_gtkmm.core.service.iservice.iservice method)": [[6, "gen_gtkmm.core.service.iservice.IService.is_initialized"]], "isubprocessor (class in gen_gtkmm.core.service.isubprocessor)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor"]], "_abc_impl (gen_gtkmm.core.service.isubprocessor.isubprocessor attribute)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor._abc_impl"]], "_is_protocol (gen_gtkmm.core.service.isubprocessor.isubprocessor attribute)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor._is_protocol"]], "_is_runtime_protocol (gen_gtkmm.core.service.isubprocessor.isubprocessor attribute)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor._is_runtime_protocol"]], "gen_gtkmm.core.service.isubprocessor": [[7, "module-gen_gtkmm.core.service.isubprocessor"]], "is_initialized() (gen_gtkmm.core.service.isubprocessor.isubprocessor method)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor.is_initialized"]], "run() (gen_gtkmm.core.service.isubprocessor.isubprocessor method)": [[7, "gen_gtkmm.core.service.isubprocessor.ISubProcessor.run"]], "gengtkmm (class in gen_gtkmm.engine)": [[8, "gen_gtkmm.engine.GenGtkmm"]], "_cli (gen_gtkmm.engine.gengtkmm attribute)": [[8, "gen_gtkmm.engine.GenGtkmm._cli"]], "_is_initialized (gen_gtkmm.engine.gengtkmm attribute)": [[8, "gen_gtkmm.engine.GenGtkmm._is_initialized"]], "_logger (gen_gtkmm.engine.gengtkmm attribute)": [[8, "gen_gtkmm.engine.GenGtkmm._logger"]], "gen_gtkmm.engine": [[8, "module-gen_gtkmm.engine"]], "process() (gen_gtkmm.engine.gengtkmm method)": [[8, "gen_gtkmm.engine.GenGtkmm.process"]], "gen_gtkmm.setup": [[9, "module-gen_gtkmm.setup"]], "gengtkmmbundle (class in gen_gtkmm.setup.bundle)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle"]], "base (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.base"]], "cli (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.cli"]], "gen_gtkmm.setup.bundle": [[10, "module-gen_gtkmm.setup.bundle"]], "service (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.service"]], "subprocessor (gen_gtkmm.setup.bundle.gengtkmmbundle attribute)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.subprocessor"]], "to_dict() (gen_gtkmm.setup.bundle.gengtkmmbundle method)": [[10, "gen_gtkmm.setup.bundle.GenGtkmmBundle.to_dict"]], "gengtkmmbundledependenciesvalidator (class in gen_gtkmm.setup.dep_validator)": [[11, "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator"]], "gen_gtkmm.setup.dep_validator": [[11, "module-gen_gtkmm.setup.dep_validator"]], "is_valid() (gen_gtkmm.setup.dep_validator.gengtkmmbundledependenciesvalidator class method)": [[11, "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator.is_valid"]], "validate() (gen_gtkmm.setup.dep_validator.gengtkmmbundledependenciesvalidator class method)": [[11, "gen_gtkmm.setup.dep_validator.GenGtkmmBundleDependenciesValidator.validate"]], "gengtkmmbundledependencies (class in gen_gtkmm.setup.dependencies)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies"]], "base (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.base"]], "cli (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.cli"]], "gen_gtkmm.setup.dependencies": [[12, "module-gen_gtkmm.setup.dependencies"]], "service (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.service"]], "subprocessor (gen_gtkmm.setup.dependencies.gengtkmmbundledependencies attribute)": [[12, "gen_gtkmm.setup.dependencies.GenGtkmmBundleDependencies.subprocessor"]], "gengtkmmbundlefactory (class in gen_gtkmm.setup.factory)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory"]], "_info_file (gen_gtkmm.setup.factory.gengtkmmbundlefactory attribute)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory._info_file"]], "create_bundle() (gen_gtkmm.setup.factory.gengtkmmbundlefactory class method)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory.create_bundle"]], "gen_gtkmm.setup.factory": [[13, "module-gen_gtkmm.setup.factory"]], "get_version() (gen_gtkmm.setup.factory.gengtkmmbundlefactory class method)": [[13, "gen_gtkmm.setup.factory.GenGtkmmBundleFactory.get_version"]], "dependency_base (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_BASE"]], "dependency_cli (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_CLI"]], "dependency_service (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_SERVICE"]], "dependency_subprocessor (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.DEPENDENCY_SUBPROCESSOR"]], "gengtkmmbundlekeys (class in gen_gtkmm.setup.keys)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys"]], "option_info_file (gen_gtkmm.setup.keys.gengtkmmbundlekeys attribute)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.OPTION_INFO_FILE"]], "gen_gtkmm.setup.keys": [[14, "module-gen_gtkmm.setup.keys"]], "get_dependency_to_type() (gen_gtkmm.setup.keys.gengtkmmbundlekeys class method)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.get_dependency_to_type"]], "get_option_to_type() (gen_gtkmm.setup.keys.gengtkmmbundlekeys class method)": [[14, "gen_gtkmm.setup.keys.GenGtkmmBundleKeys.get_option_to_type"]], "gengtkmmbundleoptionsvalidator (class in gen_gtkmm.setup.opt_validator)": [[15, "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator"]], "gen_gtkmm.setup.opt_validator": [[15, "module-gen_gtkmm.setup.opt_validator"]], "is_valid() (gen_gtkmm.setup.opt_validator.gengtkmmbundleoptionsvalidator class method)": [[15, "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator.is_valid"]], "validate() (gen_gtkmm.setup.opt_validator.gengtkmmbundleoptionsvalidator class method)": [[15, "gen_gtkmm.setup.opt_validator.GenGtkmmBundleOptionsValidator.validate"]], "gengtkmmbundleoptions (class in gen_gtkmm.setup.options)": [[16, "gen_gtkmm.setup.options.GenGtkmmBundleOptions"]], "gen_gtkmm.setup.options": [[16, "module-gen_gtkmm.setup.options"]], "info_file (gen_gtkmm.setup.options.gengtkmmbundleoptions attribute)": [[16, "gen_gtkmm.setup.options.GenGtkmmBundleOptions.info_file"]], "gengtkmmbundleregistry (class in gen_gtkmm.setup.registry)": [[17, "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry"]], "create_bundle() (gen_gtkmm.setup.registry.gengtkmmbundleregistry class method)": [[17, "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry.create_bundle"]], "gen_gtkmm.setup.registry": [[17, "module-gen_gtkmm.setup.registry"]], "get_version() (gen_gtkmm.setup.registry.gengtkmmbundleregistry class method)": [[17, "gen_gtkmm.setup.registry.GenGtkmmBundleRegistry.get_version"]], "gengtkmmbundlevalidator (class in gen_gtkmm.setup.validator)": [[18, "gen_gtkmm.setup.validator.GenGtkmmBundleValidator"]], "gen_gtkmm.setup.validator": [[18, "module-gen_gtkmm.setup.validator"]], "is_valid() (gen_gtkmm.setup.validator.gengtkmmbundlevalidator class method)": [[18, "gen_gtkmm.setup.validator.GenGtkmmBundleValidator.is_valid"]], "validate() (gen_gtkmm.setup.validator.gengtkmmbundlevalidator class method)": [[18, "gen_gtkmm.setup.validator.GenGtkmmBundleValidator.validate"]], "main": [[20, "module-main"]], "main() (in module main)": [[20, "main.main"]]}}) \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index 6012a0b..229dadf 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,17 +11,17 @@ other information that should be provided before the tool is installed. |gen_gtkmm python checker| |gen_gtkmm python package| |github issues| |documentation status| |github contributors| -.. |gen_gtkmm python checker| image:: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml/badge.svg - :target: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml +.. |gen_gtkmm python checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python_checker.yml -.. |gen_gtkmm python package| image:: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml/badge.svg - :target: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_package.yml +.. |gen_gtkmm python package| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_package_checker.yml -.. |github issues| image:: https://img.shields.io/github/issues/vroncevic/gen_gtkmm.svg - :target: https://github.com/vroncevic/gen_gtkmm/issues +.. |github issues| image:: https://img.shields.io/github/issues/electux/gen_gtkmm.svg + :target: https://github.com/electux/gen_gtkmm/issues -.. |github contributors| image:: https://img.shields.io/github/contributors/vroncevic/gen_gtkmm.svg - :target: https://github.com/vroncevic/gen_gtkmm/graphs/contributors +.. |github contributors| image:: https://img.shields.io/github/contributors/electux/gen_gtkmm.svg + :target: https://github.com/electux/gen_gtkmm/graphs/contributors .. |documentation status| image:: https://readthedocs.org/projects/gen-gtkmm/badge/?version=latest :target: https://gen-gtkmm.readthedocs.io/en/latest/?badge=latest @@ -36,14 +36,28 @@ other information that should be provided before the tool is installed. 🚀 Installation ------------------ -|gen_gtkmm python3 build| +Used next development environment -.. |gen_gtkmm python3 build| image:: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml/badge.svg - :target: https://github.com/vroncevic/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml +.. image:: https://raw.githubusercontent.com/electux/gen_gtkmm/dev/docs/debtux.png + :alt: debian linux os + +|gen_gtkmm python3 build| |gen_gtkmm interface checker| |gen_gtkmm isp checker| |gen_gtkmm srp checker| + +.. |gen_gtkmm python3 build| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_python3_build.yml + +.. |gen_gtkmm interface checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_interface_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_interface_checker.yml + +.. |gen_gtkmm isp checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_isp_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_isp_checker.yml + +.. |gen_gtkmm srp checker| image:: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_srp_checker.yml/badge.svg + :target: https://github.com/electux/gen_gtkmm/actions/workflows/gen_gtkmm_srp_checker.yml Navigate to release `page`_ download and extract release archive. -.. _page: https://github.com/vroncevic/gen_gtkmm/releases +.. _page: https://github.com/electux/gen_gtkmm/releases To install **gen_gtkmm** type the following @@ -145,7 +159,7 @@ Tool structure ✨ Features ------------- -* Automatically scaffolds UI Gtkmm projects with build/make files. +* Automatically scaffolds Gtkmm projects with build/make files. * Provides a modular and extensible architecture based on OOP and SOLID principles. * Includes command line interface (CLI) support via a command/executor structure. * Robust validation of project bundles, dependencies, and options. @@ -169,11 +183,11 @@ Install package pip3 install gen_gtkmm -Prepare main entry point by downloading `main.py` or create your own. +Prepare main entry point by downloading `main.py `_ or create your own. .. code-block:: bash - wget -O main.py https://raw.githubusercontent.com/vroncevic/gen_gtkmm/main/main.py + wget -O main.py https://raw.githubusercontent.com/electux/gen_gtkmm/main/main.py Running tool for creating new Gtkmm project skeleton @@ -192,15 +206,34 @@ More documentation and info at 👥 Contributing ----------------- -`Contributing to gen_gtkmm `_ +`Contributing to gen_gtkmm `_ 📄 Copyright and licence -------------------------- -Copyright (C) 2025 - 2026 by `vroncevic.github.io/gen_gtkmm `_ +|gpl v3 license| |apache 2.0 license| + +Copyright (C) 2025 - 2026 by `electux.github.io/gen_gtkmm `_ **gen_gtkmm** is free software; you can redistribute it and/or modify it under the same terms as Python itself, either Python version 3.x or, at your option, any later version of Python 3 you may have available. Lets help and support PSF. + +|psf logo| + +|donate| + +.. |gpl v3 license| image:: https://img.shields.io/badge/License-GPLv3-blue.svg + :target: https://www.gnu.org/licenses/gpl-3.0 + +.. |apache 2.0 license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg + :target: https://opensource.org/licenses/Apache-2.0 + +.. |psf logo| image:: https://raw.githubusercontent.com/electux/gen_gtkmm/dev/docs/psf-logo-alpha.png + :target: https://www.python.org/psf/ + +.. |donate| image:: https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif + :target: https://www.python.org/psf/donations/ +