feat(ui): Integrate imgui_markdown and professional fonts for rich text rendering

This commit is contained in:
2026-03-08 23:07:42 -04:00
parent e802c6675f
commit 5f0168c4f2
10 changed files with 97 additions and 8 deletions

View File

@@ -22,6 +22,7 @@ from src import log_pruner
from src import models
from src import app_controller
from src import mcp_client
from src import markdown_helper
import re
from pydantic import BaseModel
@@ -520,6 +521,13 @@ class App:
if self.show_windows.get("Diagnostics", False):
self._render_diagnostics_panel()
if self.show_windows.get("Markdown Test", False):
exp, opened = imgui.begin("Markdown Test", self.show_windows["Markdown Test"])
self.show_windows["Markdown Test"] = bool(opened)
if exp:
self._render_markdown_test()
imgui.end()
self.perf_monitor.end_frame()
# ---- Modals / Popups
with self._pending_dialog_lock:
@@ -1212,6 +1220,29 @@ class App:
if self.perf_profiling_enabled: self.perf_monitor.end_component("_render_diagnostics_panel")
imgui.end()
def _render_markdown_test(self) -> None:
imgui.text("Markdown Test Panel")
imgui.separator()
md = """
# Header 1
## Header 2
### Header 3
This is **bold** text and *italic* text.
And ***bold italic*** text.
* List item 1
* List item 2
* Sub-item
[Link to Google](https://google.com)
```python
def hello():
print("Markdown works!")
```
"""
markdown_helper.render(md)
def _render_files_panel(self) -> None:
if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_files_panel")
@@ -2154,7 +2185,7 @@ class App:
self.bulk_block()
# Table
flags = imgui.TableFlags_.borders | imgui.TableFlags_.row_bg | imgui.TableFlags_.resizable | imgui.TableFlags_.scroll_y
if imgui.begin_table("ticket_queue_table", 6, flags, imgui.ImVec2(0, 300)):
if imgui.begin_table("ticket_queue_table", 7, flags, imgui.ImVec2(0, 300)):
imgui.table_setup_column("Select", imgui.TableColumnFlags_.width_fixed, 40)
imgui.table_setup_column("ID", imgui.TableColumnFlags_.width_fixed, 80)
imgui.table_setup_column("Priority", imgui.TableColumnFlags_.width_fixed, 100)
@@ -2858,7 +2889,8 @@ class App:
self.runner_params.callbacks.load_additional_fonts = self._load_fonts
self.runner_params.callbacks.post_init = self._post_init
self._fetch_models(self.current_provider)
immapp.run(self.runner_params)
md_options = markdown_helper.get_renderer().options
immapp.run(self.runner_params, add_ons_params=immapp.AddOnsParams(with_markdown_options=md_options))
# On exit
self.shutdown()
session_logger.close_session()