summaryrefslogtreecommitdiff
path: root/api-docs
diff options
context:
space:
mode:
authorJordan Wiens <github@psifertex.com>2025-10-28 18:57:12 -0400
committerJordan <github@psifertex.com>2025-11-06 10:32:46 -0500
commitbb427a5cee88d1f56a065d183dae53e5f9479204 (patch)
tree1a152f3726efc6da44d67e918edb375eca414ad0 /api-docs
parent5ed12c4574ea5c3cb82aa6c7f77e3003d49442b2 (diff)
add collapsing of the sidebar and ignore empty metadata and platform names
Diffstat (limited to 'api-docs')
-rw-r--r--api-docs/cppdocs/Doxyfile-HTML4
-rw-r--r--api-docs/cppdocs/binaryninja-darkmode.js84
-rw-r--r--api-docs/cppdocs/binaryninja-docs.css80
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;
+}