diff options
Diffstat (limited to 'api-docs')
| -rw-r--r-- | api-docs/cppdocs/Doxyfile-HTML | 4 | ||||
| -rw-r--r-- | api-docs/cppdocs/binaryninja-darkmode.js | 84 | ||||
| -rw-r--r-- | api-docs/cppdocs/binaryninja-docs.css | 80 |
3 files changed, 160 insertions, 8 deletions
diff --git a/api-docs/cppdocs/Doxyfile-HTML b/api-docs/cppdocs/Doxyfile-HTML index 69cdb814..b2358e34 100644 --- a/api-docs/cppdocs/Doxyfile-HTML +++ b/api-docs/cppdocs/Doxyfile-HTML @@ -913,6 +913,8 @@ EXCLUDE_SYMBOLS = BinaryNinja::LowLevelILInstructionAccessor \ BinaryNinja::MediumLevelILInstructionAccessor* \ BinaryNinja::HighLevelILInstructionAccessor \ BinaryNinja::HighLevelILInstructionAccessor* \ + metadata \ + platform #EXCLUDE_SYMBOLS = QProgressIndicator #Broke Exhale @@ -1505,7 +1507,7 @@ ENUM_VALUES_PER_LINE = 4 # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. -TREEVIEW_WIDTH = 250 +TREEVIEW_WIDTH = 400 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. diff --git a/api-docs/cppdocs/binaryninja-darkmode.js b/api-docs/cppdocs/binaryninja-darkmode.js index aed1b8dd..5dc19c13 100644 --- a/api-docs/cppdocs/binaryninja-darkmode.js +++ b/api-docs/cppdocs/binaryninja-darkmode.js @@ -98,3 +98,87 @@ // Initialize on page load init(); })(); + +/** + * Sidebar Collapse Functionality + */ +(function() { + 'use strict'; + + const COOKIE_NAME = 'bn-docs-sidebar-collapsed'; + const COOKIE_DAYS = 365; + + function getCookie(name) { + const value = `; ${document.cookie}`; + const parts = value.split(`; ${name}=`); + if (parts.length === 2) return parts.pop().split(';').shift(); + return null; + } + + function setCookie(name, value, days) { + const date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + const expires = `expires=${date.toUTCString()}`; + document.cookie = `${name}=${value};${expires};path=/`; + } + + function toggleSidebar() { + const sideNav = document.getElementById('side-nav'); + const docContent = document.getElementById('doc-content'); + const container = document.getElementById('container'); + const button = document.getElementById('sidebar-toggle'); + const top = document.getElementById('top'); + const titlearea = document.getElementById('titlearea'); + + if (!sideNav) return; + + const isCollapsed = sideNav.classList.toggle('collapsed'); + if (docContent) docContent.classList.toggle('sidebar-collapsed', isCollapsed); + if (container) container.classList.toggle('sidebar-collapsed', isCollapsed); + if (top) top.classList.toggle('collapsed', isCollapsed); + if (titlearea) titlearea.classList.toggle('collapsed', isCollapsed); + if (button) button.textContent = isCollapsed ? '→' : '←'; + + setCookie(COOKIE_NAME, isCollapsed ? '1' : '0', COOKIE_DAYS); + } + + function init() { + // Wait for DOM to be ready + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); + return; + } + + const sideNav = document.getElementById('side-nav'); + if (!sideNav) return; + + // Create collapse button + const button = document.createElement('button'); + button.id = 'sidebar-toggle'; + button.className = 'sidebar-toggle'; + button.textContent = '←'; + button.title = 'Toggle sidebar'; + button.addEventListener('click', toggleSidebar); + + // Insert button at the beginning of side-nav + sideNav.insertBefore(button, sideNav.firstChild); + + // Restore collapsed state from cookie + const isCollapsed = getCookie(COOKIE_NAME) === '1'; + if (isCollapsed) { + sideNav.classList.add('collapsed'); + const docContent = document.getElementById('doc-content'); + const container = document.getElementById('container'); + const top = document.getElementById('top'); + const titlearea = document.getElementById('titlearea'); + if (docContent) docContent.classList.add('sidebar-collapsed'); + if (container) container.classList.add('sidebar-collapsed'); + if (top) top.classList.add('collapsed'); + if (titlearea) titlearea.classList.add('collapsed'); + button.textContent = '→'; + } + } + + window.bnToggleSidebar = toggleSidebar; + init(); +})(); diff --git a/api-docs/cppdocs/binaryninja-docs.css b/api-docs/cppdocs/binaryninja-docs.css index 5079b072..661dcf6c 100644 --- a/api-docs/cppdocs/binaryninja-docs.css +++ b/api-docs/cppdocs/binaryninja-docs.css @@ -65,7 +65,7 @@ --line-height-content: 27px; /* Layout */ - --sidebar-width: 335px; + --sidebar-width: 450px; --top-height: 120px; --content-maxwidth: 1050px; --spacing-small: 5px; @@ -763,13 +763,13 @@ table.memberdecls .memItemLeft { white-space: normal; word-wrap: break-word; overflow-wrap: break-word; - padding: var(--spacing-small) var(--spacing-medium); + padding: 2px var(--spacing-small); border-bottom: 1px solid var(--border-color); width: 40%; } table.memberdecls .memItemRight { - padding: var(--spacing-small) var(--spacing-medium); + padding: 2px var(--spacing-small); border-bottom: 1px solid var(--border-color); word-wrap: break-word; overflow-wrap: break-word; @@ -848,7 +848,7 @@ table.memname { table.memname td { vertical-align: top; font-family: var(--font-family-monospace); - padding: 0 10px 0 0; + padding: 0 5px 0 0; } /* Keep function name on first column from wrapping */ @@ -997,7 +997,7 @@ dl.bug { * MEMBER DOCUMENTATION * ============================================================================ */ .memitem { - margin-bottom: var(--spacing-large); + margin-bottom: var(--spacing-medium); position: relative; } @@ -1019,14 +1019,14 @@ dl.bug { border: 1px solid var(--border-color); border-top: none; border-radius: 0 0 var(--border-radius-small) var(--border-radius-small); - padding: var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-medium); background-color: var(--page-bg); } .memproto { background-color: var(--fragment-bg); border: 1px solid var(--border-color); - padding: var(--spacing-small) var(--spacing-medium); + padding: 3px var(--spacing-small); border-radius: var(--border-radius-small); } @@ -1230,3 +1230,69 @@ html.dark-mode .darkmode_inverted_image img, html.dark-mode .darkmode_inverted_image object[type="image/svg+xml"] { filter: brightness(89%) hue-rotate(180deg) invert(); } + +/* ============================================================================ + * SIDEBAR COLLAPSE + * ============================================================================ */ + +.sidebar-toggle { + position: absolute; + top: 10px; + right: 10px; + z-index: 1000; + width: 30px; + height: 30px; + border: 1px solid var(--border-color); + background-color: var(--page-bg); + color: var(--page-text); + cursor: pointer; + font-size: 18px; + font-weight: bold; + border-radius: 3px; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; +} + +.sidebar-toggle:hover { + background-color: var(--table-header-bg); + border-color: var(--link-color); +} + +/* Collapsed sidebar state */ +#side-nav.collapsed { + width: 0 !important; + min-width: 0 !important; + max-width: 0 !important; + overflow: visible; +} + +#side-nav.collapsed .sidebar-toggle { + left: 10px; + right: auto; +} + +/* Hide header/top when collapsed */ +#top.collapsed, +#titlearea.collapsed { + display: none !important; +} + +#doc-content.sidebar-collapsed, +#container.sidebar-collapsed { + margin-left: 0 !important; +} + +#doc-content.sidebar-collapsed { + width: 100% !important; +} + +.ui-resizable-handle { + transition: left 0.3s ease; +} + +#side-nav.collapsed ~ #splitbar { + left: 0 !important; + display: none; +} |
