From df332b0878926dd73110f1d15b39ce5d3480fa86 Mon Sep 17 00:00:00 2001 From: Obarrie <113312631+Obarrie@users.noreply.github.com> Date: Thu, 7 Dec 2023 21:40:14 -0500 Subject: [PATCH 01/14] Update conf.py --- conf.py | 110 -------------------------------------------------------- 1 file changed, 110 deletions(-) diff --git a/conf.py b/conf.py index fe5bb80..be93114 100644 --- a/conf.py +++ b/conf.py @@ -8,113 +8,3 @@ todo_include_todos = False -# # -- Project information ----------------------------------------------------- - -# project = 'Site Title' -# copyright = '2023, Your name' -# author = 'Your Name' - - - -# # ---------------------------------------------------------------------------- -# # Below here does not need to be edited for the lab -# # ---------------------------------------------------------------------------- - -# # -- General configuration --------------------------------------------------- - -# # Add any Sphinx extension module names here, as strings. They can be -# # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# # ones. - - -# # "sphinxext.rediraffe", - -# # Add any paths that contain templates here, relative to this directory. -# templates_path = ['_templates'] - -# # List of patterns, relative to source directory, that match files and -# # directories to ignore when looking for source files. -# # This pattern also affects html_static_path and html_extra_path. -# exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', "*import_posts*", -# "**/pandoc_ipynb/inputs/*", ".nox/*", "README.md", -# '_data','_pages','_people','_projects'] - - -# # -- Options for HTML output ------------------------------------------------- - -# # The theme to use for HTML and HTML Help pages. See the documentation for -# # a list of builtin themes. -# # -# html_theme = 'pydata_sphinx_theme' - -# import yaml -# with open ('info.yml','r') as f: -# html_context = yaml.safe_load(f) - - -# html_theme_options = { -# "github_url": "https://github.com/username/", -# "twitter_url": "https://twitter.com/username", -# "search_bar_text": "Search this site...", -# # "navbar_end": ["search-field.html"], -# } - -# # html_favicon = "_static/favicon.ico" -# # change this to change the site title -# html_title = project - -# # Add any paths that contain custom static files (such as style sheets) here, -# # relative to this directory. They are copied after the builtin static files, -# # so a file named "default.css" will overwrite the builtin "default.css". -# html_static_path = ['_static'] - -# # html_js_files = [ -# # 'slides.js', -# # ] -# # html_extra_path = ["feed.xml"] -# # map pages to which sidebar they should have -# # "page_file_name": ["list.html", "of.html", "sidebar.html", "files.html"] -# html_sidebars = { -# "index": ["hello.html"], -# "about": ["hello.html"], -# "resume": ["hello.html"], -# "news": ["hello.html", 'ablog/archives.html'], -# "news/**": ['ablog/postcard.html', 'ablog/recentposts.html', 'ablog/archives.html'], -# "blog": ['tagcloud.html', 'archives.html'], -# "blog/**": ['postcard.html', 'recentposts.html', 'archives.html'], -# "pechakucha":[] -# } - - -# blog_title = "Blog " -# blog_path = "news" -# blog_feed_length = 5 -# fontawesome_included = True -# blog_post_pattern = "news/*" -# post_redirect_refresh = 1 -# post_auto_image = 1 -# post_auto_excerpt = 2 - -# # Panels config -# panels_add_bootstrap_css = False - -# # MyST config -# myst_enable_extensions = [ -# # "amsmath", -# "colon_fence", -# "deflist", -# "dollarmath", -# "fieldlist", -# "html_admonition", -# "html_image", -# # "attrs_block", -# "replacements", -# "smartquotes", -# "strikethrough", -# "substitution", -# # "tasklist", -# ] - -# def setup(app): -# app.add_css_file("custom.css") -# # app.add_js_file("custom.js") From e0a89c524525d2d90bfa9d149db51c1810aa8129 Mon Sep 17 00:00:00 2001 From: Obarrie <113312631+Obarrie@users.noreply.github.com> Date: Thu, 7 Dec 2023 21:48:32 -0500 Subject: [PATCH 02/14] Update someotherfile.rst --- someotherfile.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/someotherfile.rst b/someotherfile.rst index 8b13789..f33e18c 100644 --- a/someotherfile.rst +++ b/someotherfile.rst @@ -1 +1,5 @@ - +..todolist:: + write code for pechakucha + Add to github + Make extension + From f151d084d61636b1e14c03f8818b60d4c43fa577 Mon Sep 17 00:00:00 2001 From: Obarrie <113312631+Obarrie@users.noreply.github.com> Date: Thu, 7 Dec 2023 21:49:02 -0500 Subject: [PATCH 03/14] Update someotherfile.rst --- someotherfile.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/someotherfile.rst b/someotherfile.rst index f33e18c..52f8321 100644 --- a/someotherfile.rst +++ b/someotherfile.rst @@ -1,4 +1,4 @@ -..todolist:: +.. todolist:: write code for pechakucha Add to github Make extension From 378995c97d802d0afc07d2462fe37dc909ad4a23 Mon Sep 17 00:00:00 2001 From: Obarrie <113312631+Obarrie@users.noreply.github.com> Date: Fri, 8 Dec 2023 14:06:06 -0500 Subject: [PATCH 04/14] Update conf.py --- conf.py | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/conf.py b/conf.py index be93114..bed8ac5 100644 --- a/conf.py +++ b/conf.py @@ -7,4 +7,115 @@ todo_include_todos = False +# -- Project information ----------------------------------------------------- + +project = 'Site Title' +copyright = '2023, Your name' +author = 'Your Name' + + + +# # ---------------------------------------------------------------------------- +# # Below here does not need to be edited for the lab +# # ---------------------------------------------------------------------------- + +# # -- General configuration --------------------------------------------------- + +# # Add any Sphinx extension module names here, as strings. They can be +# # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# # ones. + + +# # "sphinxext.rediraffe", + +# # Add any paths that contain templates here, relative to this directory. +# templates_path = ['_templates'] + +# # List of patterns, relative to source directory, that match files and +# # directories to ignore when looking for source files. +# # This pattern also affects html_static_path and html_extra_path. +# exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', "*import_posts*", +# "**/pandoc_ipynb/inputs/*", ".nox/*", "README.md", +# '_data','_pages','_people','_projects'] + + +# # -- Options for HTML output ------------------------------------------------- + +# # The theme to use for HTML and HTML Help pages. See the documentation for +# # a list of builtin themes. +# # +# html_theme = 'pydata_sphinx_theme' + +# import yaml +# with open ('info.yml','r') as f: +# html_context = yaml.safe_load(f) + + +# html_theme_options = { +# "github_url": "https://github.com/username/", +# "twitter_url": "https://twitter.com/username", +# "search_bar_text": "Search this site...", +# # "navbar_end": ["search-field.html"], +# } + +# # html_favicon = "_static/favicon.ico" +# # change this to change the site title +# html_title = project + +# # Add any paths that contain custom static files (such as style sheets) here, +# # relative to this directory. They are copied after the builtin static files, +# # so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# # html_js_files = [ +# # 'slides.js', +# # ] +# # html_extra_path = ["feed.xml"] +# # map pages to which sidebar they should have +# # "page_file_name": ["list.html", "of.html", "sidebar.html", "files.html"] +# html_sidebars = { +# "index": ["hello.html"], +# "about": ["hello.html"], +# "resume": ["hello.html"], +# "news": ["hello.html", 'ablog/archives.html'], +# "news/**": ['ablog/postcard.html', 'ablog/recentposts.html', 'ablog/archives.html'], +# "blog": ['tagcloud.html', 'archives.html'], +# "blog/**": ['postcard.html', 'recentposts.html', 'archives.html'], +# "pechakucha":[] +# } + + +# blog_title = "Blog " +# blog_path = "news" +# blog_feed_length = 5 +# fontawesome_included = True +# blog_post_pattern = "news/*" +# post_redirect_refresh = 1 +# post_auto_image = 1 +# post_auto_excerpt = 2 + +# # Panels config +# panels_add_bootstrap_css = False + +# # MyST config +# myst_enable_extensions = [ +# # "amsmath", +# "colon_fence", +# "deflist", +# "dollarmath", +# "fieldlist", +# "html_admonition", +# "html_image", +# # "attrs_block", +# "replacements", +# "smartquotes", +# "strikethrough", +# "substitution", +# # "tasklist", +# ] + +# def setup(app): +# app.add_css_file("custom.css") +# # app.add_js_file("custom.js") + From b47806f9128052c3e8b352e31e8fd3f0770bc09c Mon Sep 17 00:00:00 2001 From: Osman Barrie Date: Sat, 9 Dec 2023 17:47:54 -0500 Subject: [PATCH 05/14] got the demo working. --- conf.py | 216 ++++++++++++++++++++++++---------------------- dog.jpeg | Bin 0 -> 33643 bytes download.jpeg | Bin 0 -> 12436 bytes index.md | 7 +- somefile.rst | 24 +++++- someotherfile.rst | 13 ++- 6 files changed, 151 insertions(+), 109 deletions(-) create mode 100644 dog.jpeg create mode 100644 download.jpeg diff --git a/conf.py b/conf.py index bed8ac5..2672f3d 100644 --- a/conf.py +++ b/conf.py @@ -15,107 +15,121 @@ -# # ---------------------------------------------------------------------------- -# # Below here does not need to be edited for the lab -# # ---------------------------------------------------------------------------- - -# # -- General configuration --------------------------------------------------- - -# # Add any Sphinx extension module names here, as strings. They can be -# # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# # ones. - - -# # "sphinxext.rediraffe", - -# # Add any paths that contain templates here, relative to this directory. -# templates_path = ['_templates'] - -# # List of patterns, relative to source directory, that match files and -# # directories to ignore when looking for source files. -# # This pattern also affects html_static_path and html_extra_path. -# exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', "*import_posts*", -# "**/pandoc_ipynb/inputs/*", ".nox/*", "README.md", -# '_data','_pages','_people','_projects'] - - -# # -- Options for HTML output ------------------------------------------------- - -# # The theme to use for HTML and HTML Help pages. See the documentation for -# # a list of builtin themes. -# # -# html_theme = 'pydata_sphinx_theme' - -# import yaml -# with open ('info.yml','r') as f: -# html_context = yaml.safe_load(f) - - -# html_theme_options = { -# "github_url": "https://github.com/username/", -# "twitter_url": "https://twitter.com/username", -# "search_bar_text": "Search this site...", -# # "navbar_end": ["search-field.html"], -# } - -# # html_favicon = "_static/favicon.ico" -# # change this to change the site title -# html_title = project - -# # Add any paths that contain custom static files (such as style sheets) here, -# # relative to this directory. They are copied after the builtin static files, -# # so a file named "default.css" will overwrite the builtin "default.css". -# html_static_path = ['_static'] - -# # html_js_files = [ -# # 'slides.js', -# # ] -# # html_extra_path = ["feed.xml"] -# # map pages to which sidebar they should have -# # "page_file_name": ["list.html", "of.html", "sidebar.html", "files.html"] -# html_sidebars = { -# "index": ["hello.html"], -# "about": ["hello.html"], -# "resume": ["hello.html"], -# "news": ["hello.html", 'ablog/archives.html'], -# "news/**": ['ablog/postcard.html', 'ablog/recentposts.html', 'ablog/archives.html'], -# "blog": ['tagcloud.html', 'archives.html'], -# "blog/**": ['postcard.html', 'recentposts.html', 'archives.html'], -# "pechakucha":[] -# } - - -# blog_title = "Blog " -# blog_path = "news" -# blog_feed_length = 5 -# fontawesome_included = True -# blog_post_pattern = "news/*" -# post_redirect_refresh = 1 -# post_auto_image = 1 -# post_auto_excerpt = 2 - -# # Panels config -# panels_add_bootstrap_css = False - -# # MyST config -# myst_enable_extensions = [ -# # "amsmath", -# "colon_fence", -# "deflist", -# "dollarmath", -# "fieldlist", -# "html_admonition", -# "html_image", -# # "attrs_block", -# "replacements", -# "smartquotes", -# "strikethrough", -# "substitution", -# # "tasklist", -# ] +# -- Project information ----------------------------------------------------- + +project = 'Site Title' +copyright = '2023, Your name' +author = 'Your Name' + + + +# ---------------------------------------------------------------------------- +# Below here does not need to be edited for the lab +# ---------------------------------------------------------------------------- + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + #"myst_nb", + #"ablog", + 'sphinx.ext.intersphinx', + "sphinx_design", + #"sphinxext.opengraph", +] + +# "sphinxext.rediraffe", -# def setup(app): -# app.add_css_file("custom.css") -# # app.add_js_file("custom.js") +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', "*import_posts*", + "**/pandoc_ipynb/inputs/*", ".nox/*", "README.md", + '_data','_pages','_people','_projects'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'pydata_sphinx_theme' + +import yaml +with open ('info.yml','r') as f: + html_context = yaml.safe_load(f) + + +html_theme_options = { + "github_url": "https://github.com/username/", + "twitter_url": "https://twitter.com/username", + "search_bar_text": "Search this site...", +# "navbar_end": ["search-field.html"], +} + +# html_favicon = "_static/favicon.ico" +# change this to change the site title +html_title = project + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# html_js_files = [ +# 'slides.js', +# ] +# html_extra_path = ["feed.xml"] +# map pages to which sidebar they should have +# "page_file_name": ["list.html", "of.html", "sidebar.html", "files.html"] +html_sidebars = { + "index": ["hello.html"], + "about": ["hello.html"], + "resume": ["hello.html"], + "news": ["hello.html", 'ablog/archives.html'], + "news/**": ['ablog/postcard.html', 'ablog/recentposts.html', 'ablog/archives.html'], + "blog": ['tagcloud.html', 'archives.html'], + "blog/**": ['postcard.html', 'recentposts.html', 'archives.html'], + "pechakucha":[] +} + + +blog_title = "Blog " +blog_path = "news" +blog_feed_length = 5 +fontawesome_included = True +blog_post_pattern = "news/*" +post_redirect_refresh = 1 +post_auto_image = 1 +post_auto_excerpt = 2 + +# Panels config +panels_add_bootstrap_css = False + +# MyST config +myst_enable_extensions = [ + # "amsmath", + "colon_fence", + "deflist", + "dollarmath", + "fieldlist", + "html_admonition", + "html_image", + # "attrs_block", + "replacements", + "smartquotes", + "strikethrough", + "substitution", + # "tasklist", +] + +def setup(app): + app.add_css_file("custom.css") + # app.add_js_file("custom.js") diff --git a/dog.jpeg b/dog.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..9951a6cb18d80dfd3b415568271bfd047d589b7e GIT binary patch literal 33643 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
iCU4u{7O$>VJ=K=rZ*R8F%mz-~k7 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

{Vnl9s)vu{D2E)T@C@T?%dAtOkXr9NM&Rn?M| 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 literal 0 HcmV?d00001 diff --git a/download.jpeg b/download.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..bfb5930e46a481538f6861a3f06793684604e3d6 GIT binary patch literal 12436 zcmY+qcQhQ%7dO1tDyy#Ed#}-Z@4Nb1#1cWY)q4=4vwGVNq6-$$vs%6+dJlpih+ZOz z=s}7+`MvLX{&?=3nYriQDW7v@&bc%9-oGnBQpy(2Mf!;mYs{0i=BgoormjxB+AdqF2upX!6(NjBqk*-EzQECpsFCH zA}S>VKV-jFim(r2pfT|Ns7f zvj5e;{Qw$LKo4S)wkE3Hjr=}b(=8yF{}lUvz#O3yd&ejDx*bjBbXpI6mBIR9@p z3jyH&UHN~rK>(tEDk&NO5ct2Pi3mZ2|KG+0KmZLPEsr!vo6gcXjyEv3@>Hg6fQbJ6 zwvNl$-&FtwA;CY;|2EeIjEYpq(Q9DfBNS~qFJLyW5F)PrHa!T*O#L4CQp5)`d9N>6 zTeFhqSAsqAbPrS@^Wz&mp+nQ}l^hwre1~Wqyo~lYY5h}7ayO<<_p5w0QC4c-K56@V z%ZjgIqt;Ea%|sUC(9=l*wRht;cNoJ+;&`#`>L&VG!l6t{P0c1cdP!L{@iLhETiu>XJt}jqIdCisS(pm}Hi4$6=qg*Y2|T z@ORran^xy}jOAs+`c77iPtc_B0G_Qo+e?d1A%CC!UBqD9=OC@+03X9bxmj@TXOq2P zrx10Ld!pp2KOzzI!8}eMQBqF}=sk4ib1i*V2I95p0K+FB8hH~8dh^kBpTm-n8#05& zaQA`Je&pwma}s-%-=BMK@I&Odzl-&132K`p)TM$#YtpvOWOtn0p&EjSm>Z7X%uwBc zrxG6#%3|LA&5lQZUP@$af0r{tx`-X!x1Q9?Xjjj#JM!8^2P|!v2%{=lv-xyFZbQRX z>7#R^#q>vRWD1qfJZk!u85QyH0;zqGqsSLqlq zrMWlyt0t>Wz65>BzkqQ+v1uk6QQNT3lPBEbmD3!&8IT3}9nTU4us1D9 zVvekDFpcf@jn0J-s{8aH?;ga73u!QuJ_XhvJnokwvQ769c9YUxZh=K7eyfVJ4eu&= zZr+a3<~{<9{H~*T>~1l=?^z`H1v$}EBn1GKch_^aFv|y}zyB}h+sqx!s0p5I?Nhs7 z`I%tx)@D4In5teg^21F?Cu8EZz)K^BhpNoemrB2OBsqa)vDG`vPEDQh0`l z+xmA@3LN_w5>f=M;C7Q+BN*j{oKELf^=%(c+nNN(i%b^{=E=iD7RfopDSldY z-k6b=eIsIs6+HNn&T@EUsktZ}Ia!v%dre~|MqDfbf%{RSi+@J4&g?iuBw>Y_kb*y0 z7W!h_Xs-Lb0x1-eEhm2l9dHsAy*s_`(P~CJds@P(eRxeSTU*yZ3m$xM`_fiMy)wa> zFX32-Bg`;PmE=z1D@*hR1y|)%=*3ftjfO>g+CE89wyx*g`FCKRYG2ls9e~w)c8i33 z^UYbz_Z7K6kE4>9AN^Q}zMY%g1^dn%Pfw8O*XbZ!e$p`=PPT}VSbpt%9E`eXE!ZGp+xd)zr94)4ngdi zfEh`JIAuNB*8(r_uelk}g4IEPL?uAX+zI38rh8n+#n}~=ka_6)RxAIbqJ_wJ146+X zwHZebU~f;2HFn+**MJv}gts&K5ZE&B)=Q(c>F0ftnR4v0fG8sCl0wF~BlzRAlIm=+ zg0YjxdNFQqTamB^8~sqTo(Xk=wxwu6?&6L7wrsfVr?+lTUb2e)kelvfo$EeL!ig^M zojfaZ$>w_XqZjfo@5GU4#g%6Q!b8TnzpTu)f$3 z?zNYEz2djkA3~|WmEGt4XjSG60m_M$UmiF5sw;G%gL#z$%8BC;^mp+w;##voY?H{5Ub`4&OpswUVqflXNe{8UDEM0B<`-K_2lHT?wc=0TDfES@g z8%FHD^HYC|Rk*#E*c7dh)$C!P!=t&-1bh7`R1pk6|D%vytj@R& zX>ait(5jOwTfw{g7a+QgCwd^`p{t-Nw%~J*HbCK7iLqbjOV?2THMqP6grJR8A9w=L zAuC950Dbb2h{z$r{r3=GZlRZ{)pS2{&-v{6)v=nxU%*29BTcFun|UYua!plh%B|HI z8;l#WgLmPlrSNz=NP=9Y#>r?QAc(Mzu&VC)Sz9M7~cYMxqddxUB0eVaXxi;(3+S8 zM93??z1xPTK4}x14tkAV4ZVtkCw~644qrty+pKoQiD>8^o$edfZ0RK#DS{BA(w!Bn z`8cZD58He^iqNl9Et|-a%2iqWQ(-j&;epJs{656jMZQ_fboHS#yVK@L*34|IL%*ab z$+{!)CMyB6->ow@r)#Db>z^y!RR6Qder33tFf@J}gggswTzjaJZbYZa%0)f=T*o4Qa(yZI zrFe*GmSy924@=Vkc1lSZW9L@=ZAWI6#C%1pR__%Xm*VyZ-yYdj=3Fg4ub(DAXqaO+ zf=jq3MD^p{-C+^vo3F?yDsbm2Spe7cnV?}hwv*O$cd23f=2g-egS%M+4CZcDAyi;* z@3nF!$Q+tjGdj*W$4w1RUH1ErRdN9HBeOu-qCr3Xz+LGnNAg;ro0t@JlHp(^nz80D z;Jmqjp4I5xA6Hnd7BKo#;)Q&dnl%0uh9D=E@z?5x^|L2w&aHk7u9D)#U;xl`FW2i` zbsES{noi{vD`+sqqX2Cd+Mc}5{^zr5Vb@UPLO>STuH$U{DnG@W-XrqpUf-`01SALn zy#dvS;$D=VH!+@hov#>pgd(i_D3wTC^m6y7v)rd`;~X7kx|dmhtJ+Nv*+|0{n#vfKeZxCxJtM)=MZr58!bx+CJ zz@QY>ZgL9&Aq%2Q;)~Nd*GF~bjfkT)b2hYwB2_0R<^kw_+-w2zE1ux$MXxWv56pyR zY3<~?hPg}EPr}#%h7*Y=!CDP%*yz9B!Qk`jK>k&aIYXrOI{D8|Byv#z!WbnRI>z(D zGX_{bqgU(;16qqVw~e|@NRR%=mxUAmf(@Cm^ZN`Qu@C!Bm0%{c=U`cBk+xw>)1^$xkSRMCBga zPz;qeDUXc^ez1q84+r}gXkGJ`OdFa`pB@#~=&p(ub~jG9%-v4dA-t`uPlt?tVUIAj z4rF$26|+K-aSN9-oUrxZI$lzfpPXikonI(~8UZhSP2;X`%m|eQiIR^t)v;?%P|bbS zQs`G3{A4_0cM7b`&lffL@6zQ)#-7pVYNb}Yfgs_sjRx{mO%m5e)~`URI`hgisfdVo zSC!peL{{A5H_ruuqxEVS-m!hVMiLaKB;!1kT-i;*ruJUz5i&!8=kh-?M+*}-{zgyU z5!)VGZ+FhhpT5Nj(pL{4F$-;6;e>@&fJBaF!Jixoxw^s^^ivt9hipWPU0dJ+i&OQBD4>$h+2=WJ!or=turYRu z{yh)2)c9OTg0nXXJ~FxmN))b~6?oC$h_<;>oV|UjRS3=`m*+QeShqH!h)LN=46z%- zdVY8g<&Vxg>sQBUX7@O&lnZELnx4jR_tX_$;~9Ibr1~HJ5P&sqcDE_Ttxf1*82|i&WHkxGqH7F~1vIFMXzmhQo!0gS)7rZVJgazVwlAO+%-9VaUG2Xsz@!s=`^zK*T`)hCPh&Mo>#GhVI6&fF{2<1V8r3sKP zb!WZHI^O;TJReayGBP491WySHN=DqiS9`>myapa=&nx;s`*?9C|In<+XloN+hp#|9 z;W#iP9|}rd)CSNH4_DKm@Z=L$O-z8n8bi@h6fK#Diyq5-glT;iTXOpak0~?F_OuVx z0#n=bU6Pa#vHz$P!0R0DP_)^b4krHddy}&66t$havOCnTQal;zh0V4f3tcw~v29Ol zR2^{a$d=OrAWw_TM?2M=z-L}`ZU^X+{lTd5Y)yKea63Cm(1UuPQ<^I23r zIiTj-MK5X~pt9;&Mv^!Xk>k>j#*=TD_?~%=ft=jol2sLE_CIqdMnVTybtkBZC#}BS zyv4bY%$4B>j8VlU@n}(uM?)$gyyL*9oQ#qCU?o zR>GHDg>{4<@yw0cD7No`92a(s>}NzKwRa9LXGn&*tlEo^)rDjoDHs&=g(>H!gUSRO zRm!X9Gxt_8&d=iaDL4*Ff%;hpgAEL@BVVTKdth@6`wf+b$#4nH7lh4Sv5 zq$&nNGXcw{C^PSs0P3gn5}6E|-=f{_T=YJ|X!r_2o}i+N|0GWX=Ru+-8H2PWU!q=WXKr=p)zrJSVo7r(bJRu> zgXCbGKa39StP!^k*GWHmWU7?_e1kF$qxm&Gmi}jq8(QA72`EQs$5!qUA9CUpp8UWr z?7&sKEzz5Xp`~I4 za%=u~tiAf6u;RV2+}Or?M~7C|B!eO6;6vyW-Trhh<`Nns<2M5Gn$K#UeDuBbDn@r) zw#gMFZ9S6)3Bvi`b+yG!m6+c%Z6UL>A}WxXY%U(lh`5-K>Arj!(%4~W&UaN0I}a*c{UC-j`8rj>^+0NvV%}e!_)SRLwpB8GGj+K7$uPC) zo%N+7SDfu*jL{i?wV=<7#b|}Y$lKX}?vY-OK`3V+S5vfN`z#3epAMoD(9O@~wG)wB z^E#;Ulh!LMTk}?a6P&k_q(FFLQ-6m-Is?R+dwrEVt7_@UAmF>)q$X9uw(%pC_Af?j zim4K0X0w4EYVM)C#d)~YRDGV3aZ43SR`LMnR_WvhGh#cnxMxohWu zV)Mv)tC1cN`$!GSk#ZN>yP%J>&?Jb0fbP+J`=k4a`-;kQW^kFC(=PO8N)B3_SxAvJ@EU|0a;oVb6RVxV^ zn6dX!NBbR~QlG@q#&mJgz>LA`?r!e8a<)G?)((us1L7{^%XTC)knM>?{E#Z$gu%#u zzCR1sERu2`!NwJ3wJK?z8yuvbIAH)9of$EQkno6`UD6$9?q6L?f4k#$b4YOCmGND2 z7oKJu+1}i{17*pVmL-I)PmC&pi=ajLA3~D|nvP)IRyc-Iob{(z0sd6&yJFv%FY0C%(T$el}2g^4mn<2c?hC4u2bQpDU6yal{SPckbgKN0_6V z`G=2W9!0w>;a1*I#perJpU_WwY`Nv@|bm;vw28iQ(CQk7cUkG9Y zC8-KxpS%?@>Y?Hyy&c8xCd-j&!{X=jWNvDeKf$8~3!KBf{|vYttWD;6Pvln9RM0KX z{nn-0Wp>l`B63_^m3Cg-h$bnlg7|a|8~Ez9yjc&FGp23ahRIf-fo~qKzG1exHHO;p z7Z+F4wMRxQrH~ANbjzsm>iHPtRC?$a=omO{e2a)(1-i@-LEmiYB^)88z1XIIlD)|t znAR~4;W^>ML3#!61ij#9zGMtuTi!`xhMA?+P&4l z_S;B^aTSoQN%yXrl)thLo^6pH6>_I^vV~|TS;3HVvcew$+PuoE{oYOCGyDZ)x={Q7 z_WEXC@zOrdy=XEdA54MdS^{7BRpLP4ukk3#V;zqVbpon)Dq>H}v zb^1Pry2!5IJtkOt&8kQud_7!{d-^Fo)4UdlJim`h!LN6w;Zwt6Mbb^3}Y zSZCUv6q9?Kb=xbaA>ll(Pym}&`gw)@);DaW{x#x};(i`nD6hxY>*MJjPAXPz@t0nx z+Dl3P#ePMhNx`ULLM!R9fB{?@!ps^_QK3BidkLn)>WOLi@VYgr)v0$Q-BCjkPU ze*ttCnj`KjAr(h_%^UyO_To_6tsC67?p5O>uQA^WiB+IISM|u4Da8}sFg_UOy_Yj$ zpW>%Z;)(X|(yp;2)ZWALkA}_dZ?8*Xad&7AN;HHTSQq&t*I$|BvWb{5yFRJpRX{N% z7%eop0Ng~r+lA}ICs$>;MGPW9`7X-QcU3Piju&Rc#}qs26%ix#!(t+BEaK)m`X}8R zr2$E@X(;W>SUi8dSjI~bm{&hdPjr}7dpO)bETI4{%3rnxzaNYxDebbb>Cji~1Ott_yEKov4Pj0PJl~E)r#|V4fE-x(A3kEd z+{pP6J@}QtSQMFKWD*M{-lA3~PzlEUmUrV3WpNtJ?A6+ovcRAC_PO_d8<&qf_4D&` zuFL!jP#tC0*QTuBt6-yM2gg71jj-`&$`aGfQG}KslVGn?H9~^Bd(5{d=X74NXfPMW z@)&@|q|}a7l%7mj>d4S%qhQJgcCjX#lW0z>Herj<;I)1Bwvlw-ynHfM;U|1{?8(LR zm>(TxKn}|Qsvr_AzR3TmKmIm;`;0A)mPvz|&Hh2ta*b8OH)mxdOHndjxo+0dp!7(` zQmgIS*J{uW34<@cf4{f`kM12HVOGxM7KMlGZx|ZPlskYj6NDeRAC9w*oW7au!HSv; zYn$y*PLMn_wi0)wF^(WqhUF2&QUHD3A}lCYmi@rL4?JcQ*gD6ucc@2{hSaaal7k`s z+-@W|01aG6k&LLUR^j1Y7r5grN!1Lm=*8^9~wHXN7NAiHqKEq0DS!tVe2x^ zkm{$Fe4${y_`;BHdiZ8$VuyCyin@V85uR3Y+_%&4kZM!`8VW_i)%TLzKP!{p;ji&o z*Iqh{U)DfRMBZ_U3S3p1#yh~0dr~2kl4eGP*_eidfCf`Yv}RF)e@Au-lO%&qEGaBX zVU_oA$=i15X7!;bvsLgntXBS9!tc58Mp7iAQ8QE(WAKOrWgPx^uySHtn+01%$>S8Z zGk7sprwW+S+BNWR1L zg&#r5;K9QJ1a?^^m&EwKUPv=QUO3u8Hu=Omd(%W+nf_PbId9gxw*>sO_NNx%iu2I!OssqgdXSRs)dS}h0q)@|v z^aXSTI{Z13+?0B8k>qieFj^SAgP)>-)=FKj85q|$@p}h2()EUVsiK>a-9l1A^qt1M z-U@0vw_w^Aai;M;Lo*|(=@2xCac-5MqgB6W6IPI^oPyMT;>5`71ijWXb^Fhv^AkLV zs&PWb2!NIzzr)-FQs07Y+#}B~GZx0UMstR14}#sMy4pc(L4qOqhJ3M%R0i|bMOq&1 zam4QZ_w6HU{*-T>+p{cu1DcP^3Ff%| z3wR)UN0Ug&19xARrt>xR97@Fw$j;7|KA<#N=8WoY-$QbT5MC`|YpL(eKi?Tf3Wn9( z>%ffDDjqpjovDqMJx1+cws6n}bI9bO_+Xo=+SjIKWax{vf|{h8_M zCf`;=9Afe%A$2;R?*xfUc7ZWq3Q2Uw|Ez7BQPJ>7<&bCre!`o168D6qdQ99i<`m#( zlP^Hzp|UL{=A$Kl0mE__5CDNNi+5Qd+rOX1H6oLPJ$`%gYvB#ks+&wzB{|8T`^%+^ z&Mq1(M_bdN6RO=pz2w8e8n(ZHeeRf}7IROB=^XJSn&Spq@la_LcgV}`mrcE@gS|c4 zmL}0+%IN$28*rYATS6gYVTjMBD1}`V3xH9BKOF)sRdwQ zH#>?%2oyXmILs`PFz?|j@)tlgTIsWABy1IySXWYOmU#5Ev%_ti>9WNi-%jj1&UVpt zCSO8Pml}$%(S_%$`|+7$>Ch1!bU+G&M~ru#6p|uDq$fIqm>deWcsc9N`OBAC_aNBh zxeDz(+3JVbFI0=KBe;qqO@eV?g((uQ*&%z72_JlLrnuSiE*n zEX&v4mM+9piz&e$6L3Db_Xcx3?Z`3u3PU8p_c47|Y|)~&CGms5f$GZ!Pu_vmF^!82 z)lsQx#u7Mmt{PZHwFH>AeIkk-%6tuj=41zNH=|mV6bWYNyWjvzX=2_#p;tJydmx%^ za^+A$tktkGTi|SXITgcvhEMRixzq~roJ@7KBxUB|;r$JfwBguYGx5jX2m|{}UJ8e& z*p?mYohMt*iVYvXu7dt)D3dx97Wt0o&?}DP+A-23E0(FO?CO#}l?E}@zI`w}@FVm? zjXyA_W@OQXUq5LUwiZCl^cUdC-7JY|usV~EA5*ENH=d5C*H*4ZRdiN~LF0~HEG8r> zc<#ymG8JbGE2ZuElJb6YNuS)-?045c&QfO6b|pkG$wSNk^3hSub2F+~K4qV{xM z`^NU$g^dW6&+r~dV|7p*^eE+<2v?Xaw(b4uwdy{PLj|hHoZVdbYNJ#KA}{Sj8A$Iy z*U6v$1!&gzSQ^xZtvhIs-MsLL#W7$+?6ec;7KiyGa;=jRSPj*EZ68@+lLSy?utbPn zyh`R*0rXH`oXnh6cTB`fto(GXU-boBqz#tMNIJV@2xxu=PZ|nKp~5GT=#PFO-0y&S zwi!#|(qj1 zt#(+yODM9&aro;fZp+Z!MpG?qTyHKeIm8u36ie?}c;ViwijDPSBq0Q?LaSv7IeQ8< z>`$oh66SK7$x%k}lwDt&=luJQY>9WcmDtr%X+u;vB7K+e>vVXLRz6iXLlNs+E&Rw` z@e(%+>ln}rB*tXvI(;D2byLG$H;%rJ_Xn;Pb+E)Ai_OSO)~S`eS2lAUS79;1O`@KO zC2i~0K>bAv1ROO<)k#W)cUtNbUA0*#3a7XqKDs_K3l=LCRn8*2sHXP4Ywi5y8P8*5 zu~$Q&xeY4qdZ84<=v!4FYZhD!FK28MZIupJg>y2LiY3o8@(ouMm+6%SnGYd91U_bF zHX;zQ#u(h@S5>EqvN<5iS-oF$z5SUsEgHLWLAp~C$Yb%frn;YBkndl_^6NtOKri}a z&;p%Tv$ya_r3`yv5@0_E$>mN(^yddkqdNP9dl^}bC+8~!h+WY}Dqf*iX$#xD>5n{a z@=q-Sy!SPV;&41Cu$Y_>|-QcrxzxQZ#2-|M;+SPvRk2(m%n)$ z0qFQX#?|&|$lDURwIXEc(1jN8;G_uVjuzg~3h8*Y*yHI!eK?fq>HAsMW3mTCV(_I{ zJ=#?nHj|v{yN*rpF&h-B?F+)01B^&UDi~FQ50R2wgX2J2P&HE19!1>uINrlj1Z*i= zrp3W$-Xxi6Z;4S3T*?Ezd-NZii-$rkr~dVM{Jm-;h8NpWV1d>^Nv3}ZEwTkrmb}v5 z9lV|YXC&iJL`|aPDqHPXXJ})K z<5hg3T4Ip;9creU>qrZ9xZ$I%tn1Oo#pjHw{?XB5_JcPe;X(ZTlwFtS72W<^Zr)Rc z?j^6U0Fm!-O)B1u!EV6!$6Ws%TkF|(%1W9vhb6XSsFm(r zJv-E_#f#p=JHjjm<9tYGC=P&g)M5`yJt@MAV5wn>sjxJ*wbh58H6yubouzGfDso$E zZmxSEsP~W4-Vug>;1-HbSzk5|Ap1&@F-gPWt(7Av_M|Ob2#j1aaC5jhe^_Rr_w@A% zJU!6B?5!xqPaJu`sSPsXO&JK-`iNkF_!s0Jp3_EH6%;Y8zNB>fy7W2(*(++2!*_Id zSy_Q>3y$RaJb0s&JNH>wH~g^2Ug zrrA=uK`9a-A|7$6#mrjW ze^v(1Bby5m^yNLoWVbyCG-Jepn2iL@v>P{6z?v$$@yEJ`tI8&BXB3?mT#su%j|reK ziTMk<)rQ!wigDGSjBob4rDWqCQ#2kEiHP(pYiTF2dOel*<74LfhmuDWu};J5r$>Hl zRy+*MAzh^^fEYF>d>4LrtOP{{PEMTvwMW}Gy_M6bn$j`x^mixQTU z4Kw|{TQUXT7zoH|eRJyI8Acemd?Q~w6hLh67y_WojGgl&xcMFJDY&5v9bXMfUHy5Y z*7Tq+y?xT8v?u>A8*7cAoRyV*CB26J1w2W$Lw{B#Emi0}n$L85??Qxqi}g_AU95k% zE&End@Amx-J8WD3`s3SbQ!+;gBO?3kL64;sK&-?K?d8=nn zkzzX3F(vx(G+vh>8xl8f$Nk zx$7VZpxo>YZFFsHtd6@CA6j|@FI5}ul^FLGX%#!M`pA3<621q}uMDGR29&H)lNQtb z{p&%+p{)%TgU?(6L@ga7jqHNGEzsIL69!-ZW@7XR?sdzk(prT&dL@*zeN{`rFnDP5QGn%DK69ASXb zO~}&go!`PLs>AHf=rafNBKDp?39b7m9o?Sb0W$O=*Q!wCT%DhIOiJQ#LiFx;(G(?K zqxn(^I9VtIjN#KSTeHaU7>dM2nE!_z)ONqSdf*M*a8$l&(808+?_F3> zX_8<(pLgL{xS6yDzeYR3;=tP`i`~M#c(Ocm#MAc=wT47QazZq$U0TQELrHXJk;gzT z$ZTnrSgHw()l!wBKP&m?Z?7M}jLv-;WnSm}H$0Q1+2q}gBSbB_@iH*p$8)|2tg8rr z2!Sz5-BeSo3Oo^;E`{DT{p8Rdeq)(zL#KA=MH}k8t?)tm_pSAfnHm9Y3OqLS`}GBA z(`&6S*4vfvC~`a8m72@TZdI3gc1nOU^fq4o98R9mN9`Hd7H<4H|obi)ernbX{ z%a=N7k0OYvhBLSBI`&~l3k8tSw&FW1d47-}HzXvJ2!;_dV@M;#vp4i@tq1Ktz~88t z!?3~zkR_y$d6QjAlpy@&H^qmW$^`VB6AImGQ52O{5H>7E)6=E=|6c@EY->dCZ9<|KMy~8m;*OhGmqA1-m$8U;PW~cm0D`t1<;~Zy0f*jT03VMbxmB zZc7PCPa;6PLL2;C&qme0{0J8cck_DJ{5Gr}-jM`!cNdiZmy-w63Cibu*a5?eR3HBR G_ - +someotherfile +``` + diff --git a/somefile.rst b/somefile.rst index 065ac60..5df07a9 100644 --- a/somefile.rst +++ b/somefile.rst @@ -1,6 +1,28 @@ foo === + Hello everyone this is my first time running this extension to see how it works. .. todo:: - Try to understand how this works +try to understand how this works + + +.. grid:: 2 3 3 4 + + .. grid-item:: + + .. grid-item-card:: + :img-top: dog.jpeg + + .. card:: + :img-background: download.jpeg + :class-card: sd-text-black + + .. .. grid-item-card:: + .. :img-bottom: images/particle_background.jpg + + .. Header + .. ^^^ + .. Content + .. +++ + .. Footer \ No newline at end of file diff --git a/someotherfile.rst b/someotherfile.rst index 52f8321..590fa1f 100644 --- a/someotherfile.rst +++ b/someotherfile.rst @@ -1,5 +1,10 @@ -.. todolist:: - write code for pechakucha - Add to github - Make extension +foo +=== + +.. This is what I have to get done for this class: + +.. .. todolist:: +.. write code for pechakucha +.. Add to github +.. Make extension From 954deca4d2dd88472c1ae8da8c25f3a7df9ddbe6 Mon Sep 17 00:00:00 2001 From: Osman Barrie Date: Sun, 10 Dec 2023 13:55:05 -0500 Subject: [PATCH 06/14] addedchanges --- .../Pechakucha.egg-info/PKG-INFO | 3 ++ .../Pechakucha.egg-info/SOURCES.txt | 8 +++ .../Pechakucha.egg-info/dependency_links.txt | 1 + .../Pechakucha.egg-info/requires.txt | 1 + .../Pechakucha.egg-info/top_level.txt | 1 + .../Pechakucha/__init__.py | 1 + .../Pechakucha/pechakucha.py | 54 +++++++++++++++++++ .../build/lib/Pechakucha/__init__.py | 1 + .../build/lib/Pechakucha/pechakucha.py | 13 +++++ _ext/Pechakucha_Extention/setup.py | 12 +++++ conf.py | 4 +- somefile.rst | 39 ++++++++------ 12 files changed, 120 insertions(+), 18 deletions(-) create mode 100644 _ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO create mode 100644 _ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt create mode 100644 _ext/Pechakucha_Extention/Pechakucha.egg-info/dependency_links.txt create mode 100644 _ext/Pechakucha_Extention/Pechakucha.egg-info/requires.txt create mode 100644 _ext/Pechakucha_Extention/Pechakucha.egg-info/top_level.txt create mode 100644 _ext/Pechakucha_Extention/Pechakucha/__init__.py create mode 100644 _ext/Pechakucha_Extention/Pechakucha/pechakucha.py create mode 100644 _ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py create mode 100644 _ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py create mode 100644 _ext/Pechakucha_Extention/setup.py diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO b/_ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO new file mode 100644 index 0000000..00ca4d6 --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO @@ -0,0 +1,3 @@ +Metadata-Version: 2.1 +Name: Pechakucha +Version: 0.1 diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt b/_ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt new file mode 100644 index 0000000..220482c --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt @@ -0,0 +1,8 @@ +setup.py +Pechakucha/__init__.py +Pechakucha/pechakucha.py +Pechakucha.egg-info/PKG-INFO +Pechakucha.egg-info/SOURCES.txt +Pechakucha.egg-info/dependency_links.txt +Pechakucha.egg-info/requires.txt +Pechakucha.egg-info/top_level.txt \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/dependency_links.txt b/_ext/Pechakucha_Extention/Pechakucha.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/requires.txt b/_ext/Pechakucha_Extention/Pechakucha.egg-info/requires.txt new file mode 100644 index 0000000..2806c16 --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha.egg-info/requires.txt @@ -0,0 +1 @@ +Sphinx diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/top_level.txt b/_ext/Pechakucha_Extention/Pechakucha.egg-info/top_level.txt new file mode 100644 index 0000000..2e270c5 --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha.egg-info/top_level.txt @@ -0,0 +1 @@ +Pechakucha diff --git a/_ext/Pechakucha_Extention/Pechakucha/__init__.py b/_ext/Pechakucha_Extention/Pechakucha/__init__.py new file mode 100644 index 0000000..b0181d1 --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha/__init__.py @@ -0,0 +1 @@ +from .pechakucha import setup \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/Pechakucha/pechakucha.py b/_ext/Pechakucha_Extention/Pechakucha/pechakucha.py new file mode 100644 index 0000000..90e0da5 --- /dev/null +++ b/_ext/Pechakucha_Extention/Pechakucha/pechakucha.py @@ -0,0 +1,54 @@ +from docutils import nodes +from docutils.parsers.rst import Directive + +from sphinx.locale import _ +from sphinx.util.docutils import SphinxDirective +# Custom node classes +class PechakuchaSlide(nodes.Admonition, nodes.Element): + pass + +class PechakuchaSlideshow(nodes.General, nodes.Element): + pass + +# Directive for individual slides +class PechakuchaSlideDirective(SphinxDirective): + has_content = True + + def run(self): + text = '\n'.join(self.content) + slide_node = PechakuchaSlide(text) + return [slide_node] + +# Directive for the slideshow +class PechakuchaSlideshowDirective(Directive): + def run(self): + return [PechakuchaSlideshow('')] + +# Visitor functions for rendering (to be expanded) +def visit_pechakucha_slide_node(self, node): + # HTML rendering for a slide + pass + +def depart_pechakucha_slide_node(self, node): + # HTML rendering end for a slide + pass + +def visit_pechakucha_slideshow_node(self, node): + # HTML rendering for the slideshow + pass + +def depart_pechakucha_slideshow_node(self, node): + # HTML rendering end for the slideshow + pass + +# Setup function to register the extension with Sphinx +def setup(app): + app.add_node(PechakuchaSlide, + html=(visit_pechakucha_slide_node, depart_pechakucha_slide_node)) + app.add_node(PechakuchaSlideshow, + html=(visit_pechakucha_slideshow_node, depart_pechakucha_slideshow_node)) + + app.add_directive('pechakucha_slide', PechakuchaSlideDirective) + app.add_directive('pechakucha_slideshow', PechakuchaSlideshowDirective) + + return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py b/_ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py new file mode 100644 index 0000000..b0181d1 --- /dev/null +++ b/_ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py @@ -0,0 +1 @@ +from .pechakucha import setup \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py b/_ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py new file mode 100644 index 0000000..afcf15b --- /dev/null +++ b/_ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py @@ -0,0 +1,13 @@ +from docutils import nodes +from docutils.parsers.rst import Directive + + +class PechakuchaDirective(Directive): + has_content = True # Indicates that this directive expects content + def run(self): + # Create a node to be added to the document + paragraph_node = nodes.paragraph(text='Test Text!') + return [paragraph_node] + + def setup(app): + app.add_directive("pechakucha", PechakuchaDirective) \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/setup.py b/_ext/Pechakucha_Extention/setup.py new file mode 100644 index 0000000..068348b --- /dev/null +++ b/_ext/Pechakucha_Extention/setup.py @@ -0,0 +1,12 @@ +from setuptools import setup, find_packages + +setup( +name='pechakucha', +version='0.1', +packages=find_packages(), +include_package_data=True, +install_requires=[ + 'Sphinx' +], +) + diff --git a/conf.py b/conf.py index 2672f3d..4e2399f 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ sys.path.append(os.path.abspath("./_ext")) -extensions = ['todo'] +# extensions = ['todo'] todo_include_todos = False @@ -37,6 +37,8 @@ #"ablog", 'sphinx.ext.intersphinx', "sphinx_design", + 'pechakucha', + 'todo', #"sphinxext.opengraph", ] diff --git a/somefile.rst b/somefile.rst index 5df07a9..bb6adeb 100644 --- a/somefile.rst +++ b/somefile.rst @@ -1,28 +1,33 @@ foo === -Hello everyone this is my first time running this extension to see how it works. +.. .. Hello everyone this is my first time running this extension to see how it works. -.. todo:: -try to understand how this works +.. .. .. todo:: +.. .. try to understand how this works -.. grid:: 2 3 3 4 +.. .. grid:: 2 3 3 4 - .. grid-item:: +.. .. grid-item:: - .. grid-item-card:: - :img-top: dog.jpeg +.. .. grid-item-card:: +.. :img-top: dog.jpeg - .. card:: - :img-background: download.jpeg - :class-card: sd-text-black +.. .. card:: +.. :img-background: download.jpeg +.. :class-card: sd-text-black - .. .. grid-item-card:: - .. :img-bottom: images/particle_background.jpg +.. .. .. grid-item-card:: +.. .. :img-bottom: images/particle_background.jpg - .. Header - .. ^^^ - .. Content - .. +++ - .. Footer \ No newline at end of file +.. .. Header +.. .. ^^^ +.. .. Content +.. .. +++ +.. .. Footer + +.. pechakucha_slides:: + :title: Slide Title + + \ No newline at end of file From 0eb21887b83ffb6ad9e69064586ef0d88130f138 Mon Sep 17 00:00:00 2001 From: Osman Barrie Date: Sun, 10 Dec 2023 17:31:24 -0500 Subject: [PATCH 07/14] got closer to being done --- .../Pechakucha.egg-info/SOURCES.txt | 8 -- .../Pechakucha/pechakucha.py | 54 ----------- .../build/lib/Pechakucha/__init__.py | 1 - .../build/lib/Pechakucha/pechakucha.py | 13 --- _ext/Pechakucha_Extention/setup.py | 12 --- _ext/todo.py | 55 +++++++++++ _static/custom.css | 29 +++++- _templates/index.html | 26 +++++ conf.py | 33 ++++--- index.md | 2 +- index.rst | 14 +-- .../Pechakucha/__init__.py | 0 pechakucha/Pechakucha/pechakucha.py | 89 ++++++++++++++++++ .../dist/sphinxcontrib-pechakucha-0.1.tar.gz | Bin 0 -> 1819 bytes pechakucha/setup.py | 10 ++ .../PKG-INFO | 2 +- .../SOURCES.txt | 8 ++ .../dependency_links.txt | 0 .../requires.txt | 0 .../top_level.txt | 0 somefile.rst | 56 ++++++----- 21 files changed, 281 insertions(+), 131 deletions(-) delete mode 100644 _ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt delete mode 100644 _ext/Pechakucha_Extention/Pechakucha/pechakucha.py delete mode 100644 _ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py delete mode 100644 _ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py delete mode 100644 _ext/Pechakucha_Extention/setup.py create mode 100644 _templates/index.html rename {_ext/Pechakucha_Extention => pechakucha}/Pechakucha/__init__.py (100%) create mode 100644 pechakucha/Pechakucha/pechakucha.py create mode 100644 pechakucha/dist/sphinxcontrib-pechakucha-0.1.tar.gz create mode 100644 pechakucha/setup.py rename {_ext/Pechakucha_Extention/Pechakucha.egg-info => pechakucha/sphinxcontrib_pechakucha.egg-info}/PKG-INFO (53%) create mode 100644 pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt rename {_ext/Pechakucha_Extention/Pechakucha.egg-info => pechakucha/sphinxcontrib_pechakucha.egg-info}/dependency_links.txt (100%) rename {_ext/Pechakucha_Extention/Pechakucha.egg-info => pechakucha/sphinxcontrib_pechakucha.egg-info}/requires.txt (100%) rename {_ext/Pechakucha_Extention/Pechakucha.egg-info => pechakucha/sphinxcontrib_pechakucha.egg-info}/top_level.txt (100%) diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt b/_ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt deleted file mode 100644 index 220482c..0000000 --- a/_ext/Pechakucha_Extention/Pechakucha.egg-info/SOURCES.txt +++ /dev/null @@ -1,8 +0,0 @@ -setup.py -Pechakucha/__init__.py -Pechakucha/pechakucha.py -Pechakucha.egg-info/PKG-INFO -Pechakucha.egg-info/SOURCES.txt -Pechakucha.egg-info/dependency_links.txt -Pechakucha.egg-info/requires.txt -Pechakucha.egg-info/top_level.txt \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/Pechakucha/pechakucha.py b/_ext/Pechakucha_Extention/Pechakucha/pechakucha.py deleted file mode 100644 index 90e0da5..0000000 --- a/_ext/Pechakucha_Extention/Pechakucha/pechakucha.py +++ /dev/null @@ -1,54 +0,0 @@ -from docutils import nodes -from docutils.parsers.rst import Directive - -from sphinx.locale import _ -from sphinx.util.docutils import SphinxDirective -# Custom node classes -class PechakuchaSlide(nodes.Admonition, nodes.Element): - pass - -class PechakuchaSlideshow(nodes.General, nodes.Element): - pass - -# Directive for individual slides -class PechakuchaSlideDirective(SphinxDirective): - has_content = True - - def run(self): - text = '\n'.join(self.content) - slide_node = PechakuchaSlide(text) - return [slide_node] - -# Directive for the slideshow -class PechakuchaSlideshowDirective(Directive): - def run(self): - return [PechakuchaSlideshow('')] - -# Visitor functions for rendering (to be expanded) -def visit_pechakucha_slide_node(self, node): - # HTML rendering for a slide - pass - -def depart_pechakucha_slide_node(self, node): - # HTML rendering end for a slide - pass - -def visit_pechakucha_slideshow_node(self, node): - # HTML rendering for the slideshow - pass - -def depart_pechakucha_slideshow_node(self, node): - # HTML rendering end for the slideshow - pass - -# Setup function to register the extension with Sphinx -def setup(app): - app.add_node(PechakuchaSlide, - html=(visit_pechakucha_slide_node, depart_pechakucha_slide_node)) - app.add_node(PechakuchaSlideshow, - html=(visit_pechakucha_slideshow_node, depart_pechakucha_slideshow_node)) - - app.add_directive('pechakucha_slide', PechakuchaSlideDirective) - app.add_directive('pechakucha_slideshow', PechakuchaSlideshowDirective) - - return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py b/_ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py deleted file mode 100644 index b0181d1..0000000 --- a/_ext/Pechakucha_Extention/build/lib/Pechakucha/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .pechakucha import setup \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py b/_ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py deleted file mode 100644 index afcf15b..0000000 --- a/_ext/Pechakucha_Extention/build/lib/Pechakucha/pechakucha.py +++ /dev/null @@ -1,13 +0,0 @@ -from docutils import nodes -from docutils.parsers.rst import Directive - - -class PechakuchaDirective(Directive): - has_content = True # Indicates that this directive expects content - def run(self): - # Create a node to be added to the document - paragraph_node = nodes.paragraph(text='Test Text!') - return [paragraph_node] - - def setup(app): - app.add_directive("pechakucha", PechakuchaDirective) \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/setup.py b/_ext/Pechakucha_Extention/setup.py deleted file mode 100644 index 068348b..0000000 --- a/_ext/Pechakucha_Extention/setup.py +++ /dev/null @@ -1,12 +0,0 @@ -from setuptools import setup, find_packages - -setup( -name='pechakucha', -version='0.1', -packages=find_packages(), -include_package_data=True, -install_requires=[ - 'Sphinx' -], -) - diff --git a/_ext/todo.py b/_ext/todo.py index 15368f4..7294a30 100644 --- a/_ext/todo.py +++ b/_ext/todo.py @@ -133,3 +133,58 @@ def setup(app): 'parallel_read_safe': True, 'parallel_write_safe': True, } + +# from docutils import nodes +# from docutils.parsers.rst import Directive + +# from sphinx.locale import _ +# from sphinx.util.docutils import SphinxDirective +# # Custom node classes +# class PechakuchaSlide(nodes.Admonition, nodes.Element): +# pass + +# class PechakuchaSlideshow(nodes.General, nodes.Element): +# pass + +# # Directive for individual slides +# class PechakuchaSlideDirective(SphinxDirective): +# has_content = True + +# def run(self): +# text = '\n'.join(self.content) +# slide_node = PechakuchaSlide(text) +# return [slide_node] + +# # Directive for the slideshow +# class PechakuchaSlideshowDirective(Directive): +# def run(self): +# return [PechakuchaSlideshow('')] + +# # Visitor functions for rendering (to be expanded) +# def visit_pechakucha_slide_node(self, node): +# # HTML rendering for a slide +# pass + +# def depart_pechakucha_slide_node(self, node): +# # HTML rendering end for a slide +# pass + +# def visit_pechakucha_slideshow_node(self, node): +# # HTML rendering for the slideshow +# pass + +# def depart_pechakucha_slideshow_node(self, node): +# # HTML rendering end for the slideshow +# pass + +# # Setup function to register the extension with Sphinx +# def setup(app): +# app.add_node(PechakuchaSlide, +# html=(visit_pechakucha_slide_node, depart_pechakucha_slide_node)) +# app.add_node(PechakuchaSlideshow, +# html=(visit_pechakucha_slideshow_node, depart_pechakucha_slideshow_node)) + +# app.add_directive('pechakucha_slide', PechakuchaSlideDirective) +# app.add_directive('pechakucha_slideshow', PechakuchaSlideshowDirective) + +# return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} \ No newline at end of file diff --git a/_static/custom.css b/_static/custom.css index 7fafd9d..cd92b46 100644 --- a/_static/custom.css +++ b/_static/custom.css @@ -206,4 +206,31 @@ H1.pechakucha { .text { font-size: 11px } -} \ No newline at end of file +} + +.popup-trigger { + cursor: pointer; + } + + .popup-image { + display: none; + position: fixed; + z-index: 1000; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + max-width: 90%; + max-height: 90%; + box-shadow: 0 0 25px rgba(0, 0, 0, 0.5); + } + + .popup-overlay { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + z-index: 999; + } \ No newline at end of file diff --git a/_templates/index.html b/_templates/index.html new file mode 100644 index 0000000..c3bf5d2 --- /dev/null +++ b/_templates/index.html @@ -0,0 +1,26 @@ +{% extends '!layout.html' %} + +{% block footer %} + +{% endblock %} diff --git a/conf.py b/conf.py index 4e2399f..7d3f745 100644 --- a/conf.py +++ b/conf.py @@ -1,5 +1,7 @@ import os import sys +import sphinx_rtd_theme + sys.path.append(os.path.abspath("./_ext")) @@ -13,16 +15,7 @@ copyright = '2023, Your name' author = 'Your Name' - - -# -- Project information ----------------------------------------------------- - -project = 'Site Title' -copyright = '2023, Your name' -author = 'Your Name' - - - +extensions = ['pechakucha.pechakucha'] # ---------------------------------------------------------------------------- # Below here does not need to be edited for the lab # ---------------------------------------------------------------------------- @@ -32,12 +25,30 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. + +# conf.py + +# ... + +# Specify 'dirhtml' as one of the builders +html_theme = 'sphinx_rtd_theme' + +# Add 'dirhtml' to the 'html_theme_options' configuration +html_theme_options = { + 'style_nav_header_background': '#343131', +} + +# Specify 'dirhtml' as one of the builders +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# ... + + extensions = [ #"myst_nb", #"ablog", 'sphinx.ext.intersphinx', "sphinx_design", - 'pechakucha', 'todo', #"sphinxext.opengraph", ] diff --git a/index.md b/index.md index 3e49a2b..f837130 100644 --- a/index.md +++ b/index.md @@ -1,4 +1,4 @@ -# Page Title +# Profile Site A short introduction for the top of your main page diff --git a/index.rst b/index.rst index 1b9ed56..39954ac 100644 --- a/index.rst +++ b/index.rst @@ -1,16 +1,16 @@ -Hello, world +Welcome to my profile site! ============ -.. toctree:: +.. toctree:: somefile.rst someotherfile.rst -Hello world. Below is the list of TODOs. +.. Hello world. Below is the list of TODOs. -.. todolist:: - Finish Sphinx Project - Finish final paper for 320 - Finish project for 120G +.. .. todolist:: +.. Finish Sphinx Project +.. Finish final paper for 320 +.. Finish project for 120G diff --git a/_ext/Pechakucha_Extention/Pechakucha/__init__.py b/pechakucha/Pechakucha/__init__.py similarity index 100% rename from _ext/Pechakucha_Extention/Pechakucha/__init__.py rename to pechakucha/Pechakucha/__init__.py diff --git a/pechakucha/Pechakucha/pechakucha.py b/pechakucha/Pechakucha/pechakucha.py new file mode 100644 index 0000000..bc706c1 --- /dev/null +++ b/pechakucha/Pechakucha/pechakucha.py @@ -0,0 +1,89 @@ +from docutils import nodes +from docutils.parsers.rst import Directive +from sphinx.locale import _ +from sphinx.util.docutils import SphinxDirective + +# Custom node classes +class PechakuchaSlide(nodes.Admonition, nodes.Element): + pass + +class PechakuchaSlideshow(nodes.General, nodes.Element): + pass + +# Directive for individual slides +class PechakuchaSlideDirective(SphinxDirective): + has_content = True + + def run(self): + slide_node = PechakuchaSlide() + self.state.nested_parse(self.content, self.content_offset, slide_node) + return [slide_node] + +# Directive for the slideshow +class PechakuchaSlideshowDirective(Directive): + has_content = True + + def run(self): + slideshow_node = PechakuchaSlideshow() + self.state.nested_parse(self.content, self.content_offset, slideshow_node) + return [slideshow_node] + +# Visitor functions for rendering +def visit_pechakucha_slide_node(self, node): + # Start the HTML rendering for a slide + self.body.append('

\n') + +def visit_pechakucha_slideshow_node(self, node): + # Start the HTML rendering for the slideshow container + self.body.append('
\n') + +def depart_pechakucha_slideshow_node(self, node): + # End the HTML rendering for the slideshow container + self.body.append('
\n') + + # Include JavaScript logic for the slideshow + self.body.append(""" + + """) + +# Setup function to register the extension with Sphinx +def setup(app): + app.add_node(PechakuchaSlide, + html=(visit_pechakucha_slide_node, depart_pechakucha_slide_node)) + app.add_node(PechakuchaSlideshow, + html=(visit_pechakucha_slideshow_node, depart_pechakucha_slideshow_node)) + + app.add_directive('pechakucha_slide', PechakuchaSlideDirective) + app.add_directive('pechakucha_slideshow', PechakuchaSlideshowDirective) + + return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} diff --git a/pechakucha/dist/sphinxcontrib-pechakucha-0.1.tar.gz b/pechakucha/dist/sphinxcontrib-pechakucha-0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0560cd15963b357464cca226d1fecd5f9c99b7fc GIT binary patch literal 1819 zcmV+$2juu4iwFo%Id)|N|8sC?X>NF9Z*FvQX<{vKWn*YzYjtC2VJ$E&F)nmrascgH zZFAZ<5YA`+3Jv`LOo;I-v}x$vU7Blq*SER!`X!g~C|H0d#^x+R!*u%JZ)F?Xyd^+W zZl>&h2n0zhdA0jIT1nQMdh?f$^zJpIK8ufjh#0A?`!o#ODZZ=UO~W#+BXW1N2N?@V zW9a_qFvWUGhLR6i$7~yx<+R#%OSeqBZ9i*iM<_qNh|z$DcikwIF~2z(vF?E0j^WRV zp_|P|jQ_Ulrk}0!)3D}a-gI2sb!^AARQ$KxwsAz*MpT`qtrv8E`}vx9FnV|?0VTC za=V~%8cAI~ItPixGQmnWwA%mtTVl-@Y(D(4i5iDDMQQj3Ru zO+C{@)$s~=^$PPQqe{Iod*UbL63|K}R(}2I-P=M}qM4?H)bc02iTtTfMhtc3h+L_%QmG^bXCi6*BKPfp z$+Ybo815ZJm+@T73uj(Ul;SklYIX88FP~E&ps@meg{XR;$qZb@Z_{&Sa&_QXTlUI& zsk@|0c%GWl$&<0b$62Oc4_Mfj1NiCqcySN~PF(S8i2iB7bf1e+K&POl5=J4bJfCav zZNA&W1jono6?u=;N(Oo{Kbo}znVHjkxLa{mYH>o$6%TL&lzY4I1OQo|U|AoHWv!T= z2617%Rew&JO>#b!X_-95*J#5^Z7zsF(B2120`jhxyHf?z6@BH6u$iMj&K1U zPW@@#I-h##`xg`V@|FYof{)iKQ2#uI+P4wppnj!MDE$Hcv~u=l69yA#temuxhc8Z9 z{w*sxYnG!3LaVN*;8N|U6b~jNFi>CFAPrD<2L=#{9XSjmT_q$?lWfG)AW$KyEeyKVLXh7u!@DYnNU1 zO?9Y#m-Wo8Sh4|SwEwj_NiRcGPe~PWCTLuRCxS>}fu~}?6ST*mP_1OjWnW@0S-J4r z|B`j%{Xe|_x8nZaQ_I5p-v__{lW>pT?e)Ju{_j2iaaxP#|Bi|0KYNiY*6({f>_yj_ zq?m;q{(WXtsxTN`467|9LD(%-v2=UpXdJ_ZhUOV|5m$n{$s2AABJt< z{r~-)|0MG)qo_EONq%XN9uL(HdH0s~nb5R!FCs~QLkgHtUFSX3bVDFZjXP;#oE@X2 z$~tqZYxT60hhXMFCC>kjA>S6At9)ajn(m2YYOWhv9Z?GNf8_rklmDA7*T(odc>XUJ zmiB0MNE%O6(%9TM{-{O>sJ1^#ba7M}m^Xa2J-er@%;p4z%s zK(x)*hT2wcv_Wm3savZo>`uLahqq$GX0uJ@4Xev&X`o{|0Dk+|0DnJ!2ji(YUlhPeqGG}+m?&`zYodYG{ZnZ z{zv{t{zv{t{@;fGH`*k9kpCgr=ktHVa2@3TeMqstk3o-uf`WpAf`WpAf`alh%YRmi J;xzzx008~z$E5%O literal 0 HcmV?d00001 diff --git a/pechakucha/setup.py b/pechakucha/setup.py new file mode 100644 index 0000000..7d13b7a --- /dev/null +++ b/pechakucha/setup.py @@ -0,0 +1,10 @@ +from setuptools import setup, find_packages + +setup( + name='sphinxcontrib-pechakucha', + version='0.1', + packages=find_packages(), + install_requires=[ + 'Sphinx', + ], +) diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO b/pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO similarity index 53% rename from _ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO rename to pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO index 00ca4d6..de6ecb4 100644 --- a/_ext/Pechakucha_Extention/Pechakucha.egg-info/PKG-INFO +++ b/pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO @@ -1,3 +1,3 @@ Metadata-Version: 2.1 -Name: Pechakucha +Name: sphinxcontrib-pechakucha Version: 0.1 diff --git a/pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt new file mode 100644 index 0000000..5e4cb3b --- /dev/null +++ b/pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt @@ -0,0 +1,8 @@ +setup.py +Pechakucha/__init__.py +Pechakucha/pechakucha.py +sphinxcontrib_pechakucha.egg-info/PKG-INFO +sphinxcontrib_pechakucha.egg-info/SOURCES.txt +sphinxcontrib_pechakucha.egg-info/dependency_links.txt +sphinxcontrib_pechakucha.egg-info/requires.txt +sphinxcontrib_pechakucha.egg-info/top_level.txt \ No newline at end of file diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/dependency_links.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/dependency_links.txt similarity index 100% rename from _ext/Pechakucha_Extention/Pechakucha.egg-info/dependency_links.txt rename to pechakucha/sphinxcontrib_pechakucha.egg-info/dependency_links.txt diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/requires.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/requires.txt similarity index 100% rename from _ext/Pechakucha_Extention/Pechakucha.egg-info/requires.txt rename to pechakucha/sphinxcontrib_pechakucha.egg-info/requires.txt diff --git a/_ext/Pechakucha_Extention/Pechakucha.egg-info/top_level.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/top_level.txt similarity index 100% rename from _ext/Pechakucha_Extention/Pechakucha.egg-info/top_level.txt rename to pechakucha/sphinxcontrib_pechakucha.egg-info/top_level.txt diff --git a/somefile.rst b/somefile.rst index bb6adeb..ce5577a 100644 --- a/somefile.rst +++ b/somefile.rst @@ -1,33 +1,45 @@ -foo -=== +================= +My Pechakucha +================= -.. .. Hello everyone this is my first time running this extension to see how it works. - -.. .. .. todo:: -.. .. try to understand how this works +.. Hello everyone, this is my first time running this extension to see how it works. +.. .. todo:: + - Try to understand how this works .. .. grid:: 2 3 3 4 -.. .. grid-item:: + .. grid-item:: + + .. grid-item-card:: + :img-top: dog.jpeg + + .. card:: + :img-background: download.jpeg + :class-card: sd-text-black + + .. grid-item-card:: + :img-bottom: images/particle_background.jpg + + Header + ^^^ + Content + +++ + Footer + +.. pechakucha_slide:: -.. .. grid-item-card:: -.. :img-top: dog.jpeg + .. image:: dog.jpeg + :alt: Alternate text for image 1 -.. .. card:: -.. :img-background: download.jpeg -.. :class-card: sd-text-black +.. pechakucha_slide:: -.. .. .. grid-item-card:: -.. .. :img-bottom: images/particle_background.jpg + .. image:: path/to/image2.jpg + :alt: Alternate text for image 2 -.. .. Header -.. .. ^^^ -.. .. Content -.. .. +++ -.. .. Footer +.. pechakucha_slide:: -.. pechakucha_slides:: - :title: Slide Title + .. image:: path/to/image3.jpg + :alt: Alternate text for image 3 - \ No newline at end of file +# Add more slides with images as needed From 812dc188392f8d665ee9583f6438cba443da9f90 Mon Sep 17 00:00:00 2001 From: Isaac Gbaba Date: Sat, 16 Dec 2023 11:59:29 -0500 Subject: [PATCH 08/14] working pechakucha directive --- .vs/ProjectSettings.json | 3 + .vs/VSWorkspaceState.json | 7 ++ .vs/pechakuchaTest/v16/.suo | Bin 0 -> 15360 bytes .vs/slnx.sqlite | Bin 0 -> 90112 bytes Makefile | 3 + _ext/Pechakucha/__init__.py | 23 +++++ _ext/Pechakucha/pechakucha_directive.py | 31 ++++++ {pechakucha => _ext/Pechakucha}/setup.py | 5 +- _ext/Pechakucha/static/slideshow.css | 13 +++ _ext/Pechakucha/static/slideshow.js | 24 +++++ conf.py | 27 +++--- index.rst | 2 +- pechakucha/Pechakucha/__init__.py | 1 - pechakucha/Pechakucha/pechakucha.py | 89 ------------------ .../dist/sphinxcontrib-pechakucha-0.1.tar.gz | Bin 1819 -> 0 bytes .../PKG-INFO | 3 - .../SOURCES.txt | 8 -- .../dependency_links.txt | 1 - .../requires.txt | 1 - .../top_level.txt | 1 - somefile.rst | 43 ++------- 21 files changed, 123 insertions(+), 162 deletions(-) create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/pechakuchaTest/v16/.suo create mode 100644 .vs/slnx.sqlite create mode 100644 _ext/Pechakucha/__init__.py create mode 100644 _ext/Pechakucha/pechakucha_directive.py rename {pechakucha => _ext/Pechakucha}/setup.py (54%) create mode 100644 _ext/Pechakucha/static/slideshow.css create mode 100644 _ext/Pechakucha/static/slideshow.js delete mode 100644 pechakucha/Pechakucha/__init__.py delete mode 100644 pechakucha/Pechakucha/pechakucha.py delete mode 100644 pechakucha/dist/sphinxcontrib-pechakucha-0.1.tar.gz delete mode 100644 pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO delete mode 100644 pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt delete mode 100644 pechakucha/sphinxcontrib_pechakucha.egg-info/dependency_links.txt delete mode 100644 pechakucha/sphinxcontrib_pechakucha.egg-info/requires.txt delete mode 100644 pechakucha/sphinxcontrib_pechakucha.egg-info/top_level.txt diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..c70e343 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\C:\\Users\\isaacg\\Source\\Repos\\pechakuchaTest", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/pechakuchaTest/v16/.suo b/.vs/pechakuchaTest/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..a532bea9eecde4570a55075dfce15b5fa9622da1 GIT binary patch literal 15360 zcmeI3O>-1Q7{_~qsQ8XA5fOF4h$w8>kN^P{0|{?R2ohc_D`mOa-Gr4*vbD2;aQ32C zzX9dRDldKjJ$SSz;b3|2q@Tl*`1{XHC$p2C&15%9cHQ23W_o&h`st_pdF}4KcX#U_ zx4+;1rwOHFW|O(UxWzmiC{G0P<{4vN;8|t&7Z(@xN_n!K)IuY0(aiCyn4~#rX1SNm zElp+Y)NM8|&H3h4zPk6#SD${j|M$e>)Ej!PTB&~BZMv55 zYuKyb)_%G`G3@Imi(hz4rbrLUCJ&4=78xM#*NeLKn65-{x})j^%SU+l(JvS?^I$2O z0`v=}1DHoBDF;8Skr)1lDDMK|(tnP+R<66r{~aWN{C2;sVDXETJpnukJOw-rXbiUk z&jQZ@F9Z5U`ary}4N(3u?k@p5{Abnaq>V8G|E2tY_Vt%b@^2oX{Exwh9r1d!ZHj#U;%{xzklYtt53`{c*%R3Y>Hk-NSAo}nB(M|M1-uUQ0B-=hfj5CYz+1rEz+PYl7UeUJjVSu^Zj zr|>+cDJ{D`koSf`sgd^Kf5`q@j5VsPC^|!l=1ytMOyd2Gg01Z1md_NDUHwgQ-MuIPnVFY1c_wM2Vd{Nf?o-U#EJHCJ8V zFGv2Sxxm%oxdLcL9CML=&5)NzI!S-?_G9jY;Fm8ZogEkdFm)v-N+Yy3$xKi4liz#Q zo$;)>#*^b!se4T}K>rC^^v(YY{3qx`o<3a18=rGWMVt_w_Avjl<T zGKvS$e=gmkT`8iQRmJkHF8L*4`fKxluqRbbVe`5Yva=rcc=)9&?EIgA);XkY2AL~! zj~n;eUhDvWf(PsC+46e#4|%!AuW$*x4tUSOcMdW)j^@$mSKvHF#!=&L+gJR%i3g2o z-0}Z_x|V*)yX38mrp>@>;y-Cv2R-bqOyucFCDJM!1;2bA`8jd%SM#6r|2*UGS-s#) zue1ap38ggnB}($o;^IF`T^s+5gFWlhdIQ>}b;@{HVZWf48PZHuj5svIXvszxGt>b8 zpXWRId+U`f@5iNoz3|$0S{Z*>|9JeTdG=Pqj$;W+_-FD&^VGdF+Yn*ib zk$L!CvCssOewv8?2sy>6GyLX#y>yGRE0j(kE%IoJw5ayS{n9=>rCz>2!nNORrJwtR zE8$sc3rC)3V}5P}DzfGVV<~EWX#;9zm`lx3xozghA-WKMwx-NTV#Qq!_iW3~NtlWS zbkacEP$Qpe#--+73u=Jy++@+{ia0#JGv-bk&{V+w$PP*i{MrWeczf8_nJKNEdD^WN zZK>rltKAfl6x(K&ZXiXHrZO}Yh$_T=zqJAPiLSEi4Qkz7ahfP=Mct=UCq*cjf}&*` zYoFVRCXdqgm?y0iRL2ppUyPIpM6NNauc%_zQC7T&S)lmy6TpkxE~B@#+9K_(_1Fx* zEbAc??s}lz514RQXtY10dL_Ql>W%hn=Kb6y%A_|nxAl|oH(SLa7>>~zf<~y1SYOwAsevxnY;N1my?45A7jD;lS*Nfs zmC5A_v(u^kLM1<2Da_5LDs!pIwS20QcPc5TP^rKFcKX{NjtwTiINB(Ft%XK`_DJ+j zGt@c%5j{?J?X?x}Vd)u1_T!v;wJhD)|7-32zk2%*SF!5ag&A{gytfZx=iS~9G_e1n zwQ1Q6rF!^>u|o19w9HJTa{?7ToHJ|@m^ZA2~bpEds|E-TEZZ!UCHvW?x)B1%h UPb2YXv+?8lj9#ae2Q>o!0Duy!!~g&Q literal 0 HcmV?d00001 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..a8abaf57b4f613149a32886f9612764e49257c59 GIT binary patch literal 90112 zcmeI54R9M-eZaNWmt|@9*^wP3aS|)BbGBlytq)7K?nsLxD>+{r+p+B2gyGn$6eu$USYV>89Hr&&TzEQQc8hRN{{JqLrbq5bV@(?8VU?k+9}rouE5Yv z`+sk>A6m(=$*+NbB=gXC~OwAv$bXqvh@=Cwo zVzChTzZd?iA1{2dsR!_vGko9fE3u4@`|UI_`3X(4hy29zK2N9nOve+h$J@W`v^vgN z-`4iyw#Bx4wo`%eKQ{#0sij*3g41`e$Zee~lqC6DYI7}HE>6q&La9(IluK#lYiadV zp(xKt>6uoENMbQLwUqSF%uOfn^IzPRjupPc51;wD=JYH6p^J^ht^~Gvc&9G`W}a?s z=3Hh?Zf%^fgK>J!9ZaGLSNw_j*;!iGx%tFYDj9g>gvaRMM5ND(n;JcJOom})UEY6&rTD;&tlf2-cT3(u;nFFefdBU!2yYMU!VS_G&F=vkoMmKUZe z2*8k-noc%|rjxTtU8EYL0GvBNwV1ejYH=tWjRrJ>OVj*9UrB(_W z+e6KF26~CkORcdgoyz6pYPFCp6loPTtmb58_ud)#!9Vn^IYE53#5SpVXO23}_ zMp(|4a~V257t2?-uYj5;Q7&$*m73G>9f7Sex6_w~ag}D{idmY=luB|Xk;z?>)6J$U zqs*Mp(>Th^;%)U9#+*41^u6ZNR{{?&cd!xn=n5Ng=3M4ucjJgNi=ljV#F<6LF|&&i zS8vc(HaGR0h7rfg-MPcOxc;IJYh$I<{@!4Xno#S!YDClcZ#~GDHrHX6RA(x+2zBHw z71rcxEwi@1;-{0x(#% z=b(lBD|wnc<@v1VDLB9n5VZOSfsamE|+gPusrI(gQX+pVB zY)k~XOW?2PJ6?apZnGr1rseF$>Qbh%D%YyZaPe8ckgA@MH!rR{@+zC%a@XT7dTBbN zZz`n}=W{h!|A_RjDbQtdR*FmVxEK!SWN|z^84@#5DJJH!!HLO<__#a{(c$d)cwEZI z#8@^YiJ_1b7eSJvI;D6dIvLM^EF#OfU@V*yL*ucCI6g5M6f=>WB+9X9NDjuM6EPX0 zvypHvHaQ_eK{;_e7n8(HI1>^h(&WT=HlGPg$6cHyQu`t*)A&F4LxHvH$ z&WGi2I2y}^#mQhaG7$wMq*!QN91rEAkSHDzqm$#2yc~=vP$mdAjgMz0Vo@+SFXm$5$=F0L zC&nf+lj3+h7ZWpaDF|rfd?Xf^CbRhofR-PhjE+x;!K@sE+DTw0)K|=f!csmGm1H>{ z7ole3lX5gD<|gA{crGf7ld)J#oQQ?wump7vhGbESheP39R1)J8(F_y^>M|42h#1aC zCu7-sHXodr5T$%>A{r0H#YrgxoU-FNF)NKn#ZW9Ng|oSQEFTMrvNRcj)|(I`!Dv(* zkL5yQJTC`?gIV7%T7vN3r)k`wb2(cI)jHYiF`6l#}`1;uy_dO=RgOTpMA;0cEz zktEaFg1HiOIysyXGoc97BODH8LlbdmLwT>&W*H-_Tf+dNn@x%GMyVDWY_nO!NTMQV zYO*w6Szedumr!^t6del(!x4XI^3GuN&TwQeXR{3YQm_NFmZ^JXL!*(=C{NyHv6IIv zjEwcf>Tb7zaK$2!I}-5Ox+hHHQGjR9?))CPzm8wwll*bM%kx9eS3IBb z{GsPT&ucv=J%al??$5hF?EVe+rh5ex;|B>K0VIF~kN^@u0!RP}+#&?}MjVzgi_1|h zugT@wCApG^o7zV!)mrC2!sn~PKz^hr{*<{ z{dYJlQ4mP-x(s*6mvWowVxe@oF?aZw!;*qT)%8n-(zRTl)1bCffyVO zjlzBWqpPp;GgCkD-OnE!P%5IQ8eQM)W6}?;P9Nx3Dw2lR!4zugv{4p3>afgn?Tw|S z4SM9&Rk2XYmk+C0d`FbpRb_aR08}XgD8}n|Sb9K}RH)XJNU&^wpTlwlA{R9Kwewik&RalOOxNy}e)-W-WjcQ1J>j&>Yuus8P%xso7 zYNJ}Ii}8;!sBms*+~g)8nvsfl6U*m8fz1yA@Tr zjcTpDHkzweHPK$L!_o`Yu9c-S5Ery8dz38DpNi$p(ap7Dmn!mg0YX>1<7&BbIbSSa zt*U~3osb8pr{P^j>qWRzok?B;qY(A_CNU z_g{k-g0N1k=J9!y281_=O`lDUu1Tt3pPQEMa+J!~6eydjWN(MkerGe6;XP$VS&i>; zQL9{z*_lLgE|pZH_qHp^Y1gC`*W#UOJiPbJQ1BfNhvfvQk*~?QjhZZOXL*lZDGtV6 z9#E@lyKK;40AchB!AXdzdaMQ#Kmter z2_OL^fCP{L59ihWv8tqC6QhhE*+O0ht z^|SZ|>k&@(t@P1Dy|BZ)wU5)BD2J#}Iify{gH)mFE$O9JN@atK)@u9S6vMqRA=44;GzP}sh}Jvo&@JX>j`c<_kn|| zsQV1;w8r2luu%gv?|_vWpt}UxI;_2}x*vdD|HEZE`ET+=@;&k&@E*W#lCP0}CVvn2 z1ALY|Lq0`50rv%bh+HKVvP!a~hjfw;kO#@T$UDiC@XWwNq)6UNo*=I#=g9)OhfI@S zAd@6aM#vq+PY&F+Qv_BV2_OL^fCP{L5%Vc!4?`)PRiC<~9U(9gm?s_ZZg4$0u!}>d$e4mxf(?Y*rW7MRRu2fY3mo0Z#)D4cs*7pn;19?KE)Gz(E5$4Qw>9 z(xA<1wYb>zzvl%D`2qPB`679if0_)#?!Q2u7M|nt!gqysxbr_t-YvXGct%K&w+rLs z5#g=m8o8gmN*EBl{QLQPg%1lG`}?;2tU`tz{?2_&y}rla>0?O@yZk+ST{bUA_xVW=ORVqo zlWyMDOIuKRcEQWU`fh*M9;k}Tu;0&WYS{4i*m^D6j=#&+0|#`=zsDw8)CSj{Kj0Y_ zebb-mGVJ;@D%!R`)2#0MGm*COUq7nv{2#KNux!8e&(x@U|Lr!fg>C*bOZ44;W{F|@ z-wm}=_y6hh{~Y-%3;e?m5tt|0z7n|K!WPs%Re)Kmter2_OL^fCP{L5)N_CF z?N0bH02<>}Vm|jpS10@k0FALLG0*0*bpPK$zG@*qA0z<3=5gYhc7a8w7o4&MzPxdslnk|WGU7md~5PnS~3 zO&2P1u2#4rUr#pRb9N6mEAMihI1aHVPP9_KonkG1KyXF^kUbJ@AJ z<#z8SkgTUiQ$%&R+z$IOVK>?B`*=v!+{3*!d)Nb#P>3mp_w(hT^fZ0-9&6TWbBxP- z+CJchJpKJF&zf9Wm06Ce;j7F0O8Y>Eo@#wVOJ(@#@=n^j;cfP&UgPa|4Yot<;2?v% z1lDM+)^OlG?Cf?nXFuQ?b3p9an3lZ=??`M=(GcO?=Nz>|22oV-D&t&(P#@RYvCG?S zAF)CD;bE3u85Ww@bm;PS+7DSF^`S$|9GZ@nuKx9UoIPzI?&;CQROD@U?&Bc3xy|fF zuobTV`5#%xDCri?2yO5Lz%k+=uNA&0d{X$5@FbZb>+nl|ZxB8ryaj$C@E7?X!IJ`S zBL70(BNT-}^0&9~RF73h0!RP}AOR$R1dsp{Kmter3H)3Ta9Mqde=0m+JxhO@;JW^( zP`~vI*V<>J`K*F|YjQh9%mXmiXH9IQgvm$gZ`XsXN2H2O{tsG;cGW#nPdI$gdcvGg zOLW|4jhKa0OTcR#HpdU~);{=&g1S$otJ8XnGx|(A+pRrJOw1BN!^rQohPY-Ihlg1E zIfFC9O^*$3i;j9#TwT^dZprAKXs=70J=QTMY49^Rx~-xLn_lBHfOc9nlh45Bu^wW- ze?YTaX+>!Awsxz}#XOVj`k!2&_y7L^d5XN7{3bjF@H~AA0G zSQupC7z;;PD6(*bg~Kd7&cXl-hiK^TVqqr>2@3@pdU+OlSm^>)NB{{S0VIF~kN^@u0!RP}AOR$B>l2{Q|HDlP77`P_ zB~(4{^K`n;bUfjDy#32gtK*#YZEZhpTWq`M*5`mV{Miw(eaLsO$Zee~lqC6DYI7}H zE>6q&La9)Lhmq3C*V5{#LQ$TP(lf0Rk;GzhYANZTnVU}D=fAis9V>i?A3pPQ&FNSC zLl+y1T?uUU@J?R>%sk!N%(={(+}b!{2jlddJD5ZhuJ{x4v$M3WbMuL*R5I|$36IkU zj}JX2)-u_mY_7Wbn6DeNG<9+|*`nrr$B@FM3F3^j0(_T}r<05Rg~ge(Q;Qe;XOb8E zQ_D;9GjpK!Y;tZ1tb+f`v$G?0Een6I+Ls|r=2+dunkg9E}DvgH2r3 zET=Y##m#dYnPMSdkfl}%8rwt7cLsWi&P%PaDxJ#FhusRVr+`^eP(x z(t(oNtk&c;4WT)TqV(&zZ-nJ+IhUd1bFqAN`wFOu66NB?TB$i5-x1gvb31)$7*}aF zu9&5{OsOPS5}Dj3Io)i!GRn*eJ&mKxEZ$a+Va%EHK;LUFeI@Ylat9l6kFKy0XU=6l zb~lbVvlz-(N1Rz?95cHZarFjmWph){X&7;=+?_kji|a4yur^jo?e7iNs0p>st41`9 z|JH+iX>%QBNp+@Di%>`2QejQ5)-r4BD}Fk8EX|ySnH1(L+7m^W(>E629wMwKs>M=$ zX&R^zieVk~W?i0}Ik&8xdDJvoCPVj9W%Y`|IYy09Og2piu%SQS7RS+6dHPgdyKaK~9zEmy1RZZgv*yVL3P zB}KK#%pEzskg3R}TAEJVW?6g7_A{q4YA`gVIT>9rv^qPF!0C*cV9r4M^43X*({~wW zzD<4RGmOG|(akvx^PeHPvtFP263Cow2W>ml?K+j{u^X2~O~q0wtqpeUV6dKZ2jg0S z4?KLgO_`(<`Xp_jWwz7aI6%x|!w@lxZfvM1HtW577b}r%+d!Y|*gQtpQ}lBKOM(|S z!_QPHn-%}bndW8SY^GY9&sOCMyn?_u^VV03{^{hYspZ)ve{Q3~Mr=);reTnmtxjL4 zm)q)N!z3lwYK77&8`Jgmwi07&>`%?(ogEp|x=J3G-_7_;ssXhQ}G&x!@#sVQmd z1wGBo+#Fnm-UHX2O(bZ_Qz^Kt*Hc4fTC~y$qdj!eQL)36!*{5yn;JbnVzRrcbqv1a zddBX?NHBFf+nU=5I_TYSncTXw_-9gVA-gr?b^0y_xUCDORmF6smf7|yNasV7?QNV& z8-?5IXnC5Z>gYtP>rgST1m1XU4_m;#dDwK0rkV5%^r)wCj%*YfrpiXajm?<44$V~k z6k9)G>7DBaPO~ra%3ED58*8Ut<}{r3)r3kluIEX)-j$So8rXRqe*?>!`pIS~d0(UB zXek4)?Wwgo3vJ`6Nt8=9`Py!B&U~2K zcW*aXv=psXwHz*59%wD?yJ7%bFoZjIGJ0BGmrGKnRNKL5@6JZIRJEhgrd%t5M|+9W z7m09>8@wfrq+2lU+-|sQOj?e4P1-zgcX1V~`cKqh(`tOR9`|aFod?=a?XooU{MpV# zdUbBZ1*qY!cTnB7m-a%W!7jQWT=8qu%Qln8|Kn_LV(`?kNf{G33@CP2_OL^ zfCP{L5 { + slide.style.display = index === 0 ? 'block' : 'none'; + }); + }); +}); diff --git a/conf.py b/conf.py index 7d3f745..2ce8067 100644 --- a/conf.py +++ b/conf.py @@ -1,10 +1,8 @@ import os import sys -import sphinx_rtd_theme +sys.path.insert(0, os.path.abspath('_ext')) # Adjust '_ext' to your directory's path -sys.path.append(os.path.abspath("./_ext")) - # extensions = ['todo'] todo_include_todos = False @@ -15,7 +13,15 @@ copyright = '2023, Your name' author = 'Your Name' -extensions = ['pechakucha.pechakucha'] +extensions = [ + 'Pechakucha.pechakucha_directive', + #"myst_nb", + #"ablog", + 'sphinx.ext.intersphinx', + "sphinx_design", + 'todo', + #"sphinxext.opengraph", + ] # ---------------------------------------------------------------------------- # Below here does not need to be edited for the lab # ---------------------------------------------------------------------------- @@ -39,20 +45,10 @@ } # Specify 'dirhtml' as one of the builders -html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] # ... -extensions = [ - #"myst_nb", - #"ablog", - 'sphinx.ext.intersphinx', - "sphinx_design", - 'todo', - #"sphinxext.opengraph", -] - # "sphinxext.rediraffe", # Add any paths that contain templates here, relative to this directory. @@ -143,6 +139,5 @@ def setup(app): app.add_css_file("custom.css") - # app.add_js_file("custom.js") - + app.add_js_file("custom.js") diff --git a/index.rst b/index.rst index 39954ac..89b5145 100644 --- a/index.rst +++ b/index.rst @@ -1,5 +1,5 @@ Welcome to my profile site! -============ +==================================== .. toctree:: somefile.rst diff --git a/pechakucha/Pechakucha/__init__.py b/pechakucha/Pechakucha/__init__.py deleted file mode 100644 index b0181d1..0000000 --- a/pechakucha/Pechakucha/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .pechakucha import setup \ No newline at end of file diff --git a/pechakucha/Pechakucha/pechakucha.py b/pechakucha/Pechakucha/pechakucha.py deleted file mode 100644 index bc706c1..0000000 --- a/pechakucha/Pechakucha/pechakucha.py +++ /dev/null @@ -1,89 +0,0 @@ -from docutils import nodes -from docutils.parsers.rst import Directive -from sphinx.locale import _ -from sphinx.util.docutils import SphinxDirective - -# Custom node classes -class PechakuchaSlide(nodes.Admonition, nodes.Element): - pass - -class PechakuchaSlideshow(nodes.General, nodes.Element): - pass - -# Directive for individual slides -class PechakuchaSlideDirective(SphinxDirective): - has_content = True - - def run(self): - slide_node = PechakuchaSlide() - self.state.nested_parse(self.content, self.content_offset, slide_node) - return [slide_node] - -# Directive for the slideshow -class PechakuchaSlideshowDirective(Directive): - has_content = True - - def run(self): - slideshow_node = PechakuchaSlideshow() - self.state.nested_parse(self.content, self.content_offset, slideshow_node) - return [slideshow_node] - -# Visitor functions for rendering -def visit_pechakucha_slide_node(self, node): - # Start the HTML rendering for a slide - self.body.append('
\n') - -def depart_pechakucha_slide_node(self, node): - # End the HTML rendering for a slide - self.body.append('
\n') - -def visit_pechakucha_slideshow_node(self, node): - # Start the HTML rendering for the slideshow container - self.body.append('
\n') - -def depart_pechakucha_slideshow_node(self, node): - # End the HTML rendering for the slideshow container - self.body.append('
\n') - - # Include JavaScript logic for the slideshow - self.body.append(""" - - """) - -# Setup function to register the extension with Sphinx -def setup(app): - app.add_node(PechakuchaSlide, - html=(visit_pechakucha_slide_node, depart_pechakucha_slide_node)) - app.add_node(PechakuchaSlideshow, - html=(visit_pechakucha_slideshow_node, depart_pechakucha_slideshow_node)) - - app.add_directive('pechakucha_slide', PechakuchaSlideDirective) - app.add_directive('pechakucha_slideshow', PechakuchaSlideshowDirective) - - return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} diff --git a/pechakucha/dist/sphinxcontrib-pechakucha-0.1.tar.gz b/pechakucha/dist/sphinxcontrib-pechakucha-0.1.tar.gz deleted file mode 100644 index 0560cd15963b357464cca226d1fecd5f9c99b7fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1819 zcmV+$2juu4iwFo%Id)|N|8sC?X>NF9Z*FvQX<{vKWn*YzYjtC2VJ$E&F)nmrascgH zZFAZ<5YA`+3Jv`LOo;I-v}x$vU7Blq*SER!`X!g~C|H0d#^x+R!*u%JZ)F?Xyd^+W zZl>&h2n0zhdA0jIT1nQMdh?f$^zJpIK8ufjh#0A?`!o#ODZZ=UO~W#+BXW1N2N?@V zW9a_qFvWUGhLR6i$7~yx<+R#%OSeqBZ9i*iM<_qNh|z$DcikwIF~2z(vF?E0j^WRV zp_|P|jQ_Ulrk}0!)3D}a-gI2sb!^AARQ$KxwsAz*MpT`qtrv8E`}vx9FnV|?0VTC za=V~%8cAI~ItPixGQmnWwA%mtTVl-@Y(D(4i5iDDMQQj3Ru zO+C{@)$s~=^$PPQqe{Iod*UbL63|K}R(}2I-P=M}qM4?H)bc02iTtTfMhtc3h+L_%QmG^bXCi6*BKPfp z$+Ybo815ZJm+@T73uj(Ul;SklYIX88FP~E&ps@meg{XR;$qZb@Z_{&Sa&_QXTlUI& zsk@|0c%GWl$&<0b$62Oc4_Mfj1NiCqcySN~PF(S8i2iB7bf1e+K&POl5=J4bJfCav zZNA&W1jono6?u=;N(Oo{Kbo}znVHjkxLa{mYH>o$6%TL&lzY4I1OQo|U|AoHWv!T= z2617%Rew&JO>#b!X_-95*J#5^Z7zsF(B2120`jhxyHf?z6@BH6u$iMj&K1U zPW@@#I-h##`xg`V@|FYof{)iKQ2#uI+P4wppnj!MDE$Hcv~u=l69yA#temuxhc8Z9 z{w*sxYnG!3LaVN*;8N|U6b~jNFi>CFAPrD<2L=#{9XSjmT_q$?lWfG)AW$KyEeyKVLXh7u!@DYnNU1 zO?9Y#m-Wo8Sh4|SwEwj_NiRcGPe~PWCTLuRCxS>}fu~}?6ST*mP_1OjWnW@0S-J4r z|B`j%{Xe|_x8nZaQ_I5p-v__{lW>pT?e)Ju{_j2iaaxP#|Bi|0KYNiY*6({f>_yj_ zq?m;q{(WXtsxTN`467|9LD(%-v2=UpXdJ_ZhUOV|5m$n{$s2AABJt< z{r~-)|0MG)qo_EONq%XN9uL(HdH0s~nb5R!FCs~QLkgHtUFSX3bVDFZjXP;#oE@X2 z$~tqZYxT60hhXMFCC>kjA>S6At9)ajn(m2YYOWhv9Z?GNf8_rklmDA7*T(odc>XUJ zmiB0MNE%O6(%9TM{-{O>sJ1^#ba7M}m^Xa2J-er@%;p4z%s zK(x)*hT2wcv_Wm3savZo>`uLahqq$GX0uJ@4Xev&X`o{|0Dk+|0DnJ!2ji(YUlhPeqGG}+m?&`zYodYG{ZnZ z{zv{t{zv{t{@;fGH`*k9kpCgr=ktHVa2@3TeMqstk3o-uf`WpAf`WpAf`alh%YRmi J;xzzx008~z$E5%O diff --git a/pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO b/pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO deleted file mode 100644 index de6ecb4..0000000 --- a/pechakucha/sphinxcontrib_pechakucha.egg-info/PKG-INFO +++ /dev/null @@ -1,3 +0,0 @@ -Metadata-Version: 2.1 -Name: sphinxcontrib-pechakucha -Version: 0.1 diff --git a/pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt deleted file mode 100644 index 5e4cb3b..0000000 --- a/pechakucha/sphinxcontrib_pechakucha.egg-info/SOURCES.txt +++ /dev/null @@ -1,8 +0,0 @@ -setup.py -Pechakucha/__init__.py -Pechakucha/pechakucha.py -sphinxcontrib_pechakucha.egg-info/PKG-INFO -sphinxcontrib_pechakucha.egg-info/SOURCES.txt -sphinxcontrib_pechakucha.egg-info/dependency_links.txt -sphinxcontrib_pechakucha.egg-info/requires.txt -sphinxcontrib_pechakucha.egg-info/top_level.txt \ No newline at end of file diff --git a/pechakucha/sphinxcontrib_pechakucha.egg-info/dependency_links.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/pechakucha/sphinxcontrib_pechakucha.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/pechakucha/sphinxcontrib_pechakucha.egg-info/requires.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/requires.txt deleted file mode 100644 index 2806c16..0000000 --- a/pechakucha/sphinxcontrib_pechakucha.egg-info/requires.txt +++ /dev/null @@ -1 +0,0 @@ -Sphinx diff --git a/pechakucha/sphinxcontrib_pechakucha.egg-info/top_level.txt b/pechakucha/sphinxcontrib_pechakucha.egg-info/top_level.txt deleted file mode 100644 index 2e270c5..0000000 --- a/pechakucha/sphinxcontrib_pechakucha.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -Pechakucha diff --git a/somefile.rst b/somefile.rst index ce5577a..0ecff25 100644 --- a/somefile.rst +++ b/somefile.rst @@ -2,44 +2,13 @@ My Pechakucha ================= -.. Hello everyone, this is my first time running this extension to see how it works. +Hello everyone, this is my first time running this extension to see how it works. -.. .. todo:: - - Try to understand how this works -.. .. grid:: 2 3 3 4 +.. pechakucha:: + :transition_time: 3000 - .. grid-item:: + dog.jpeg + download.jpeg + - .. grid-item-card:: - :img-top: dog.jpeg - - .. card:: - :img-background: download.jpeg - :class-card: sd-text-black - - .. grid-item-card:: - :img-bottom: images/particle_background.jpg - - Header - ^^^ - Content - +++ - Footer - -.. pechakucha_slide:: - - .. image:: dog.jpeg - :alt: Alternate text for image 1 - -.. pechakucha_slide:: - - .. image:: path/to/image2.jpg - :alt: Alternate text for image 2 - -.. pechakucha_slide:: - - .. image:: path/to/image3.jpg - :alt: Alternate text for image 3 - -# Add more slides with images as needed From b4ca0ceacdbde2af9e4ca0d437dbfdfb73b739fd Mon Sep 17 00:00:00 2001 From: Obarrie <113312631+Obarrie@users.noreply.github.com> Date: Sat, 16 Dec 2023 12:38:59 -0500 Subject: [PATCH 09/14] Update somefile.rst --- somefile.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/somefile.rst b/somefile.rst index 0ecff25..50d5890 100644 --- a/somefile.rst +++ b/somefile.rst @@ -1,6 +1,6 @@ ================= My Pechakucha -================= +================= Hello everyone, this is my first time running this extension to see how it works. From ae67dd30f4439dc02d6a5deedf006c16a8e17e26 Mon Sep 17 00:00:00 2001 From: Obarrie <113312631+Obarrie@users.noreply.github.com> Date: Sat, 16 Dec 2023 12:49:47 -0500 Subject: [PATCH 10/14] Update somefile.rst --- somefile.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/somefile.rst b/somefile.rst index 50d5890..135dc7a 100644 --- a/somefile.rst +++ b/somefile.rst @@ -2,7 +2,7 @@ My Pechakucha ================= -Hello everyone, this is my first time running this extension to see how it works. +Hello everyone, this is my first time running this extension to see how it works .. pechakucha:: From 25b3323b0e1a09766e0c7f1757186fb71ab8a2fd Mon Sep 17 00:00:00 2001 From: Isaac Gbaba Date: Sun, 17 Dec 2023 14:09:06 -0500 Subject: [PATCH 11/14] Working Pechakucha Directive --- conf.py | 57 +++++++++++++++++++++++++++++++++-------------- index.rst | 2 +- somefile.rst | 2 +- someotherfile.rst | 9 ++++---- 4 files changed, 46 insertions(+), 24 deletions(-) diff --git a/conf.py b/conf.py index 1815724..2ce8067 100644 --- a/conf.py +++ b/conf.py @@ -1,33 +1,55 @@ import os import sys +sys.path.insert(0, os.path.abspath('_ext')) # Adjust '_ext' to your directory's path -sys.path.append(os.path.abspath("./_ext")) -extensions = ['todo'] +# extensions = ['todo'] todo_include_todos = False +# -- Project information ----------------------------------------------------- + +project = 'Site Title' +copyright = '2023, Your name' +author = 'Your Name' + +extensions = [ + 'Pechakucha.pechakucha_directive', + #"myst_nb", + #"ablog", + 'sphinx.ext.intersphinx', + "sphinx_design", + 'todo', + #"sphinxext.opengraph", + ] +# ---------------------------------------------------------------------------- +# Below here does not need to be edited for the lab +# ---------------------------------------------------------------------------- -# # -- Project information ----------------------------------------------------- +# -- General configuration --------------------------------------------------- -# project = 'Site Title' -# copyright = '2023, Your name' -# author = 'Your Name' +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +# conf.py +# ... -# # ---------------------------------------------------------------------------- -# # Below here does not need to be edited for the lab -# # ---------------------------------------------------------------------------- +# Specify 'dirhtml' as one of the builders +html_theme = 'sphinx_rtd_theme' -# -- General configuration --------------------------------------------------- +# Add 'dirhtml' to the 'html_theme_options' configuration +html_theme_options = { + 'style_nav_header_background': '#343131', +} + +# Specify 'dirhtml' as one of the builders -# # Add any Sphinx extension module names here, as strings. They can be -# # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# # ones. +# ... -# # "sphinxext.rediraffe", +# "sphinxext.rediraffe", # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -115,6 +137,7 @@ # "tasklist", ] -# def setup(app): -# app.add_css_file("custom.css") -# # app.add_js_file("custom.js") +def setup(app): + app.add_css_file("custom.css") + app.add_js_file("custom.js") + diff --git a/index.rst b/index.rst index 89b5145..39954ac 100644 --- a/index.rst +++ b/index.rst @@ -1,5 +1,5 @@ Welcome to my profile site! -==================================== +============ .. toctree:: somefile.rst diff --git a/somefile.rst b/somefile.rst index 135dc7a..d86b45b 100644 --- a/somefile.rst +++ b/somefile.rst @@ -1,6 +1,6 @@ ================= My Pechakucha -================= +================= Hello everyone, this is my first time running this extension to see how it works diff --git a/someotherfile.rst b/someotherfile.rst index 590fa1f..cd8b8f3 100644 --- a/someotherfile.rst +++ b/someotherfile.rst @@ -1,10 +1,9 @@ -foo -=== +=============== +Class Progress +=============== .. This is what I have to get done for this class: .. .. todolist:: -.. write code for pechakucha -.. Add to github -.. Make extension + finished pechakucha From a6e12f2cc14b6a887c617ddf4dbd841fcf1f7882 Mon Sep 17 00:00:00 2001 From: Osman Barrie Date: Mon, 18 Dec 2023 22:57:16 -0500 Subject: [PATCH 12/14] deleted the files we wanted --- .vs/ProjectSettings.json | 3 --- .vs/VSWorkspaceState.json | 7 ------- .vs/pechakuchaTest/v16/.suo | Bin 15360 -> 0 bytes .vs/slnx.sqlite | Bin 90112 -> 0 bytes 4 files changed, 10 deletions(-) delete mode 100644 .vs/ProjectSettings.json delete mode 100644 .vs/VSWorkspaceState.json delete mode 100644 .vs/pechakuchaTest/v16/.suo delete mode 100644 .vs/slnx.sqlite diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json deleted file mode 100644 index f8b4888..0000000 --- a/.vs/ProjectSettings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "CurrentProjectSetting": null -} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json deleted file mode 100644 index c70e343..0000000 --- a/.vs/VSWorkspaceState.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ExpandedNodes": [ - "" - ], - "SelectedNode": "\\C:\\Users\\isaacg\\Source\\Repos\\pechakuchaTest", - "PreviewInSolutionExplorer": false -} \ No newline at end of file diff --git a/.vs/pechakuchaTest/v16/.suo b/.vs/pechakuchaTest/v16/.suo deleted file mode 100644 index a532bea9eecde4570a55075dfce15b5fa9622da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15360 zcmeI3O>-1Q7{_~qsQ8XA5fOF4h$w8>kN^P{0|{?R2ohc_D`mOa-Gr4*vbD2;aQ32C zzX9dRDldKjJ$SSz;b3|2q@Tl*`1{XHC$p2C&15%9cHQ23W_o&h`st_pdF}4KcX#U_ zx4+;1rwOHFW|O(UxWzmiC{G0P<{4vN;8|t&7Z(@xN_n!K)IuY0(aiCyn4~#rX1SNm zElp+Y)NM8|&H3h4zPk6#SD${j|M$e>)Ej!PTB&~BZMv55 zYuKyb)_%G`G3@Imi(hz4rbrLUCJ&4=78xM#*NeLKn65-{x})j^%SU+l(JvS?^I$2O z0`v=}1DHoBDF;8Skr)1lDDMK|(tnP+R<66r{~aWN{C2;sVDXETJpnukJOw-rXbiUk z&jQZ@F9Z5U`ary}4N(3u?k@p5{Abnaq>V8G|E2tY_Vt%b@^2oX{Exwh9r1d!ZHj#U;%{xzklYtt53`{c*%R3Y>Hk-NSAo}nB(M|M1-uUQ0B-=hfj5CYz+1rEz+PYl7UeUJjVSu^Zj zr|>+cDJ{D`koSf`sgd^Kf5`q@j5VsPC^|!l=1ytMOyd2Gg01Z1md_NDUHwgQ-MuIPnVFY1c_wM2Vd{Nf?o-U#EJHCJ8V zFGv2Sxxm%oxdLcL9CML=&5)NzI!S-?_G9jY;Fm8ZogEkdFm)v-N+Yy3$xKi4liz#Q zo$;)>#*^b!se4T}K>rC^^v(YY{3qx`o<3a18=rGWMVt_w_Avjl<T zGKvS$e=gmkT`8iQRmJkHF8L*4`fKxluqRbbVe`5Yva=rcc=)9&?EIgA);XkY2AL~! zj~n;eUhDvWf(PsC+46e#4|%!AuW$*x4tUSOcMdW)j^@$mSKvHF#!=&L+gJR%i3g2o z-0}Z_x|V*)yX38mrp>@>;y-Cv2R-bqOyucFCDJM!1;2bA`8jd%SM#6r|2*UGS-s#) zue1ap38ggnB}($o;^IF`T^s+5gFWlhdIQ>}b;@{HVZWf48PZHuj5svIXvszxGt>b8 zpXWRId+U`f@5iNoz3|$0S{Z*>|9JeTdG=Pqj$;W+_-FD&^VGdF+Yn*ib zk$L!CvCssOewv8?2sy>6GyLX#y>yGRE0j(kE%IoJw5ayS{n9=>rCz>2!nNORrJwtR zE8$sc3rC)3V}5P}DzfGVV<~EWX#;9zm`lx3xozghA-WKMwx-NTV#Qq!_iW3~NtlWS zbkacEP$Qpe#--+73u=Jy++@+{ia0#JGv-bk&{V+w$PP*i{MrWeczf8_nJKNEdD^WN zZK>rltKAfl6x(K&ZXiXHrZO}Yh$_T=zqJAPiLSEi4Qkz7ahfP=Mct=UCq*cjf}&*` zYoFVRCXdqgm?y0iRL2ppUyPIpM6NNauc%_zQC7T&S)lmy6TpkxE~B@#+9K_(_1Fx* zEbAc??s}lz514RQXtY10dL_Ql>W%hn=Kb6y%A_|nxAl|oH(SLa7>>~zf<~y1SYOwAsevxnY;N1my?45A7jD;lS*Nfs zmC5A_v(u^kLM1<2Da_5LDs!pIwS20QcPc5TP^rKFcKX{NjtwTiINB(Ft%XK`_DJ+j zGt@c%5j{?J?X?x}Vd)u1_T!v;wJhD)|7-32zk2%*SF!5ag&A{gytfZx=iS~9G_e1n zwQ1Q6rF!^>u|o19w9HJTa{?7ToHJ|@m^ZA2~bpEds|E-TEZZ!UCHvW?x)B1%h UPb2YXv+?8lj9#ae2Q>o!0Duy!!~g&Q diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index a8abaf57b4f613149a32886f9612764e49257c59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90112 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 Date: Mon, 18 Dec 2023 22:58:25 -0500 Subject: [PATCH 13/14] deleted files --- .gitignore | 1 + _ext/Pechakucha/setup.py | 4 + _ext/todo.py | 190 --------------------------------------- conf.py | 2 +- 4 files changed, 6 insertions(+), 191 deletions(-) delete mode 100644 _ext/todo.py diff --git a/.gitignore b/.gitignore index 867e1da..9daa1ef 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ _build/ __pycache__ .nox/ .ipynb_checkpoints/ +.vs/ diff --git a/_ext/Pechakucha/setup.py b/_ext/Pechakucha/setup.py index aa23d59..5e2f71f 100644 --- a/_ext/Pechakucha/setup.py +++ b/_ext/Pechakucha/setup.py @@ -5,3 +5,7 @@ version='0.1', packages=find_packages(), ) + +install_requires=[ + 'Sphinx', +], \ No newline at end of file diff --git a/_ext/todo.py b/_ext/todo.py deleted file mode 100644 index 7294a30..0000000 --- a/_ext/todo.py +++ /dev/null @@ -1,190 +0,0 @@ -from docutils import nodes -from docutils.parsers.rst import Directive - -from sphinx.locale import _ -from sphinx.util.docutils import SphinxDirective - - -class todo(nodes.Admonition, nodes.Element): - pass - - -class todolist(nodes.General, nodes.Element): - pass - - -def visit_todo_node(self, node): - self.visit_admonition(node) - - -def depart_todo_node(self, node): - self.depart_admonition(node) - - -class TodolistDirective(Directive): - - def run(self): - return [todolist('')] - - -class TodoDirective(SphinxDirective): - - # this enables content in the directive - has_content = True - - def run(self): - targetid = 'todo-%d' % self.env.new_serialno('todo') - targetnode = nodes.target('', '', ids=[targetid]) - - todo_node = todo('\n'.join(self.content)) - todo_node += nodes.title(_('Todo'), _('Todo')) - self.state.nested_parse(self.content, self.content_offset, todo_node) - - if not hasattr(self.env, 'todo_all_todos'): - self.env.todo_all_todos = [] - - self.env.todo_all_todos.append({ - 'docname': self.env.docname, - 'lineno': self.lineno, - 'todo': todo_node.deepcopy(), - 'target': targetnode, - }) - - return [targetnode, todo_node] - - -def purge_todos(app, env, docname): - if not hasattr(env, 'todo_all_todos'): - return - - env.todo_all_todos = [todo for todo in env.todo_all_todos - if todo['docname'] != docname] - - -def merge_todos(app, env, docnames, other): - if not hasattr(env, 'todo_all_todos'): - env.todo_all_todos = [] - if hasattr(other, 'todo_all_todos'): - env.todo_all_todos.extend(other.todo_all_todos) - - -def process_todo_nodes(app, doctree, fromdocname): - if not app.config.todo_include_todos: - for node in doctree.findall(todo): - node.parent.remove(node) - - # Replace all todolist nodes with a list of the collected todos. - # Augment each todo with a backlink to the original location. - env = app.builder.env - - if not hasattr(env, 'todo_all_todos'): - env.todo_all_todos = [] - - for node in doctree.findall(todolist): - if not app.config.todo_include_todos: - node.replace_self([]) - continue - - content = [] - - for todo_info in env.todo_all_todos: - para = nodes.paragraph() - filename = env.doc2path(todo_info['docname'], base=None) - description = ( - _('(The original entry is located in %s, line %d and can be found ') % - (filename, todo_info['lineno'])) - para += nodes.Text(description) - - # Create a reference - newnode = nodes.reference('', '') - innernode = nodes.emphasis(_('here'), _('here')) - newnode['refdocname'] = todo_info['docname'] - newnode['refuri'] = app.builder.get_relative_uri( - fromdocname, todo_info['docname']) - newnode['refuri'] += '#' + todo_info['target']['refid'] - newnode.append(innernode) - para += newnode - para += nodes.Text('.)') - - # Insert into the todolist - content.append(todo_info['todo']) - content.append(para) - - node.replace_self(content) - - -def setup(app): - app.add_config_value('todo_include_todos', False, 'html') - - app.add_node(todolist) - app.add_node(todo, - html=(visit_todo_node, depart_todo_node), - latex=(visit_todo_node, depart_todo_node), - text=(visit_todo_node, depart_todo_node)) - - app.add_directive('todo', TodoDirective) - app.add_directive('todolist', TodolistDirective) - app.connect('doctree-resolved', process_todo_nodes) - app.connect('env-purge-doc', purge_todos) - app.connect('env-merge-info', merge_todos) - - return { - 'version': '0.1', - 'parallel_read_safe': True, - 'parallel_write_safe': True, - } - -# from docutils import nodes -# from docutils.parsers.rst import Directive - -# from sphinx.locale import _ -# from sphinx.util.docutils import SphinxDirective -# # Custom node classes -# class PechakuchaSlide(nodes.Admonition, nodes.Element): -# pass - -# class PechakuchaSlideshow(nodes.General, nodes.Element): -# pass - -# # Directive for individual slides -# class PechakuchaSlideDirective(SphinxDirective): -# has_content = True - -# def run(self): -# text = '\n'.join(self.content) -# slide_node = PechakuchaSlide(text) -# return [slide_node] - -# # Directive for the slideshow -# class PechakuchaSlideshowDirective(Directive): -# def run(self): -# return [PechakuchaSlideshow('')] - -# # Visitor functions for rendering (to be expanded) -# def visit_pechakucha_slide_node(self, node): -# # HTML rendering for a slide -# pass - -# def depart_pechakucha_slide_node(self, node): -# # HTML rendering end for a slide -# pass - -# def visit_pechakucha_slideshow_node(self, node): -# # HTML rendering for the slideshow -# pass - -# def depart_pechakucha_slideshow_node(self, node): -# # HTML rendering end for the slideshow -# pass - -# # Setup function to register the extension with Sphinx -# def setup(app): -# app.add_node(PechakuchaSlide, -# html=(visit_pechakucha_slide_node, depart_pechakucha_slide_node)) -# app.add_node(PechakuchaSlideshow, -# html=(visit_pechakucha_slideshow_node, depart_pechakucha_slideshow_node)) - -# app.add_directive('pechakucha_slide', PechakuchaSlideDirective) -# app.add_directive('pechakucha_slideshow', PechakuchaSlideshowDirective) - -# return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} \ No newline at end of file diff --git a/conf.py b/conf.py index 2ce8067..a1797b5 100644 --- a/conf.py +++ b/conf.py @@ -15,7 +15,7 @@ extensions = [ 'Pechakucha.pechakucha_directive', - #"myst_nb", + "myst_nb", #"ablog", 'sphinx.ext.intersphinx', "sphinx_design", From 2d8f7c430c603ca78f8a3e44e508473b2c6e4a32 Mon Sep 17 00:00:00 2001 From: Isaac Gbaba Date: Wed, 31 Jan 2024 16:46:35 -0500 Subject: [PATCH 14/14] tinkering with pechakucha directive --- _ext/Pechakucha/__init__.py | 23 +-- _ext/Pechakucha/pechakucha_directive.py | 27 ++- _ext/Pechakucha/static/slideshow.css | 13 -- _ext/Pechakucha/static/slideshow.js | 24 --- _static/custom.css | 236 ------------------------ _static/pechakucha.css | 82 ++++++++ _static/pechakucha.js | 51 +++++ _templates/pechakucha_slideshow.html | 29 +++ conf.py | 8 +- index.md | 1 + index.rst | 4 +- somefile.rst | 8 +- 12 files changed, 198 insertions(+), 308 deletions(-) delete mode 100644 _ext/Pechakucha/static/slideshow.css delete mode 100644 _ext/Pechakucha/static/slideshow.js delete mode 100644 _static/custom.css create mode 100644 _static/pechakucha.css create mode 100644 _static/pechakucha.js create mode 100644 _templates/pechakucha_slideshow.html diff --git a/_ext/Pechakucha/__init__.py b/_ext/Pechakucha/__init__.py index 1580445..896be15 100644 --- a/_ext/Pechakucha/__init__.py +++ b/_ext/Pechakucha/__init__.py @@ -1,23 +1,4 @@ -from docutils import nodes -from docutils.parsers.rst import Directive -from sphinx.util.docutils import SphinxDirective +from .pechakucha_directive import PechaKuchaDirective -class SlideshowDirective(SphinxDirective): - has_content = True - def run(self): - container = nodes.container('', classes=['slideshow']) - self.set_source_info(container) - - for image_path in self.content: - image_node = nodes.image(uri=image_path) - container += nodes.figure('', image_node) - - return [container] - -def setup(app): - app.add_directive("slideshow", SlideshowDirective) - app.add_css_file('slideshow.css') - app.add_js_file('slideshow.js') - - return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} +__all__ = ['PechaKuchaDirective'] diff --git a/_ext/Pechakucha/pechakucha_directive.py b/_ext/Pechakucha/pechakucha_directive.py index c8fb50b..43e5516 100644 --- a/_ext/Pechakucha/pechakucha_directive.py +++ b/_ext/Pechakucha/pechakucha_directive.py @@ -9,7 +9,7 @@ class PechaKuchaDirective(SphinxDirective): } def run(self): - transition_time = self.options.get('transition_time', 3) # Default to 3 seconds + transition_time = self.options.get('transition_time', 3000) container = nodes.container('', classes=['pechakucha-slideshow']) container['data-transition-time'] = str(transition_time) @@ -17,15 +17,30 @@ def run(self): self.set_source_info(container) for image_path in self.content: - image_node = nodes.image(uri=image_path) - figure_node = nodes.figure('', image_node) + image_node = nodes.image(uri=image_path, classes=['pechakucha-slide']) + figure_node = nodes.figure('', image_node, classes=['align-default']) container += figure_node + # Add navigation buttons + nav_container = nodes.container('', classes=['pechakucha-controls']) + prev_button = nodes.raw('', '', format='html') + next_button = nodes.raw('', '', format='html') + nav_container.extend([prev_button, next_button]) + container += nav_container + + # Add progress indicator container + progress_container = nodes.container('', classes=['pechakucha-progress']) + container += progress_container + + script_node = nodes.raw('', "", format='html') + container += script_node + return [container] - + + def setup(app): app.add_directive("pechakucha", PechaKuchaDirective) - app.add_css_file('pechakucha/static/slideshow.css') - app.add_js_file('pechakucha/static/slideshow.js') + app.add_css_file('_static/pechakucha.css') + app.add_js_file('_static/pechakucha.js') return {'version': '0.1', 'parallel_read_safe': True, 'parallel_write_safe': True} diff --git a/_ext/Pechakucha/static/slideshow.css b/_ext/Pechakucha/static/slideshow.css deleted file mode 100644 index 922c20b..0000000 --- a/_ext/Pechakucha/static/slideshow.css +++ /dev/null @@ -1,13 +0,0 @@ -.pechakucha-slideshow figure { - display: none; /* Hide all figures initially */ - position: absolute; - width: 100%; - height: 100%; - /* Other styling as needed */ -} - -.pechakucha-slideshow img { - width: 100%; - height: 100%; - object-fit: cover; /* Adjust this as needed */ -} diff --git a/_ext/Pechakucha/static/slideshow.js b/_ext/Pechakucha/static/slideshow.js deleted file mode 100644 index 7b48b3f..0000000 --- a/_ext/Pechakucha/static/slideshow.js +++ /dev/null @@ -1,24 +0,0 @@ -document.addEventListener("DOMContentLoaded", function() { - let slideshows = document.querySelectorAll('.pechakucha-slideshow'); - - slideshows.forEach(function(slideshow) { - let slides = slideshow.getElementsByTagName('figure'); - let currentIndex = 0; - - // Get the transition_time value from the pechakucha directive - let transitionTime = parseInt(slideshow.getAttribute('data-transition-time')) || 1000; // Default to 1000 ms (1 second) - - let slideInterval = setInterval(nextSlide, transitionTime); - - function nextSlide() { - slides[currentIndex].style.display = 'none'; - currentIndex = (currentIndex + 1) % slides.length; - slides[currentIndex].style.display = 'block'; - } - - // Initialize the slideshow - Array.from(slides).forEach((slide, index) => { - slide.style.display = index === 0 ? 'block' : 'none'; - }); - }); -}); diff --git a/_static/custom.css b/_static/custom.css deleted file mode 100644 index cd92b46..0000000 --- a/_static/custom.css +++ /dev/null @@ -1,236 +0,0 @@ -/* Bio area */ -div.profile-pic { - margin-top: 1em; -} - -figure.profile-pic img { - /* border-radius: 500px; */ - width: 80%; - max-width: 190px; - margin: 0 auto; - display: block; -} - -.bio-info { - margin: 1em auto; - max-width: 220px; -} - -.name { - font-size: 1.5em; -} - -.focusareas { - font-size: .9em; - font-weight: bold; -} - -.whatido { - margin-top: 1em; -} - -.major { - margin-top: 1em; -} - -.gradyear { - margin-top: 1em; -} - - - -/* Sidebar for blog archive / each post */ -ul.ablog-archive { - padding-left: 0px; -} - -.bd-sidebar h2 { - font-size: 1.4em; -} - -.bd-sidebar ul { - padding-left: 0; - list-style-type: none; -} - -.bd-sidebar li { - padding-bottom: .5em; -} - -div.bd-sidebar h3, div.bd-sidebar h2, div.bd-sidebar ul { - padding-left: 5%; -} - -/* In-page post lists */ -ul.postlist { - padding-left: 0; -} - -ul.postlist > li > p:first-child { - font-size: 1.5em; -} - -ul.postlist li + li { - margin-top: 2em; -} - -ul.postlist li > p > a { - font-style: normal; - font-size: 1.3em; -} - - -/* more space in navicons */ - -ul.navbar-nav { - font-size:1.5em ; - list-style-type: none; - margin: 0; - padding: 0; - overflow: hidden; -} - - - -/* Timeline CSS */ -div.timeline div.card { - border: 0px; -} - -div.timeline div.left { - text-align: right; - border-right: 1px solid black; -} - -div.timeline div.entry::after { - width: 1em; - height: 1em; - background: white; - border-radius: 50%; - content: ""; - top: 1em; - display: block; - position: absolute; - border: 1px black solid; - z-index: 999; -} - -div.timeline div.entry.left::after { - right: -.5em; -} - -div.timeline div.entry.right::after { - left: -.5em; -} - -/* * { - box-sizing: border-box; -} */ - - -.slide { - display: none; - - animation-name: fade; - animation-duration: 1.5s; -} - -img { - vertical-align: middle; -} - -/* Slideshow container */ -.slideshow-container { - /* max-width: 1000px; */ - position: relative; - margin: auto; -} - -/* Caption text */ -.text { - color: #f2f2f2; - font-size: 15px; - padding: 8px 12px; - position: absolute; - bottom: 8px; - width: 100%; - text-align: center; -} - -/* Number text (1/3 etc) */ -.numbertext { - color: #f2f2f2; - font-size: 12px; - padding: 8px 12px; - position: absolute; - top: 0; -} - -/* The dots/bullets/indicators */ -.dot { - height: 15px; - width: 15px; - margin: 0 2px; - background-color: #bbb; - border-radius: 50%; - display: inline-block; - transition: background-color 0.6s ease; -} - -.active { - background-color: #717171; -} - -H1.pechakucha { - display:none; -} - -/* Fading animation */ -.fade { - animation-name: fade; - animation-duration: 1.5s; -} - -@keyframes fade { - from { - opacity: .4 - } - - to { - opacity: 1 - } -} - -/* On smaller screens, decrease text size */ -@media only screen and (max-width: 300px) { - .text { - font-size: 11px - } -} - -.popup-trigger { - cursor: pointer; - } - - .popup-image { - display: none; - position: fixed; - z-index: 1000; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - max-width: 90%; - max-height: 90%; - box-shadow: 0 0 25px rgba(0, 0, 0, 0.5); - } - - .popup-overlay { - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.5); - z-index: 999; - } \ No newline at end of file diff --git a/_static/pechakucha.css b/_static/pechakucha.css new file mode 100644 index 0000000..7438d70 --- /dev/null +++ b/_static/pechakucha.css @@ -0,0 +1,82 @@ +.pechakucha-slideshow { + width: 100%; + position: relative; + background-color: #f8f8f8; /* Example background color */ + margin-bottom: 20px; + padding: 10px; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); /* subtle shadow for depth */ +} + +.pechakucha-slide { + display: none; /* Hide slides by default */ + width: 100%; + height: auto; /* Adjust based on your images */ +} + +.pechakucha-controls { + text-align: center; + margin-top: 20px; +} + +.pechakucha-controls button { + padding: 10px 20px; + margin: 0 5px; + background-color: #007bff; + color: white; + border: none; + border-radius: 5px; + cursor: pointer; + font-size: 1em; +} + +.pechakucha-controls button:hover { + background-color: #0056b3; +} + +.pechakucha-progress { + position: absolute; + bottom: 10px; + width: 100%; + text-align: center; +} + +.pechakucha-progress-dot { + height: 10px; + width: 10px; + margin: 0 2px; + background-color: #bbb; + border-radius: 50%; + display: inline-block; +} + +.pechakucha-progress-dot.active { + background-color: #717171; +} + +/* Responsive styles */ +@media (max-width: 600px) { + .pechakucha-controls button { + padding: 5px 10px; + font-size: 0.8em; + } +} +.pechakucha-progress { + text-align: center; + position: absolute; + bottom: 10px; + width: 100%; +} + +.pechakucha-progress-dot { + height: 10px; + width: 10px; + margin: 0 2px; + background-color: #bbb; + border-radius: 50%; + display: inline-block; + cursor: pointer; +} + +.pechakucha-progress-dot.active { + background-color: #717171; +} diff --git a/_static/pechakucha.js b/_static/pechakucha.js new file mode 100644 index 0000000..5b98599 --- /dev/null +++ b/_static/pechakucha.js @@ -0,0 +1,51 @@ +document.addEventListener('DOMContentLoaded', function() { + let slideIndex = 0; + let slides = document.getElementsByClassName('pechakucha-slide'); + let transitionTime = document.querySelector('.pechakucha-slideshow').dataset.transitionTime; + let progressContainer = document.querySelector('.pechakucha-progress'); + + // Create and append progress indicators + for (let i = 0; i < slides.length; i++) { + let dot = document.createElement('span'); + dot.classList.add('pechakucha-progress-dot'); + dot.addEventListener('click', (function(index) { + return function() { + moveSlide(index - slideIndex); + }; + })(i)); + progressContainer.appendChild(dot); + } + + function showSlides() { + updateSlidesAndDots(); + slideIndex++; + if (slideIndex >= slides.length) { slideIndex = 0; } + setTimeout(showSlides, transitionTime); + } + + function moveSlide(direction) { + slideIndex += direction; + if (slideIndex >= slides.length) { slideIndex = 0; } + if (slideIndex < 0) { slideIndex = slides.length - 1; } + updateSlidesAndDots(); + } + + function updateSlidesAndDots() { + for (let i = 0; i < slides.length; i++) { + slides[i].style.display = 'none'; + progressContainer.children[i].classList.remove('active'); + } + slides[slideIndex].style.display = 'block'; + progressContainer.children[slideIndex].classList.add('active'); + } + + document.getElementById('prev-slide').addEventListener('click', function() { + moveSlide(-1); + }); + document.getElementById('next-slide').addEventListener('click', function() { + moveSlide(1); + }); + + // Initialize the slideshow + showSlides(); +}); diff --git a/_templates/pechakucha_slideshow.html b/_templates/pechakucha_slideshow.html new file mode 100644 index 0000000..4de97f8 --- /dev/null +++ b/_templates/pechakucha_slideshow.html @@ -0,0 +1,29 @@ +{% extends 'layout.html' %} + +{% block body %} + +
+ +
+ + + + + +
+ +
+ + + +{% endblock %} diff --git a/conf.py b/conf.py index 2ce8067..52f4154 100644 --- a/conf.py +++ b/conf.py @@ -15,7 +15,7 @@ extensions = [ 'Pechakucha.pechakucha_directive', - #"myst_nb", + "myst_nb", #"ablog", 'sphinx.ext.intersphinx', "sphinx_design", @@ -89,6 +89,8 @@ # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] +html_css_files = ['_static/pechakucha.css'] + # html_js_files = [ # 'slides.js', @@ -138,6 +140,6 @@ ] def setup(app): - app.add_css_file("custom.css") - app.add_js_file("custom.js") + app.add_css_file("_static.pechakucha.css") + app.add_js_file("_static.pechakucha.js") diff --git a/index.md b/index.md index f837130..54b9f89 100644 --- a/index.md +++ b/index.md @@ -13,5 +13,6 @@ More content you want on your page :hidden: someotherfile +somefile ``` diff --git a/index.rst b/index.rst index 39954ac..1d0fab1 100644 --- a/index.rst +++ b/index.rst @@ -1,5 +1,7 @@ Welcome to my profile site! -============ +============================ + + .. toctree:: somefile.rst diff --git a/somefile.rst b/somefile.rst index d86b45b..af5862a 100644 --- a/somefile.rst +++ b/somefile.rst @@ -2,13 +2,13 @@ My Pechakucha ================= -Hello everyone, this is my first time running this extension to see how it works +Hello everyone, this is my first time running this extension to see how it works. -.. pechakucha:: - :transition_time: 3000 +.. pechakucha::5 + :transition_time: dog.jpeg - download.jpeg +