diff --git a/docs/Makefile b/docs/Makefile index 07c78ba3..0e09e29c 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -20,6 +20,9 @@ help: python3 apidoc.py @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) +quick: + @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + clean: rm -fr doxygen-out rm -fr source/api diff --git a/docs/cutter_theme/layout.html b/docs/cutter_theme/layout.html new file mode 100644 index 00000000..44b262b0 --- /dev/null +++ b/docs/cutter_theme/layout.html @@ -0,0 +1,45 @@ +{% extends 'basic/layout.html' %} +{% block extrahead %} +{% endblock %} + +{# https://www.sphinx-doc.org/en/master/templating.html #} + +{% block relbar2 %} +{% endblock %} + +{% block header %} + {% if pagename == 'index' %}
{% endif %} +{% endblock %} + +{% block sidebar1 %} +{% endblock %} + +{% block sidebar2 %} + {%- if render_sidebar %} + + {%- endif %} +{% endblock %} + +{% block footer %} + {{ super() }} + {% if pagename == 'index' %}
{% endif %} +{% endblock %} diff --git a/docs/cutter_theme/static/cutter.css_t b/docs/cutter_theme/static/cutter.css_t new file mode 100644 index 00000000..7ba06007 --- /dev/null +++ b/docs/cutter_theme/static/cutter.css_t @@ -0,0 +1,441 @@ +/* + * cutter.css_t + * based on flasky.css_t by Armin Ronacher + * ~~~~~~~~~~~~ + * + */ + +{% set page_width = '1300px' %} +{% set sidebar_width = '220px' %} + +@import url('https://fonts.googleapis.com/css?family=Poppins&display=swap'); +@import url('https://fonts.googleapis.com/css?family=Inconsolata&display=swap'); +@import url('basic.css'); + +/* -- page layout ---------------------------------------------------------- */ + +body { + font-family: "Poppins", sans-serif; + font-size: 16px; + background-color: white; + color: #0d1b33; + margin: 0; + padding: 0; +} + +div.document { + width: {{ page_width }}; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 {{ sidebar_width }}; +} + +div.sphinxsidebar { + width: {{ sidebar_width }}; +} + +hr { + border: 1px solid #b1b4b6; +} + +div.body { + background-color: #fff; + color: #3e4349; + padding: 0 30px 0 30px; +} + +img.floatingflask { + padding: 0 0 10px 10px; + float: right; +} + +div.footer { + width: {{ page_width }}; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +div.related { + display: none; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px solid #999; +} + +div.sphinxsidebar a:hover { + color: #216ae6; + border-bottom: 1px solid #999; +} + +div.sphinxsidebar { + font-size: 14px; + line-height: 1.5; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0 0 20px 0; + margin: 0; + text-align: center; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Content-font, Roboto, sans-serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar input { + border: 1px solid #ccc; + font-family: Content-font, Roboto, sans-serif; + font-size: 1em; +} + +/* -- body styles ---------------------------------------------------------- */ + +a { + color: #004b6b; + text-decoration: underline; +} + +a:hover { + color: #6d4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + color: #041e49; + font-family: Content-font, Roboto, sans-serif; + font-weight: 400; + margin: 30px 0 10px 0; + padding: 0; +} + +{% if theme_index_logo %} +div.indexwrapper h1 { + text-indent: -999999px; + background: url({{ theme_index_logo }}) no-repeat center center; + height: {{ theme_index_logo_height }}; +} +{% endif %} +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #216ae6; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #041e49; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4; +} + +dt:target, .highlight { + background: #faf3e8; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +img.screenshot { +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #eee; + background: #fdfdfd; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.footnote td.label { + width: 0; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #fafafa; + padding: 7px 30px; + margin: 15px -30px; + line-height: 1.3; + font-family: 'Inconsolata', monospace; +} + +span.pre { + color: #e83e8c; + word-break: break-word; + font-family: SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +dl pre, blockquote pre, li pre { + margin-left: -60px; + padding-left: 60px; +} + +dl dl pre { + margin-left: -90px; + padding-left: 90px; +} + +a.reference { + color: #216ae6; + text-decoration: none; +} + +a.reference:hover { + color: #216ae6; + border-bottom: 1px solid; +} + +a.footnote-reference { + color: #216ae6; + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px solid; +} + +a.footnote-reference:hover { + color: #216ae6; + border-bottom: 1px solid; +} + +/* Notes box */ +.admonition { + border-radius: 5px; +} + +.admonition.note { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; +} + +/* API Reference */ + +.rst-content dl:not(.docutils) dt { +} + +code.descname { + font-size: 14px; +} + +.sig-paren { + font-size: 14px; +} + +@media screen and (max-width: 875px) { + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: white; + margin: 0; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px 0; + padding: 10px 30px; + background: #333; + color: white; + } + + div.sphinxsidebarwrapper { + padding: 0; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: white; + } + + div.sphinxsidebar a { + color: #aaa; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.related { + display: block; + margin: 0; + padding: 10px 0 20px 0; + } + + div.related ul, + div.related ul li { + margin: 0; + padding: 0; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + div.footer { + width: auto; + margin: 0 -30px -20px; + padding: 10px 30px 20px; + background: #333; + } + + ul { + margin-left: 0; + } +} diff --git a/docs/cutter_theme/theme.conf b/docs/cutter_theme/theme.conf new file mode 100644 index 00000000..24051280 --- /dev/null +++ b/docs/cutter_theme/theme.conf @@ -0,0 +1,11 @@ +[theme] +inherit = basic +stylesheet = cutter.css +pygments_style = flasky + +[options] +index_logo = +index_logo_height = 120px +touch_icon = +github_fork = +github_ribbon_color = darkblue_121621 diff --git a/docs/source/building.rst b/docs/source/building.rst index d661382a..45b354db 100644 --- a/docs/source/building.rst +++ b/docs/source/building.rst @@ -1,7 +1,11 @@ Building ======== -Below you will find the instructions for building Cutter. +.. note:: + + If you just want to use the latest Release version of Cutter, please note + that we provide pre-compiled binaries for Windows, Linux and macOS on + our `release page. `_ Building on Linux @@ -34,7 +38,7 @@ Building steps The official way to build Cutter on Linux is by using CMake. First clone the repository with its dependencies: -:: +.. code-block:: sh git clone --recurse-submodules https://github.com/radareorg/cutter diff --git a/docs/source/conf.py b/docs/source/conf.py index 357978ac..69d6a660 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -24,9 +24,9 @@ copyright = '2019, The Cutter Developers' author = 'The Cutter Developers' # The short X.Y version -version = '' +version = '1.9' # The full version, including alpha/beta/rc tags -release = '' +release = '1.9.0' # -- General configuration --------------------------------------------------- @@ -38,16 +38,18 @@ release = '' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = [ "breathe" ] +extensions = [ + 'breathe', +] # Add any paths that contain templates here, relative to this directory. -templates_path = ['sphinx_templates'] +templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' +# source_suffix = '.rst' +source_suffix = ['.rst', '.md'] # The master toctree document. master_doc = 'index' @@ -62,15 +64,15 @@ language = None # 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 = [] +exclude_patterns = ['_build'] # The name of the Pygments (syntax highlighting) style to use. -pygments_style = None +pygments_style = 'rainbow_dash' # -- Options for Breathe ----------------------------------------------------- -breathe_projects = { "cutter": "../doxygen-out/xml" } -breathe_default_project = "cutter" +breathe_projects = { 'cutter': '../doxygen-out/xml' } +breathe_default_project = 'cutter' breathe_default_members = ('members', 'undoc-members') # -- Options for HTML output ------------------------------------------------- @@ -78,7 +80,9 @@ breathe_default_members = ('members', 'undoc-members') # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = 'cutter_theme' +html_theme_path = ['..'] +html_logo = '../../src/img/cutter.ico' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -89,23 +93,25 @@ html_theme = 'sphinx_rtd_theme' # 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 = ['sphinx_static'] +# html_static_path = ['static'] # Custom sidebar templates, must be a dictionary that maps document names # to template names. # # The default sidebars (for documents that don't match any pattern) are # defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - +# Default: html_sidebars = { +# '**': ['globaltoc.html', 'sourcelink.html', 'searchbox.html'], +# 'using/windows': ['windowssidebar.html', 'searchbox.html'], +# } +html_sidebars = { + '**': ['globaltoc.html'], +} # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. -htmlhelp_basename = 'Cutterdoc' +htmlhelp_basename = 'CutterDoc' # -- Options for LaTeX output ------------------------------------------------ diff --git a/docs/source/index.rst b/docs/source/index.rst index 90825269..8ca7848f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,5 +1,5 @@ -Cutter Documentation -==================== +Cutter +====== Cutter is a Qt and C++ GUI for radare2. Its goal is making an advanced, customizable and FOSS reverse-engineering platform while keeping the @@ -15,6 +15,7 @@ Get Cutter Cutter is available for all platforms (Linux, OS X, Windows). You can download the latest release `here `__. + - OSX: Download the latest ``.dmg`` file. - Windows: Download the latest archive. - Linux: use the AppImage file. Then just make it executable and run it: ``chmod +x Cutter-v1.9.0-x86_64.AppImage`` @@ -42,7 +43,6 @@ If you want to contribute to Cutter, take a look `here `__ to know what you can do to help the project! - .. toctree:: :maxdepth: 2 :caption: Contents: