From d530c8d33378b39f3102e2904f991a131f8e42a9 Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Fri, 23 Jun 2023 14:39:25 -0700 Subject: [PATCH] added more information, improved structure --- Gemfile | 2 +- Gemfile.lock | 2 +- _config.yml | 6 ++- _includes/custom-head.html | 9 +++++ assets/android-chrome-96x96.png | Bin 0 -> 2427 bytes assets/apple-touch-icon.png | Bin 0 -> 3086 bytes assets/browserconfig.xml | 9 +++++ assets/favicon-16x16.png | Bin 0 -> 635 bytes assets/favicon-32x32.png | Bin 0 -> 934 bytes assets/favicon.ico | Bin 0 -> 7406 bytes assets/mstile-150x150.png | Bin 0 -> 4531 bytes assets/safari-pinned-tab.svg | 34 ++++++++++++++++ assets/site.webmanifest | 14 +++++++ gettingstarted.md => gi/gettingstarted.md | 2 +- gi/index.md | 13 ++++++ install.md => gi/install.md | 2 +- index.md | 46 ++++++++++++---------- ki.md | 7 ++++ 18 files changed, 120 insertions(+), 26 deletions(-) create mode 100644 _includes/custom-head.html create mode 100644 assets/android-chrome-96x96.png create mode 100644 assets/apple-touch-icon.png create mode 100644 assets/browserconfig.xml create mode 100644 assets/favicon-16x16.png create mode 100644 assets/favicon-32x32.png create mode 100644 assets/favicon.ico create mode 100644 assets/mstile-150x150.png create mode 100644 assets/safari-pinned-tab.svg create mode 100644 assets/site.webmanifest rename gettingstarted.md => gi/gettingstarted.md (98%) create mode 100644 gi/index.md rename install.md => gi/install.md (98%) create mode 100644 ki.md diff --git a/Gemfile b/Gemfile index a55c70e..252b5c1 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ source "https://rubygems.org" # gem "jekyll", "~> 4.3.2" gem "github-pages", "~> 228", group: :jekyll_plugins # This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.5" +gem "minima", "~> 2.5.0" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. # gem "github-pages", group: :jekyll_plugins diff --git a/Gemfile.lock b/Gemfile.lock index cc62c15..3b09539 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -259,7 +259,7 @@ DEPENDENCIES github-pages (~> 228) http_parser.rb (~> 0.6.0) jekyll-feed (~> 0.12) - minima (~> 2.5) + minima (~> 2.5.0) tzinfo (>= 1, < 3) tzinfo-data wdm (~> 0.1.1) diff --git a/_config.yml b/_config.yml index a27170f..9a12882 100644 --- a/_config.yml +++ b/_config.yml @@ -34,8 +34,10 @@ plugins: header_pages: - - install.md - - gettingstarted.md + - ki.md + - gi/index.md + - gi/install.md + - gi/gettingstarted.md # Exclude from processing. # The following items will not be processed, by default. diff --git a/_includes/custom-head.html b/_includes/custom-head.html new file mode 100644 index 0000000..058f650 --- /dev/null +++ b/_includes/custom-head.html @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/android-chrome-96x96.png b/assets/android-chrome-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..07c68d2795bf943b42aa6adfa83cb15ff4d60593 GIT binary patch literal 2427 zcmZ`*X;>2I7XE+)mDF-c#SI5DT2uyeTyjCwL>-jea$GSLa|M+kx1{1uIck_@i=>%4 zZl!6NDUQL|=5FS`NpW{pkVnY_02EwEj-FDa z{_C>R0A7i)b5ht9X-~EXpn-?n3YC%8=rEEe8GsZ+061I#Hl!`iKLDJ;0q~IufYnU^ z)ET!0C#*|Z%wPWxsQ=gb*)x13h4|>ZWt5dn^o$)M5@%IEt z!V|;P2eCy7{(X8bed~RaZE0wkS?|j|c^ zt6(GE!ckMHsfvt;IwbeZUZ?apV5#_cRea+W*sNHIgq)m&h;L(kvwByZ#V1-)7xOe9Dnc_wz1MlF~$tZIvTki^S^O#{w4 z-Cbi`izutV8@&7p;;o3BFFR%+Voq+l66W++ErGDvfkuVq(_7YrmI4)zVpvai#@N(hskPa_u(n!3A#8XYjPSpgn*19rhFAC$0Q$B9!)(VK^qz!7*<(>X0WmN^u+D{L_Z)GZ7G=RO@o-%L_*5w@ z9r6G#I)8+Iv?2AlD4F+6QJqdPLxfNExtuyre#PlaE=kiL=X%yz!petXFlETiXO&RK3(k@FXcZi z))zh@U!6L%S^1d}lFca_pPK%$fWge_{MKl0NElRJ<#`yfjP)hcegMOtb&g? ztrl-Uy4+Y#f6^dNJ~DmVcxFxj(d(^zXt=Q^7|mr-GDk4-e{~(gE6NomHgVr1jUqlR z*WWD8PT5u_%I?rB8|owiuo5nwSG*hWt6sj!x3$Xa9_ghK*URJk2YC@L0Vd5f7q9Lz zZHuKF@i{4Mx$CA)p0i+nVt(T==3MH#t#$*IJ9TF-q5M;(ni^YvKUjF)sk!6*{c~-h zvF*IrOq0N`1<7~bHMg?9G2 zgjt{}8M=80X_Pn`<}8CtA1`{L`S9LyM`|$jvwhKGh|w$ECD0MjfbF-YBz^eg{lE_t?t=!`rMTsS54|PgPZlX4_=T_M!_Pmz+_Iivr5X!!DNhiJqaGGai^@(@?4mZnP zo93HcX=Afb`Q`=L`C)}C(Aa=@xyPg|@on4*O!;e6HXY)poqXZ&#zl3aY^01xzSg95 z1>!fW{=?aB?JD@(aMWIhd?w<7`%|6EA=TS`_p5;e0p}gKxGQgk5*3`$e9y@aJ*)tA za%&_L<@mlC#YNz^M-UC0Kt1hNQcy^F!KL5~XrmXSavxB9r~`v}9MEyfx*q4a#-vC%9Dazy+L9ET_moe0!G zp1J0#%!DlO6o^FSB zC>?=?zkg|eIiM;=FXnID+1ADmhd54DM6?Ea-W7_vqzv)&f>^b3vWe-0XqI~RonqNL zc^P(#GV%U3eZlbDuKR=~r<~wfEY9wPUapzaU(fRI{@NEr<}BU&(;TkP-E-y^kc23n zTlii_R<57!z--1J7S#|G7wN$6?is{Mc9l|0RuP&Kaq=oSBGA4Gu{*~&4J8?v_EZ- z_iZkAO=i8>z0Jc>w)#HK*3R0F<7>aT`IusY&;F3;C7d){Y%qu%`x&mpXY74?FMami z+!6kkUd@hrzoj`a2RmX;25dpSQ>PjVpOroV`lGkxq+>jX*P#84>6x1~UwRv$tngcgrUDVzFHw z-90Yzo&bhH8iyfOFe+~OsxTF_Bj@O|a2V#1H@bUlsN;FhbM5DdZVsu$)fjwK-^*Mj RniWVTfQys6V;zxt;lJi|Ej0iD literal 0 HcmV?d00001 diff --git a/assets/apple-touch-icon.png b/assets/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..075bd4931ee1ef1d2a142daceb08bedb54d2c1d5 GIT binary patch literal 3086 zcmZ`*SvVAI8-B+a`;xM!jJ4Hd$zTvkA)l-<-`KMZjTnqAO(s#YR6^OZRV2$G`;y7N zGnVWO*^RZ&p8URp|KLCP51!|Kw)?t|p6j|_7~Rp~WD{ls0C4K*YMUIR|G&X%b5CHa%N2CP+d}IMwvI77W4}btZxzbqe zc)@T_Uq>4pJ%80vd)%?&b^rDT0HN}4K<+or7#$Cp33>)Mndg}Vc$pOKak_CI?w^2Eukr`w~~U3`Qrkm#uH4(5E=>bEA3A z=K)XN_l5io8|tQ(bQUgoOe0S~OHP|UgWL%l))4GjNjICSVfsX$Mwh$S8q*tZ&oiU0 z--5PRD<%&g?>w5{dcS66uznb}5;)Bj%>4Z+?fUu=T)F8@DGNvwN@WYd23B$QJgpft zW)wZD`|t$0`4DSp+_z-DcSmn95)ivf!9uphJckwQr6TdpDX)s@v-E`vDgoGx_E|5L z_w}|ed|JDrf8i^vN?rM&iACl=D{lcE`)*U6vj;uQX;D^qi_0g*#?zrUnDYyy)`umE zAQ5N8JcwV{``kewwO*qH;(wn&vcEuuDe2;yWH|xxpl*wSV*FiACba@#RPoqis-Kit2n)K@DP0tkB*4CKR%l`Tv zA9`&i@GN)`P(75@uzt&!&jEg0WNzZm~aH9yVRV!lxf!zVFj z!Orfsuu}}WqmVd}bH-NnO?F(pN7=Tt**_!zu6z`ZQ3+ZeF+jgyD4L{|qfzK5+6xuc z!(#K~E}z(G1~X@ji?Xa7f<8rx>ct<;8z&Nb4M4KZkDd=x>inR%V~XnIGiWoMq;NJ+ znY|@miI>D(2CEY;;RIdcB|P^b9GcswYV{#K(i3c?`I5PUCLUJAKnAN)`@^0@~hs3K|g2BpBQ zX_oi;uDdeCPBiB#5e?R;kRlFi-?mP$Yoj3sUbY70^yfPp@zKfs5HC)ezVl1y2_Fw1 zsEDf6_i%o`0qw&Jkk_gmM#?_Vm}rMsK1!hic==`_cx!wd%s30P{dAA++f1;iN~`MP zc5zj?Pt+HxJ_l%BiY2uEMJ`glVHu?r1uU~oJJaO-EdU%BlHD(t12=QxZpKNW6^o4e z*`2Lmj1dxb*_T#zsSx$d(#YT1oFW$4!HOlto@po$)-Z+e4saj>N=gd#kruPt-p1|i z*zeSLN410)SV7Oh1AgnHdF9TZ;m7BGkpc z?DN`1?W(VfT4g(To{w@71!#TVZn61Q>xWJWLn-c2*M@ck&fTzG(n;TXg)q@rFu$6` z!IdxcY#Ct~bnyVIwP!P{7Ad~l!|gT_>#;w$=g%=h?!F~3wvmJ`ddHo{i;mSAYqvIr z)hfo8he8u`YwPv?G}-Zfx4iwL;-=V#B5#Imp>r9``Kf&MpUGzTH{FF-VSiknJT{tS&Kxe$3(SD#S3~l1&3}f|GDSqZyKh420kY5jF=Pn0 zo3a)$Z2M&lm?v)6Z{¨zXPU-$;ENh#%mHH_hqd%P8Vlv4E-u!VBi(JWnApQ*1{E z^;!8M{)K|FZM>%&%-)&k^1Pknbl^RyF%R=oLp;gvuKJ z%l^t+IO*2vM^D#M@4HD|Ez%bQvN|xod=b|D;+GZ$jo+p#nTy1+!oqEmsbx{!9kE*_ zhL3!LZs4-Y^6YmG<^4XY=gO~~PNa*byP@gDvx-}tom+|?k=$E7siE&GZ16N575tld zQLY`xA>G#L4Kl0ur2nX+p5Egnv(M3ws>m@VZA3EnuI*+AVk?2`>5I(gpg?8=Lqn>= zD_A1}n{TWyiw`%ivEL$%VsT)Dy(28oi6rCe9syfVqVm5(>iMv>su8C^NV9?p{|1gPn%R*ru`4a%)iXTqgnbZfzcXtQFnc&)Pv= z)Pb0kw$p9fn&;MgRL?QNXFcYG*M`{buI$;Tru$7mhF|#~5gACsF&%*(mQU0HA%x4l zPN^2fNc%RPcmF7O`fsS_bm!unm&{G*!qU|zs7F((*gFG@EDVj#r@St^dx zCL+hrm&^oLl*_OZ(a3;0Iwn!BX^`FuGNh_Jc<6%WZ_7x9!o`poR&Fj(JI9pP0k46j zy*oKg4l#LW`XNnH8J8dCfUqb!@1MIiq@fJSQ|Lco>pbNLnU@qbafj1_n$gp(;ooD) zsu})Y)x@j+@rn_4&l2r9?X$SwD-N+Ee^F*KvV*u8{$Mm(lM@J>bbIr*-WC=*qAVo@ zFIVE_9Z5#KYo85YRAZoZSaj|{xrU!HzeK7bii64u}O_J~QdDiB)XRXxs2xY+v7wAoY4F6Wo5om@8GUkj<#?HIKg>Na9?_l>~VeRcc+b6K_qP*H&WvV@Toym&L8YIce>b%6L00LU?##lUCJ) zkB=-KnxP3M_I_}@mxr^fn-iQ6fOmqs;t3ANHa+?0CI^eB`T6s0hV31CvnBv4!H#fX zKP7QWKZX~23a(AMTJH#z_-Y1kAL?&u=x7jWU~VVrrrkz>B>^77rj}ydu>{b&c}F{6 H%P#mo+4s5X literal 0 HcmV?d00001 diff --git a/assets/browserconfig.xml b/assets/browserconfig.xml new file mode 100644 index 0000000..56836be --- /dev/null +++ b/assets/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/assets/favicon-16x16.png b/assets/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..45f01715f730fdfef4688f990d2c8533661d473b GIT binary patch literal 635 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UASkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY0t>0)3IFPO6{&;}^Ml;rL1!tlSn|IB_MkF&rd zvY3HE&k}?gvyMIq01C2~c>21sKW7scVOM!umb45g^vu)6F+}2WY`>v5Q=v@T{QvX4 zC-2q?EehV+I7xRc8}5fCb5f0 z;tx-p@czdqJN`XhKjfJkGMK z+hpVREvLQ(R++LcV3}d}{U^fDbhPx7xH@|MBgwqKYm#-D_SnYGsFwY^RC%j6tANWR{mE+rJ?8Xzoo3ip`eE<< zP@z3hKP4FUO}=>{>)${9FUS0MMscfo0e!4m;u=wsl30>zm0Xkxq!^40jEr>+%yf;6 zLyQcp49u;J&9n`G41?W@oHJ20sHgKi%N5 cz)O$emAGKZCnwXXKr0wLUHx3vIVCg!0GOTOx&QzG literal 0 HcmV?d00001 diff --git a/assets/favicon-32x32.png b/assets/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..df494609a3669bb5d0ec6f576c48ed48df0185ea GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*PVOS+@4BLl<6e(pbstRTr`k04(L zhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yLU`q0KcVYP7-hXC4kjGiz z5n0T@pl1ofj9EvY1ONruOFVsD*`KqCi?FM_ElXMk)FkNX;uvCaI{DA}26+R+fK?5w zoqyARtHy;{=?r- zPwL`GY~k&nqOyJ8HbI*&{~Oml=ii|*iSzrsofRER>gWCXeNQ{KEazdt*LFMM=KjCS zV)^S|E4s{-esHFoi!q5u#>?rFlGZ*BcOxa&YvyHXB2st7*JsNcfWV*GTZFSy{?0w7 z$}YHRR<*n*>mB>qN^yr~OfK60_c+I^+l}rIo916mTiAMd{`&p%+oKNpKGpp3wfo`s z>-P=fYi{rPXSm&Y63e8$Jo4A`DpkcK4jn!4;s5{XOnzqrw6AUG_YnN8H7oXbbl={u z@9W$C|4-kfZvXeUUFb6br+@Lb!KXgoUmp78-JkRy|Ifudz4!nB|M>XdEdd__TtEK< zawbK7`;(ryqgdDD;o~#rXAYg@FpsI6u=K!z11AogIC0?6hi|Jz9(QlmpC_THS@F$% zUSs3Kua$+CY-((B+tTZ&Zqt2q{eip2gY-TB=Qk#Pbv0*YYx}?c4C`;c_1$T&96ueg zGu@D9TUE%t=)!sVqoU$Sf#HW?-n8^Y{}F zM`4(T#wq{PXFQ(m_pwD+_y17GV}vaA`0(oWiWUIYi;~jVmXPoH-(Mg#C1b d#{w@shF9W(C7+y3rvj~D@O1TaS?83{1OPD9hFbst literal 0 HcmV?d00001 diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4cc977fedcfad763af5e193d855ba32f87bc2559 GIT binary patch literal 7406 zcmeHMXIK?k5Nj?%HgsLtb7U zyuH2g`|rQw;>C*?Hf$JPe)(l|c6K5oBLiQ4`6ZSwUyi`QK-|1}6B{;cKvGf?%*@R2 z_SBYXX2H_Z67RqNK6-n5 z@!M~|p{Aw=Q>RXazP>(Qdg&!>-MSU?=FNknqa(if;tL!(as&YZ0l0DF2G*}%kHo}8 zn3|g6t+(F7;>C;M=H`YUfBX?=&YVG5SQxalwD9b+&tlG;IT$r+6b>9XfWpE;T)A=u zYu2nmY-}vo#)f$9wbw9q>{xvB%{Mr4;sh!yD=}%(B&e#Y;?A8r*tBUAX3m@m3kwUp z_uhNhyLT_wcgEw_Uw_5<^XH+br-v6`d=VWT9hf_JE*u;j@cHMT!7vOaPo4}-O-(%W%ri(yNr8=x z4L$H&9O#02;6-^cdt+mW4}4OdrJeE(t5J#Kvb-&x#&PM>YY*};`c@4UD8LcxaHe!W7nKPRh*Yu%<* zp+=4ZC^#A|`+5=_`v7FeQV-2AK_42%(jyXRuq<9VXh zZlOiG>xDXrQ(OlB?67%y&X(|S;lX@vaPiJ|6SzytgnbEmj47B|il$B;y$#D)mK{;z zezqQ6aYErkrwtv~c-P1ikL8ia)n~ITcXG~x#Fu~OL@QV7%c0a)T_D}0o8tSwlCcmzAah4NZ6t9|5_tZMO1iYvMoWSogK*sWM!IbM?;>{A)JZ>vb*TwAAb4JT(# zv)$y7p-^OBacd~zJ==liZaGLQj49MNlL}e3cX-7Z89*+mI>>bmDYNt6EEOrbgGXl= zNuet>o=`qUg_`ctjhBXksDYtCKxG}jomK*H!e)!$|1-xiY*0uIhAC-oAYw_o|xUrvWYEdQ&uE} zm2-pRaO)lTp5(ypanN}^2zcPfCwGPzIY`_Dn988aJ}+gqpe$O3MV$(`ZXO5&0d4!L>rW(EG}wXH>KG$`QCHAp`v?U?3# z(t1f7B|V+y6w;z;ekHw=^itBaNe?G&m*#WQw`om6nl$OLqj0`Z{ULq{Wg3Od36D+oT1P?oK*? zTU#5iljr2*@LD;|?W8l4PEEQleMk7){(b_F+7sZuJ;|C=sJ%#xB!;?1g~zCl8|f28 zK;mRQ@4#?>ee>X;7>Xl}MZVJ}J!b5x=IlhVnWNT-F#jmK*k~_5iW7oIYa0&_7g>!m zai`cxCvKt+IpJ#b#Y@H7lMlF!rW<#{5CX*(73yI#-akSThTDwRFq#_gr6K^PL6!!7 o#{5-yEWps#!9{oI08jO?V=zojsCTi@OqwvoT!^Kdf49B<0c`TA=>Px# literal 0 HcmV?d00001 diff --git a/assets/mstile-150x150.png b/assets/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..d1250ce183997b135c499fed8c83712e155d114b GIT binary patch literal 4531 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 Xa + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + diff --git a/assets/site.webmanifest b/assets/site.webmanifest new file mode 100644 index 0000000..05b1b9e --- /dev/null +++ b/assets/site.webmanifest @@ -0,0 +1,14 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/assets/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/gettingstarted.md b/gi/gettingstarted.md similarity index 98% rename from gettingstarted.md rename to gi/gettingstarted.md index 1ff5325..79fc8d6 100644 --- a/gettingstarted.md +++ b/gi/gettingstarted.md @@ -1,7 +1,7 @@ --- layout: page title: Getting Started -permalink: /gettingStarted/ +permalink: /gi/gettingstarted --- _Note: this page assumes that you have already installed GoGi by completing the steps in [Install](/install)_ diff --git a/gi/index.md b/gi/index.md new file mode 100644 index 0000000..449d976 --- /dev/null +++ b/gi/index.md @@ -0,0 +1,13 @@ +--- +layout: page +title: Gi +permalink: /gi +--- + +Gi is a 2D and 3D GUI framework, built on GoKi, providing a fully native Go experience, built upon widely-used and familiar standards in the web (CSS-based styling and layout, SVG-based vector graphics) and other GUIs (e.g., the Qt Widget and model-view framework). + +Gi has feature parity (or better) compared to the industry standard Qt framework in most respects, including support for things like tooltips, fully-formatted HTML text with hypertext links, syntax-highlighted text display and full-featured editing, custom keymaps, color preferences (including light and dark mode), etc. The model-view framework uses reflection to render complex structured GUI elements like edit dialogs, tables, lists, choosers, etc based on standard Go structured types (`struct`, slices, `map`), including a `TreeView` based on `Ki` trees, with a full-featured `FileTree` and `FileTreeView` for file system trees. + +The 3D framework supports a standard scenegraph-based framework that can import standard Collada `.obj` files, and custom dynamic 3D display elements. This 3D scenegraph can be embedded anywhere in the 2D scenegraph, and another 2D scenegraph can also be embedded within that 3D scenegraph, allowing nicely rendered, complex 2D GUI controls to be embedded within 3D scenes. + +The [goki/gi github repository](https://github.com/goki/gi) has the code for GoGi. \ No newline at end of file diff --git a/install.md b/gi/install.md similarity index 98% rename from install.md rename to gi/install.md index 4d1f77f..a0c6854 100644 --- a/install.md +++ b/gi/install.md @@ -1,7 +1,7 @@ --- layout: page title: Install -permalink: /install/ +permalink: /gi/install --- 1. Install the platform-specific dependencies for your platform: diff --git a/index.md b/index.md index bdceedd..908151e 100644 --- a/index.md +++ b/index.md @@ -1,45 +1,51 @@ --- layout: home title: GoKi +permalink: / --- -[GoKi](https://github.com/goki/ki) is a tree package based on the `Ki` interface implemented by the `Node` struct, supporting arbitrary directed (no loops!) structural trees and standard operations thereon, for primary use in constructing the scenegraph in the GoGi GUI framework. It can also be used for representing file system trees, web DOM trees, or any other such structural tree, which are so commonly used to represent structured information. +GoKi is an open-source project that provides a set of frameworks for constructing cross-platform GUIs and other useful tools in pure Go using full-strength tree structures. The name GoKi is derived from the word tree in Japanese (木), which is pronounced Ki (き). -## GoGi +## Ki +The core package of GoKi is [Ki](/ki), which provides trees using the `Ki` interface implemented by the `Node` struct. This supports arbitrarily directed structural trees and standard operations on them. -[GoGi](https://github.com/goki/gi) is a 2D and 3D GUI framework, built on GoKi, providing a fully native Go experience, built upon widely-used and familiar standards in the web (CSS-based styling and layout, SVG-based vector graphics) and other GUIs (e.g., the Qt Widget and model-view framework). +## Gi +[Gi](/gi) is a pure Go 2D and 3D GUI framework, built on [Ki](/ki) and widely used standards in the web, like CSS for styling and SVG for vector graphics. -GoGi has feature parity (or better) compared to the industry standard Qt framework in most respects, including support for things like tooltips, fully-formatted HTML text with hypertext links, syntax-highlighted text display and full-featured editing, custom keymaps, color preferences (including light and dark mode), etc. The model-view framework uses reflection to render complex structured GUI elements like edit dialogs, tables, lists, choosers, etc based on standard Go structured types (`struct`, slices, `map`), including a `TreeView` based on `Ki` trees, with a full-featured `FileTree` and `FileTreeView` for file system trees. +## Gide +[Gide](/gide) is an IDE and IDE framework built using [Gi](/gi) and [Pi](/pi). It has standard editor features like syntax highlighting, completion, and version control built-in. -The 3D framework supports a standard scenegraph-based framework that can import standard Collada `.obj` files, and custom dynamic 3D display elements. This 3D scenegraph can be embedded anywhere in the 2D scenegraph, and another 2D scenegraph can also be embedded within that 3D scenegraph, allowing nicely rendered, complex 2D GUI controls to be embedded within 3D scenes. +## Pi +[Pi](/pi) is an interactive parsing library that uses a simple and robust form of lexing and parsing based on top-down recursive descent. -The https://github.com/goki github site has the repositories, full README and wiki docs, etc. +## vGPU -See the [GoGi Wiki](https://github.com/goki/gi/wiki) for more detailed documentation on the GoGi GUI. +[vGPU](/vgpu) is a Vulkan-based framework for both Graphics and Compute Engine use of GPU hardware in Go. -There are extensive `examples` demo applications showing and testing the GUI elements included in the GoGi repository, and the following major applications: +## GoSL -* The [emergent](https://EmerSim.org) neural network simulation system ([on github](https://github.com/emer/emergent)) uses 2D and 3D GoGi GUI elements to provide interactive control and visualization of complex neural models of the brain. These models can be run directly in Go, or via Python, and GoGi itself can be fully accessed directly through Python using the [GoPy](https://github.com/go-python/gopy) tool. +[GoSL](/gosl) implements Go as a shader language for GPU compute shaders by converting Go code to HLSL, and then using the glslc compiler to compile into an `.spv` SPIR-V file that can be loaded into a vulkan compute shader. -* [Gide](https://github.com/goki/gide) is a Go-based IDE (interactive development environment), which serves as the daily testing platform for GoGi, and features a strongly *emacs*-inspired design and functionality. It is not fancy, but everything can be accessed by keyboard shortcuts so it is very efficient once learned (and emacs users should be fluent right away). It has full knowledge of the Go language (via the [GoPi interactive parser](https://github.com/goki/pi)) and supports completion, lookup, interactive debugging via the [delve](https://github.com/go-delve/delve) debugger, etc. +## Grid +Grid is a Go SVG vector drawing program, built using Gi and based on Inkscape. -* [GoPix](https://github.com/gopix) is a picture viewing and organizing app, under development but currently usable for basic tasks. Its primary advantage is in providing full keyboard-based usability, and a generic file-based framework, that avoids any kind of lock-in into complex databases. For example, it creates symbolic links to create folders of selected images from the full collection of files, and it takes full advantage of the `exif` metadata to update and organize picture files. Image files can be systematically renamed by their date taken to avoid having a 100's of files all named `Image-1.jpg`. +## GoPix -* [Grid](https://github.com/goki/grid) is an interactive drawing program based on SVG vector-based format, like Inkscape. Inkscape has never worked very well on Mac, and is currently almost unusable due to extremely slow GUI rendering. Initial basic functionality is in place, with more complete features to be implemented gradually. +[GoPix](/gopix) is a Go picture management app. -* [Glide](https://github.com/gok/glide) will be a lightweight internet display engine (HTML renderer and web browser), using the GoGi scenegraph as the DOM. Because GoGi uses CSS natively and already supports HTML-based text formatting, basic functionality should be relatively easy. Only an idea and a name at this point. +## Mat32 -* [Grail](https://github.com/goki/grail) will be an email app, using Glide for HTML rendering of messages, featuring full keyboard-based navigation (emacs-style of course) and markup-based message formatting. Only an idea and a name at this point. +[Mat32](/mat32) is a float32 based vector and matrix package for 2D and 3D graphics that uses a value-based design. -These examples provide a decent codebase to see how to accomplish various things you might want to do. +**Coming Soon** -As of now, GoGi supports full functionality across the three major desktop platforms: Mac, Linux and Windows, but it should be portable to mobile platforms and wasm with a bit of work by an interested party. The vast majority of the system works directly on the standard Go `image.Image` interface, and it doesn't use any platform-specific widgets, so it is generally highly portable. +___ -# Screenshots +## Glide -![Screenshot of Widgets demo](/images/screenshot.png?raw=true "Screenshot of Widgets demo") +[Glide](/glide) will be a lightweight internet display engine (HTML renderer and web browser), built using Gi. -![Screenshot of Gi3D demo](/images/screenshot_gi3d.png?raw=true "Screenshot of Gi3D demo") +## Grail -![Screenshot of GiEditor, Dark mode](/images/screenshot_dark.png?raw=true "Screenshot of GiEditor, Dark Mode") +[Grail](/grail) will be an email app, using Glide for HTML rendering of messages, featuring full keyboard-based navigation and markup-based message formatting. diff --git a/ki.md b/ki.md new file mode 100644 index 0000000..0b68ddc --- /dev/null +++ b/ki.md @@ -0,0 +1,7 @@ +--- +layout: page +title: Ki +permalink: /ki +--- + +Ki is a tree package based on the `Ki` interface implemented by the `Node` struct, supporting arbitrarily directed structural trees and standard operations on them, for primary use in constructing the scenegraph in the [Gi](/gi) GUI framework. It can also be used for representing file system trees, web DOM trees, or any other such structural tree, which are so commonly used to represent structured information. \ No newline at end of file