diff --git a/build.zig.zon b/build.zig.zon index 191c1bec9..eff6dc12e 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -64,6 +64,7 @@ // C libs .cimgui = .{ .path = "./pkg/cimgui", .lazy = true }, + .dcimgui = .{ .path = "./pkg/dcimgui", .lazy = true }, .fontconfig = .{ .path = "./pkg/fontconfig", .lazy = true }, .freetype = .{ .path = "./pkg/freetype", .lazy = true }, .gtk4_layer_shell = .{ .path = "./pkg/gtk4-layer-shell", .lazy = true }, diff --git a/pkg/dcimgui/main.zig b/pkg/dcimgui/main.zig index c73a74515..7ea135cdb 100644 --- a/pkg/dcimgui/main.zig +++ b/pkg/dcimgui/main.zig @@ -21,6 +21,13 @@ pub extern fn ImGui_ImplOSX_Init(*anyopaque) callconv(.c) bool; pub extern fn ImGui_ImplOSX_Shutdown() callconv(.c) void; pub extern fn ImGui_ImplOSX_NewFrame(*anyopaque) callconv(.c) void; +// Internal API functions from dcimgui_internal.h +// We declare these manually because the internal header contains bitfields +// that Zig's cImport cannot translate. +pub extern fn ImGui_DockBuilderDockWindow(window_name: [*:0]const u8, node_id: c.ImGuiID) callconv(.c) void; +pub extern fn ImGui_DockBuilderSplitNode(node_id: c.ImGuiID, split_dir: c.ImGuiDir, size_ratio_for_node_at_dir: f32, out_id_at_dir: *c.ImGuiID, out_id_at_opposite_dir: *c.ImGuiID) callconv(.c) c.ImGuiID; +pub extern fn ImGui_DockBuilderFinish(node_id: c.ImGuiID) callconv(.c) void; + test { _ = c; } diff --git a/src/apprt/embedded.zig b/src/apprt/embedded.zig index a1b6a6e9b..c6c4d2ab8 100644 --- a/src/apprt/embedded.zig +++ b/src/apprt/embedded.zig @@ -947,7 +947,7 @@ pub const Surface = struct { /// Inspector is the state required for the terminal inspector. A terminal /// inspector is 1:1 with a Surface. pub const Inspector = struct { - const cimgui = @import("cimgui"); + const cimgui = @import("dcimgui"); surface: *Surface, ig_ctx: *cimgui.c.ImGuiContext, @@ -968,10 +968,10 @@ pub const Inspector = struct { }; pub fn init(surface: *Surface) !Inspector { - const ig_ctx = cimgui.c.igCreateContext(null) orelse return error.OutOfMemory; - errdefer cimgui.c.igDestroyContext(ig_ctx); - cimgui.c.igSetCurrentContext(ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const ig_ctx = cimgui.c.ImGui_CreateContext(null) orelse return error.OutOfMemory; + errdefer cimgui.c.ImGui_DestroyContext(ig_ctx); + cimgui.c.ImGui_SetCurrentContext(ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); io.BackendPlatformName = "ghostty_embedded"; // Setup our core inspector @@ -988,9 +988,9 @@ pub const Inspector = struct { pub fn deinit(self: *Inspector) void { self.surface.core_surface.deactivateInspector(); - cimgui.c.igSetCurrentContext(self.ig_ctx); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); if (self.backend) |v| v.deinit(); - cimgui.c.igDestroyContext(self.ig_ctx); + cimgui.c.ImGui_DestroyContext(self.ig_ctx); } /// Queue a render for the next frame. @@ -1001,7 +1001,7 @@ pub const Inspector = struct { /// Initialize the inspector for a metal backend. pub fn initMetal(self: *Inspector, device: objc.Object) bool { defer device.msgSend(void, objc.sel("release"), .{}); - cimgui.c.igSetCurrentContext(self.ig_ctx); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); if (self.backend) |v| { v.deinit(); @@ -1036,7 +1036,7 @@ pub const Inspector = struct { for (0..2) |_| { cimgui.ImGui_ImplMetal_NewFrame(desc.value); try self.newFrame(); - cimgui.c.igNewFrame(); + cimgui.c.ImGui_NewFrame(); // Build our UI render: { @@ -1046,7 +1046,7 @@ pub const Inspector = struct { } // Render - cimgui.c.igRender(); + cimgui.c.ImGui_Render(); } // MTLRenderCommandEncoder @@ -1057,7 +1057,7 @@ pub const Inspector = struct { ); defer encoder.msgSend(void, objc.sel("endEncoding"), .{}); cimgui.ImGui_ImplMetal_RenderDrawData( - cimgui.c.igGetDrawData(), + cimgui.c.ImGui_GetDrawData(), command_buffer.value, encoder.value, ); @@ -1065,22 +1065,21 @@ pub const Inspector = struct { pub fn updateContentScale(self: *Inspector, x: f64, y: f64) void { _ = y; - cimgui.c.igSetCurrentContext(self.ig_ctx); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); // Cache our scale because we use it for cursor position calculations. self.content_scale = x; // Setup a new style and scale it appropriately. - const style = cimgui.c.ImGuiStyle_ImGuiStyle(); - defer cimgui.c.ImGuiStyle_destroy(style); - cimgui.c.ImGuiStyle_ScaleAllSizes(style, @floatCast(x)); - const active_style = cimgui.c.igGetStyle(); - active_style.* = style.*; + var style: cimgui.c.ImGuiStyle = .{}; + cimgui.c.ImGuiStyle_ScaleAllSizes(&style, @floatCast(x)); + const active_style = cimgui.c.ImGui_GetStyle(); + active_style.* = style; } pub fn updateSize(self: *Inspector, width: u32, height: u32) void { - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); io.DisplaySize = .{ .x = @floatFromInt(width), .y = @floatFromInt(height) }; } @@ -1093,8 +1092,8 @@ pub const Inspector = struct { _ = mods; self.queueRender(); - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); const imgui_button = switch (button) { .left => cimgui.c.ImGuiMouseButton_Left, @@ -1115,8 +1114,8 @@ pub const Inspector = struct { _ = mods; self.queueRender(); - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddMouseWheelEvent( io, @floatCast(xoff), @@ -1126,8 +1125,8 @@ pub const Inspector = struct { pub fn cursorPosCallback(self: *Inspector, x: f64, y: f64) void { self.queueRender(); - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddMousePosEvent( io, @floatCast(x * self.content_scale), @@ -1137,15 +1136,15 @@ pub const Inspector = struct { pub fn focusCallback(self: *Inspector, focused: bool) void { self.queueRender(); - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddFocusEvent(io, focused); } pub fn textCallback(self: *Inspector, text: [:0]const u8) void { self.queueRender(); - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddInputCharactersUTF8(io, text.ptr); } @@ -1156,8 +1155,8 @@ pub const Inspector = struct { mods: input.Mods, ) !void { self.queueRender(); - cimgui.c.igSetCurrentContext(self.ig_ctx); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + cimgui.c.ImGui_SetCurrentContext(self.ig_ctx); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); // Update all our modifiers cimgui.c.ImGuiIO_AddKeyEvent(io, cimgui.c.ImGuiKey_LeftShift, mods.shift); @@ -1176,7 +1175,7 @@ pub const Inspector = struct { } fn newFrame(self: *Inspector) !void { - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); // Determine our delta time const now = try std.time.Instant.now(); diff --git a/src/apprt/gtk/class/imgui_widget.zig b/src/apprt/gtk/class/imgui_widget.zig index ef1ca05c9..474efaa91 100644 --- a/src/apprt/gtk/class/imgui_widget.zig +++ b/src/apprt/gtk/class/imgui_widget.zig @@ -126,7 +126,7 @@ pub const ImguiWidget = extern struct { log.warn("Dear ImGui context not initialized", .{}); return error.ContextNotInitialized; }; - cimgui.c.igSetCurrentContext(ig_context); + cimgui.c.ImGui_SetCurrentContext(ig_context); } /// Initialize the frame. Expects that the context is already current. @@ -137,7 +137,7 @@ pub const ImguiWidget = extern struct { const priv = self.private(); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); // Determine our delta time const now = std.time.Instant.now() catch unreachable; @@ -163,7 +163,7 @@ pub const ImguiWidget = extern struct { self.setCurrentContext() catch return false; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); const mods = key.translateMods(gtk_mods); cimgui.c.ImGuiIO_AddKeyEvent(io, cimgui.c.ImGuiKey_LeftShift, mods.shift); @@ -219,14 +219,14 @@ pub const ImguiWidget = extern struct { return; } - priv.ig_context = cimgui.c.igCreateContext(null) orelse { + priv.ig_context = cimgui.c.ImGui_CreateContext(null) orelse { log.warn("unable to initialize Dear ImGui context", .{}); return; }; self.setCurrentContext() catch return; // Setup some basic config - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); io.BackendPlatformName = "ghostty_gtk"; // Realize means that our OpenGL context is ready, so we can now @@ -247,7 +247,7 @@ pub const ImguiWidget = extern struct { /// Handle a request to resize the GLArea fn glAreaResize(area: *gtk.GLArea, width: c_int, height: c_int, self: *Self) callconv(.c) void { self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); const scale_factor = area.as(gtk.Widget).getScaleFactor(); // Our display size is always unscaled. We'll do the scaling in the @@ -256,11 +256,10 @@ pub const ImguiWidget = extern struct { io.DisplayFramebufferScale = .{ .x = 1, .y = 1 }; // Setup a new style and scale it appropriately. - const style = cimgui.c.ImGuiStyle_ImGuiStyle(); - defer cimgui.c.ImGuiStyle_destroy(style); - cimgui.c.ImGuiStyle_ScaleAllSizes(style, @floatFromInt(scale_factor)); - const active_style = cimgui.c.igGetStyle(); - active_style.* = style.*; + var style: cimgui.c.ImGuiStyle = .{}; + cimgui.c.ImGuiStyle_ScaleAllSizes(&style, @floatFromInt(scale_factor)); + const active_style = cimgui.c.ImGui_GetStyle(); + active_style.* = style; } /// Handle a request to render the contents of our GLArea @@ -273,33 +272,33 @@ pub const ImguiWidget = extern struct { for (0..2) |_| { cimgui.ImGui_ImplOpenGL3_NewFrame(); self.newFrame(); - cimgui.c.igNewFrame(); + cimgui.c.ImGui_NewFrame(); // Call the virtual method to draw the UI. self.render(); // Render - cimgui.c.igRender(); + cimgui.c.ImGui_Render(); } // OpenGL final render gl.clearColor(0x28 / 0xFF, 0x2C / 0xFF, 0x34 / 0xFF, 1.0); gl.clear(gl.c.GL_COLOR_BUFFER_BIT); - cimgui.ImGui_ImplOpenGL3_RenderDrawData(cimgui.c.igGetDrawData()); + cimgui.ImGui_ImplOpenGL3_RenderDrawData(cimgui.c.ImGui_GetDrawData()); return @intFromBool(true); } fn ecFocusEnter(_: *gtk.EventControllerFocus, self: *Self) callconv(.c) void { self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddFocusEvent(io, true); self.queueRender(); } fn ecFocusLeave(_: *gtk.EventControllerFocus, self: *Self) callconv(.c) void { self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddFocusEvent(io, false); self.queueRender(); } @@ -345,7 +344,7 @@ pub const ImguiWidget = extern struct { ) callconv(.c) void { self.queueRender(); self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); const gdk_button = gesture.as(gtk.GestureSingle).getCurrentButton(); if (translateMouseButton(gdk_button)) |button| { cimgui.c.ImGuiIO_AddMouseButtonEvent(io, button, true); @@ -361,7 +360,7 @@ pub const ImguiWidget = extern struct { ) callconv(.c) void { self.queueRender(); self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); const gdk_button = gesture.as(gtk.GestureSingle).getCurrentButton(); if (translateMouseButton(gdk_button)) |button| { cimgui.c.ImGuiIO_AddMouseButtonEvent(io, button, false); @@ -376,7 +375,7 @@ pub const ImguiWidget = extern struct { ) callconv(.c) void { self.queueRender(); self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); const scale_factor = self.getScaleFactor(); cimgui.c.ImGuiIO_AddMousePosEvent( io, @@ -393,7 +392,7 @@ pub const ImguiWidget = extern struct { ) callconv(.c) c_int { self.queueRender(); self.setCurrentContext() catch return @intFromBool(false); - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddMouseWheelEvent( io, @floatCast(x), @@ -409,7 +408,7 @@ pub const ImguiWidget = extern struct { ) callconv(.c) void { self.queueRender(); self.setCurrentContext() catch return; - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); cimgui.c.ImGuiIO_AddInputCharactersUTF8(io, bytes); } diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index 5e2cd40b9..f96a269bd 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -479,15 +479,17 @@ pub fn add( } // cimgui - if (b.lazyDependency("cimgui", .{ + if (b.lazyDependency("dcimgui", .{ .target = target, .optimize = optimize, - })) |cimgui_dep| { - step.root_module.addImport("cimgui", cimgui_dep.module("cimgui")); - step.linkLibrary(cimgui_dep.artifact("cimgui")); + .@"backend-metal" = target.result.os.tag.isDarwin(), + .@"backend-osx" = target.result.os.tag == .macos, + })) |dep| { + step.root_module.addImport("dcimgui", dep.module("dcimgui")); + step.linkLibrary(dep.artifact("dcimgui")); try static_libs.append( b.allocator, - cimgui_dep.artifact("cimgui").getEmittedBin(), + dep.artifact("dcimgui").getEmittedBin(), ); } diff --git a/src/input/key.zig b/src/input/key.zig index 54c7491ae..6445871eb 100644 --- a/src/input/key.zig +++ b/src/input/key.zig @@ -1,7 +1,7 @@ const std = @import("std"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); const OptionAsAlt = @import("config.zig").OptionAsAlt; /// A generic key input event. This is the information that is necessary @@ -696,7 +696,7 @@ pub const Key = enum(c_int) { } /// Returns the cimgui key constant for this key. - pub fn imguiKey(self: Key) ?c_uint { + pub fn imguiKey(self: Key) ?c_int { return switch (self) { .key_a => cimgui.c.ImGuiKey_A, .key_b => cimgui.c.ImGuiKey_B, diff --git a/src/inspector/Inspector.zig b/src/inspector/Inspector.zig index dc498b58d..b1ac473b8 100644 --- a/src/inspector/Inspector.zig +++ b/src/inspector/Inspector.zig @@ -7,7 +7,7 @@ const std = @import("std"); const assert = @import("../quirks.zig").inlineAssert; const Allocator = std.mem.Allocator; const builtin = @import("builtin"); -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); const Surface = @import("../Surface.zig"); const font = @import("../font/main.zig"); const input = @import("../input.zig"); @@ -126,7 +126,7 @@ const CellInspect = union(enum) { /// Setup the ImGui state. This requires an ImGui context to be set. pub fn setup() void { - const io: *cimgui.c.ImGuiIO = cimgui.c.igGetIO(); + const io: *cimgui.c.ImGuiIO = cimgui.c.ImGui_GetIO(); // Enable docking, which we use heavily for the UI. io.ConfigFlags |= cimgui.c.ImGuiConfigFlags_DockingEnable; @@ -144,15 +144,14 @@ pub fn setup() void { // This is currently hardcoded to a 2x content scale. const font_size = 16 * 2; - const font_config: *cimgui.c.ImFontConfig = cimgui.c.ImFontConfig_ImFontConfig(); - defer cimgui.c.ImFontConfig_destroy(font_config); + var font_config: cimgui.c.ImFontConfig = .{}; font_config.FontDataOwnedByAtlas = false; _ = cimgui.c.ImFontAtlas_AddFontFromMemoryTTF( io.Fonts, @ptrCast(@constCast(font.embedded.regular)), font.embedded.regular.len, font_size, - font_config, + &font_config, null, ); } @@ -221,11 +220,7 @@ pub fn recordPtyRead(self: *Inspector, data: []const u8) !void { /// Render the frame. pub fn render(self: *Inspector) void { - const dock_id = cimgui.c.igDockSpaceOverViewport( - cimgui.c.igGetMainViewport(), - cimgui.c.ImGuiDockNodeFlags_None, - null, - ); + const dock_id = cimgui.c.ImGui_DockSpaceOverViewport(); // Render all of our data. We hold the mutex for this duration. This is // expensive but this is an initial implementation until it doesn't work @@ -245,7 +240,7 @@ pub fn render(self: *Inspector) void { // widgets and such. if (builtin.mode == .Debug) { var show: bool = true; - cimgui.c.igShowDemoWindow(&show); + cimgui.c.ImGui_ShowDemoWindow(&show); } // On first render we set up the layout. We can actually do this at @@ -261,7 +256,7 @@ fn setupLayout(self: *Inspector, dock_id_main: cimgui.c.ImGuiID) void { _ = self; // Our initial focus - cimgui.c.igSetWindowFocus_Str(window_screen); + cimgui.c.ImGui_SetWindowFocusStr(window_screen); // Setup our initial layout. const dock_id: struct { @@ -270,7 +265,7 @@ fn setupLayout(self: *Inspector, dock_id_main: cimgui.c.ImGuiID) void { } = dock_id: { var dock_id_left: cimgui.c.ImGuiID = undefined; var dock_id_right: cimgui.c.ImGuiID = undefined; - _ = cimgui.c.igDockBuilderSplitNode( + _ = cimgui.ImGui_DockBuilderSplitNode( dock_id_main, cimgui.c.ImGuiDir_Left, 0.7, @@ -284,20 +279,20 @@ fn setupLayout(self: *Inspector, dock_id_main: cimgui.c.ImGuiID) void { }; }; - cimgui.c.igDockBuilderDockWindow(window_cell, dock_id.left); - cimgui.c.igDockBuilderDockWindow(window_modes, dock_id.left); - cimgui.c.igDockBuilderDockWindow(window_keyboard, dock_id.left); - cimgui.c.igDockBuilderDockWindow(window_termio, dock_id.left); - cimgui.c.igDockBuilderDockWindow(window_screen, dock_id.left); - cimgui.c.igDockBuilderDockWindow(window_imgui_demo, dock_id.left); - cimgui.c.igDockBuilderDockWindow(window_size, dock_id.right); - cimgui.c.igDockBuilderFinish(dock_id_main); + cimgui.ImGui_DockBuilderDockWindow(window_cell, dock_id.left); + cimgui.ImGui_DockBuilderDockWindow(window_modes, dock_id.left); + cimgui.ImGui_DockBuilderDockWindow(window_keyboard, dock_id.left); + cimgui.ImGui_DockBuilderDockWindow(window_termio, dock_id.left); + cimgui.ImGui_DockBuilderDockWindow(window_screen, dock_id.left); + cimgui.ImGui_DockBuilderDockWindow(window_imgui_demo, dock_id.left); + cimgui.ImGui_DockBuilderDockWindow(window_size, dock_id.right); + cimgui.ImGui_DockBuilderFinish(dock_id_main); } fn renderScreenWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. - defer cimgui.c.igEnd(); - if (!cimgui.c.igBegin( + defer cimgui.c.ImGui_End(); + if (!cimgui.c.ImGui_Begin( window_screen, null, cimgui.c.ImGuiWindowFlags_NoFocusOnAppearing, @@ -307,76 +302,70 @@ fn renderScreenWindow(self: *Inspector) void { const screen: *terminal.Screen = t.screens.active; { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_screen", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Active Screen"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Active Screen"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", @tagName(t.screens.active_key).ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", @tagName(t.screens.active_key).ptr); } } } - if (cimgui.c.igCollapsingHeader_TreeNodeFlags( + if (cimgui.c.ImGui_CollapsingHeader( "Cursor", cimgui.c.ImGuiTreeNodeFlags_DefaultOpen, )) { { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_cursor", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); inspector.cursor.renderInTable( self.surface.renderer_state.terminal, &screen.cursor, ); } // table - cimgui.c.igTextDisabled("(Any styles not shown are not currently set)"); + cimgui.c.ImGui_TextDisabled("(Any styles not shown are not currently set)"); } // cursor - if (cimgui.c.igCollapsingHeader_TreeNodeFlags( + if (cimgui.c.ImGui_CollapsingHeader( "Keyboard", cimgui.c.ImGuiTreeNodeFlags_DefaultOpen, )) { { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_keyboard", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); const kitty_flags = screen.kitty_keyboard.current(); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Mode"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Mode"); } { - _ = cimgui.c.igTableSetColumnIndex(1); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); const mode = if (kitty_flags.int() != 0) "kitty" else "legacy"; - cimgui.c.igText("%s", mode.ptr); + cimgui.c.ImGui_Text("%s", mode.ptr); } } @@ -386,15 +375,15 @@ fn renderScreenWindow(self: *Inspector) void { { const value = @field(kitty_flags, field.name); - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); const name = std.fmt.comptimePrint("{s}", .{field.name}); - cimgui.c.igText("%s", name.ptr); + cimgui.c.ImGui_Text("%s", name.ptr); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%s", if (value) "true".ptr else "false".ptr, ); @@ -403,14 +392,14 @@ fn renderScreenWindow(self: *Inspector) void { } } else { { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Xterm modify keys"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Xterm modify keys"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%s", if (t.flags.modify_other_keys_2) "true".ptr else "false".ptr, ); @@ -420,143 +409,139 @@ fn renderScreenWindow(self: *Inspector) void { } // table } // keyboard - if (cimgui.c.igCollapsingHeader_TreeNodeFlags( + if (cimgui.c.ImGui_CollapsingHeader( "Kitty Graphics", cimgui.c.ImGuiTreeNodeFlags_DefaultOpen, )) kitty_gfx: { if (!screen.kitty_images.enabled()) { - cimgui.c.igTextDisabled("(Kitty graphics are disabled)"); + cimgui.c.ImGui_TextDisabled("(Kitty graphics are disabled)"); break :kitty_gfx; } { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "##kitty_graphics", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); const kitty_images = &screen.kitty_images; { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Memory Usage"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Memory Usage"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d bytes (%d KiB)", kitty_images.total_bytes, units.toKibiBytes(kitty_images.total_bytes)); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d bytes (%d KiB)", kitty_images.total_bytes, units.toKibiBytes(kitty_images.total_bytes)); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Memory Limit"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Memory Limit"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d bytes (%d KiB)", kitty_images.total_limit, units.toKibiBytes(kitty_images.total_limit)); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d bytes (%d KiB)", kitty_images.total_limit, units.toKibiBytes(kitty_images.total_limit)); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Image Count"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Image Count"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", kitty_images.images.count()); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", kitty_images.images.count()); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Placement Count"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Placement Count"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", kitty_images.placements.count()); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", kitty_images.placements.count()); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Image Loading"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Image Loading"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", if (kitty_images.loading != null) "true".ptr else "false".ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", if (kitty_images.loading != null) "true".ptr else "false".ptr); } } } // table } // kitty graphics - if (cimgui.c.igCollapsingHeader_TreeNodeFlags( + if (cimgui.c.ImGui_CollapsingHeader( "Internal Terminal State", cimgui.c.ImGuiTreeNodeFlags_DefaultOpen, )) { const pages = &screen.pages; { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "##terminal_state", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Memory Usage"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Memory Usage"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d bytes (%d KiB)", pages.page_size, units.toKibiBytes(pages.page_size)); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d bytes (%d KiB)", pages.page_size, units.toKibiBytes(pages.page_size)); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Memory Limit"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Memory Limit"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d bytes (%d KiB)", pages.maxSize(), units.toKibiBytes(pages.maxSize())); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d bytes (%d KiB)", pages.maxSize(), units.toKibiBytes(pages.maxSize())); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Viewport Location"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Viewport Location"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", @tagName(pages.viewport).ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", @tagName(pages.viewport).ptr); } } } // table // - if (cimgui.c.igCollapsingHeader_TreeNodeFlags( + if (cimgui.c.ImGui_CollapsingHeader( "Active Page", cimgui.c.ImGuiTreeNodeFlags_DefaultOpen, )) { @@ -569,28 +554,26 @@ fn renderScreenWindow(self: *Inspector) void { /// users to toggle them on and off. fn renderModesWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. - defer cimgui.c.igEnd(); - if (!cimgui.c.igBegin( + defer cimgui.c.ImGui_End(); + if (!cimgui.c.ImGui_Begin( window_modes, null, cimgui.c.ImGuiWindowFlags_NoFocusOnAppearing, )) return; - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_modes", 3, cimgui.c.ImGuiTableFlags_SizingFixedFit | cimgui.c.ImGuiTableFlags_RowBg, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); { - _ = cimgui.c.igTableSetupColumn("", cimgui.c.ImGuiTableColumnFlags_NoResize, 0, 0); - _ = cimgui.c.igTableSetupColumn("Number", cimgui.c.ImGuiTableColumnFlags_PreferSortAscending, 0, 0); - _ = cimgui.c.igTableSetupColumn("Name", cimgui.c.ImGuiTableColumnFlags_WidthStretch, 0, 0); - cimgui.c.igTableHeadersRow(); + cimgui.c.ImGui_TableSetupColumn("", cimgui.c.ImGuiTableColumnFlags_NoResize); + cimgui.c.ImGui_TableSetupColumn("Number", cimgui.c.ImGuiTableColumnFlags_PreferSortAscending); + cimgui.c.ImGui_TableSetupColumn("Name", cimgui.c.ImGuiTableColumnFlags_WidthStretch); + cimgui.c.ImGui_TableHeadersRow(); } const t = self.surface.renderer_state.terminal; @@ -598,59 +581,57 @@ fn renderModesWindow(self: *Inspector) void { @setEvalBranchQuota(6000); const tag: terminal.modes.ModeTag = @bitCast(@as(terminal.modes.ModeTag.Backing, field.value)); - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); var value: bool = t.modes.get(@field(terminal.Mode, field.name)); - _ = cimgui.c.igCheckbox("", &value); + _ = cimgui.c.ImGui_Checkbox("", &value); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%s%d", if (tag.ansi) "" else "?", @as(u32, @intCast(tag.value)), ); } { - _ = cimgui.c.igTableSetColumnIndex(2); + _ = cimgui.c.ImGui_TableSetColumnIndex(2); const name = std.fmt.comptimePrint("{s}", .{field.name}); - cimgui.c.igText("%s", name.ptr); + cimgui.c.ImGui_Text("%s", name.ptr); } } } fn renderSizeWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. - defer cimgui.c.igEnd(); - if (!cimgui.c.igBegin( + defer cimgui.c.ImGui_End(); + if (!cimgui.c.ImGui_Begin( window_size, null, cimgui.c.ImGuiWindowFlags_NoFocusOnAppearing, )) return; - cimgui.c.igSeparatorText("Dimensions"); + cimgui.c.ImGui_SeparatorText("Dimensions"); { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_size", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); // Screen Size { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Screen Size"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Screen Size"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%dpx x %dpx", self.surface.size.screen.width, self.surface.size.screen.height, @@ -660,15 +641,15 @@ fn renderSizeWindow(self: *Inspector) void { // Grid Size { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Grid Size"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Grid Size"); } { - _ = cimgui.c.igTableSetColumnIndex(1); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); const grid_size = self.surface.size.grid(); - cimgui.c.igText( + cimgui.c.ImGui_Text( "%dc x %dr", grid_size.columns, grid_size.rows, @@ -678,14 +659,14 @@ fn renderSizeWindow(self: *Inspector) void { // Cell Size { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Cell Size"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Cell Size"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%dpx x %dpx", self.surface.size.cell.width, self.surface.size.cell.height, @@ -695,14 +676,14 @@ fn renderSizeWindow(self: *Inspector) void { // Padding { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Window Padding"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Window Padding"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "T=%d B=%d L=%d R=%d px", self.surface.size.padding.top, self.surface.size.padding.bottom, @@ -713,27 +694,25 @@ fn renderSizeWindow(self: *Inspector) void { } } - cimgui.c.igSeparatorText("Font"); + cimgui.c.ImGui_SeparatorText("Font"); { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_font", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Size (Points)"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Size (Points)"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%.2f pt", self.surface.font_size.points, ); @@ -741,14 +720,14 @@ fn renderSizeWindow(self: *Inspector) void { } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Size (Pixels)"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Size (Pixels)"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "%.2f px", self.surface.font_size.pixels(), ); @@ -756,17 +735,15 @@ fn renderSizeWindow(self: *Inspector) void { } } - cimgui.c.igSeparatorText("Mouse"); + cimgui.c.ImGui_SeparatorText("Mouse"); { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_mouse", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); const mouse = &self.surface.mouse; const t = self.surface.renderer_state.terminal; @@ -781,14 +758,14 @@ fn renderSizeWindow(self: *Inspector) void { break :pt pt.coord(); }; - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Hover Grid"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Hover Grid"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "row=%d, col=%d", hover_point.y, hover_point.x, @@ -804,14 +781,14 @@ fn renderSizeWindow(self: *Inspector) void { }, }).convert(.terminal, self.surface.size).terminal; - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Hover Point"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Hover Point"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "(%dpx, %dpx)", @as(i64, @intFromFloat(coord.x)), @as(i64, @intFromFloat(coord.y)), @@ -824,23 +801,23 @@ fn renderSizeWindow(self: *Inspector) void { } else false; click: { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Click State"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Click State"); } { - _ = cimgui.c.igTableSetColumnIndex(1); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); if (!any_click) { - cimgui.c.igText("none"); + cimgui.c.ImGui_Text("none"); break :click; } for (mouse.click_state, 0..) |state, i| { if (state != .press) continue; const button: input.MouseButton = @enumFromInt(i); - cimgui.c.igSameLine(0, 0); - cimgui.c.igText("%s", (switch (button) { + cimgui.c.ImGui_SameLine(); + cimgui.c.ImGui_Text("%s", (switch (button) { .unknown => "?", .left => "L", .middle => "M", @@ -868,14 +845,14 @@ fn renderSizeWindow(self: *Inspector) void { break :pt pt.coord(); }; - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Click Grid"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Click Grid"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "row=%d, col=%d", left_click_point.y, left_click_point.x, @@ -884,14 +861,14 @@ fn renderSizeWindow(self: *Inspector) void { } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Click Point"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Click Point"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "(%dpx, %dpx)", @as(u32, @intFromFloat(mouse.left_click_xpos)), @as(u32, @intFromFloat(mouse.left_click_ypos)), @@ -903,8 +880,8 @@ fn renderSizeWindow(self: *Inspector) void { fn renderCellWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. - defer cimgui.c.igEnd(); - if (!cimgui.c.igBegin( + defer cimgui.c.ImGui_End(); + if (!cimgui.c.ImGui_Begin( window_cell, null, cimgui.c.ImGuiWindowFlags_NoFocusOnAppearing, @@ -913,45 +890,45 @@ fn renderCellWindow(self: *Inspector) void { // Our popup for the picker const popup_picker = "Cell Picker"; - if (cimgui.c.igButton("Picker", .{ .x = 0, .y = 0 })) { + if (cimgui.c.ImGui_Button("Picker")) { // Request a cell self.cell.request(); - cimgui.c.igOpenPopup_Str( + cimgui.c.ImGui_OpenPopup( popup_picker, cimgui.c.ImGuiPopupFlags_None, ); } - if (cimgui.c.igBeginPopupModal( + if (cimgui.c.ImGui_BeginPopupModal( popup_picker, null, cimgui.c.ImGuiWindowFlags_AlwaysAutoResize, )) popup: { - defer cimgui.c.igEndPopup(); + defer cimgui.c.ImGui_EndPopup(); // Once we select a cell, close this popup. if (self.cell == .selected) { - cimgui.c.igCloseCurrentPopup(); + cimgui.c.ImGui_CloseCurrentPopup(); break :popup; } - cimgui.c.igText( + cimgui.c.ImGui_Text( "Click on a cell in the terminal to inspect it.\n" ++ "The click will be intercepted by the picker, \n" ++ "so it won't be sent to the terminal.", ); - cimgui.c.igSeparator(); + cimgui.c.ImGui_Separator(); - if (cimgui.c.igButton("Cancel", .{ .x = 0, .y = 0 })) { - cimgui.c.igCloseCurrentPopup(); + if (cimgui.c.ImGui_Button("Cancel")) { + cimgui.c.ImGui_CloseCurrentPopup(); } } // cell pick popup - cimgui.c.igSeparator(); + cimgui.c.ImGui_Separator(); if (self.cell != .selected) { - cimgui.c.igText("No cell selected."); + cimgui.c.ImGui_Text("No cell selected."); return; } @@ -965,8 +942,8 @@ fn renderCellWindow(self: *Inspector) void { fn renderKeyboardWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. - defer cimgui.c.igEnd(); - if (!cimgui.c.igBegin( + defer cimgui.c.ImGui_End(); + if (!cimgui.c.ImGui_Begin( window_keyboard, null, cimgui.c.ImGuiWindowFlags_NoFocusOnAppearing, @@ -974,47 +951,44 @@ fn renderKeyboardWindow(self: *Inspector) void { list: { if (self.key_events.empty()) { - cimgui.c.igText("No recorded key events. Press a key with the " ++ + cimgui.c.ImGui_Text("No recorded key events. Press a key with the " ++ "terminal focused to record it."); break :list; } - if (cimgui.c.igButton("Clear", .{ .x = 0, .y = 0 })) { + if (cimgui.c.ImGui_Button("Clear")) { var it = self.key_events.iterator(.forward); while (it.next()) |v| v.deinit(self.surface.alloc); self.key_events.clear(); self.vt_stream.handler.current_seq = 1; } - cimgui.c.igSeparator(); + cimgui.c.ImGui_Separator(); - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_key_events", 1, //cimgui.c.ImGuiTableFlags_ScrollY | cimgui.c.ImGuiTableFlags_RowBg | cimgui.c.ImGuiTableFlags_Borders, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); var it = self.key_events.iterator(.reverse); while (it.next()) |ev| { // Need to push an ID so that our selectable is unique. - cimgui.c.igPushID_Ptr(ev); - defer cimgui.c.igPopID(); + cimgui.c.ImGui_PushIDPtr(ev); + defer cimgui.c.ImGui_PopID(); - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); var buf: [1024]u8 = undefined; const label = ev.label(&buf) catch "Key Event"; - _ = cimgui.c.igSelectable_BoolPtr( + _ = cimgui.c.ImGui_SelectableBoolPtr( label.ptr, &ev.imgui_state.selected, cimgui.c.ImGuiSelectableFlags_None, - .{ .x = 0, .y = 0 }, ); if (!ev.imgui_state.selected) continue; @@ -1034,7 +1008,7 @@ fn getKeyAction(self: *Inspector) KeyAction { }; inline for (keys) |k| { - if (cimgui.c.igIsKeyPressed_Bool(k.key, false)) { + if (cimgui.c.ImGui_IsKeyPressed(k.key)) { return k.action; } } @@ -1043,8 +1017,8 @@ fn getKeyAction(self: *Inspector) KeyAction { fn renderTermioWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. - defer cimgui.c.igEnd(); - if (!cimgui.c.igBegin( + defer cimgui.c.ImGui_End(); + if (!cimgui.c.ImGui_Begin( window_termio, null, cimgui.c.ImGuiWindowFlags_NoFocusOnAppearing, @@ -1057,21 +1031,21 @@ fn renderTermioWindow(self: *Inspector) void { "Pause##pause_play" else "Resume##pause_play"; - if (cimgui.c.igButton(pause_play.ptr, .{ .x = 0, .y = 0 })) { + if (cimgui.c.ImGui_Button(pause_play.ptr)) { self.vt_stream.handler.active = !self.vt_stream.handler.active; } - cimgui.c.igSameLine(0, cimgui.c.igGetStyle().*.ItemInnerSpacing.x); - if (cimgui.c.igButton("Filter", .{ .x = 0, .y = 0 })) { - cimgui.c.igOpenPopup_Str( + cimgui.c.ImGui_SameLineEx(0, cimgui.c.ImGui_GetStyle().*.ItemInnerSpacing.x); + if (cimgui.c.ImGui_Button("Filter")) { + cimgui.c.ImGui_OpenPopup( popup_filter, cimgui.c.ImGuiPopupFlags_None, ); } if (!self.vt_events.empty()) { - cimgui.c.igSameLine(0, cimgui.c.igGetStyle().*.ItemInnerSpacing.x); - if (cimgui.c.igButton("Clear", .{ .x = 0, .y = 0 })) { + cimgui.c.ImGui_SameLineEx(0, cimgui.c.ImGui_GetStyle().*.ItemInnerSpacing.x); + if (cimgui.c.ImGui_Button("Clear")) { var it = self.vt_events.iterator(.forward); while (it.next()) |v| v.deinit(self.surface.alloc); self.vt_events.clear(); @@ -1081,44 +1055,36 @@ fn renderTermioWindow(self: *Inspector) void { } } - cimgui.c.igSeparator(); + cimgui.c.ImGui_Separator(); if (self.vt_events.empty()) { - cimgui.c.igText("Waiting for events..."); + cimgui.c.ImGui_Text("Waiting for events..."); break :list; } - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_vt_events", 3, cimgui.c.ImGuiTableFlags_RowBg | cimgui.c.ImGuiTableFlags_Borders, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); - cimgui.c.igTableSetupColumn( + cimgui.c.ImGui_TableSetupColumn( "Seq", cimgui.c.ImGuiTableColumnFlags_WidthFixed, - 0, - 0, ); - cimgui.c.igTableSetupColumn( + cimgui.c.ImGui_TableSetupColumn( "Kind", cimgui.c.ImGuiTableColumnFlags_WidthFixed, - 0, - 0, ); - cimgui.c.igTableSetupColumn( + cimgui.c.ImGui_TableSetupColumn( "Description", cimgui.c.ImGuiTableColumnFlags_WidthStretch, - 0, - 0, ); // Handle keyboard navigation when window is focused - if (cimgui.c.igIsWindowFocused(cimgui.c.ImGuiFocusedFlags_RootAndChildWindows)) { + if (cimgui.c.ImGui_IsWindowFocused(cimgui.c.ImGuiFocusedFlags_RootAndChildWindows)) { const key_pressed = self.getKeyAction(); switch (key_pressed) { @@ -1174,11 +1140,11 @@ fn renderTermioWindow(self: *Inspector) void { var it = self.vt_events.iterator(.reverse); while (it.next()) |ev| { // Need to push an ID so that our selectable is unique. - cimgui.c.igPushID_Ptr(ev); - defer cimgui.c.igPopID(); + cimgui.c.ImGui_PushIDPtr(ev); + defer cimgui.c.ImGui_PopID(); - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableNextColumn(); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableNextColumn(); // Store the previous selection state to detect changes const was_selected = ev.imgui_selected; @@ -1189,11 +1155,10 @@ fn renderTermioWindow(self: *Inspector) void { } // Handle selectable widget - if (cimgui.c.igSelectable_BoolPtr( + if (cimgui.c.ImGui_SelectableBoolPtr( "##select", &ev.imgui_selected, cimgui.c.ImGuiSelectableFlags_SpanAllColumns, - .{ .x = 0, .y = 0 }, )) { // If selection state changed, update keyboard navigation state if (ev.imgui_selected != was_selected) { @@ -1205,40 +1170,38 @@ fn renderTermioWindow(self: *Inspector) void { } } - cimgui.c.igSameLine(0, 0); - cimgui.c.igText("%d", ev.seq); - _ = cimgui.c.igTableNextColumn(); - cimgui.c.igText("%s", @tagName(ev.kind).ptr); - _ = cimgui.c.igTableNextColumn(); - cimgui.c.igText("%s", ev.str.ptr); + cimgui.c.ImGui_SameLine(); + cimgui.c.ImGui_Text("%d", ev.seq); + _ = cimgui.c.ImGui_TableNextColumn(); + cimgui.c.ImGui_Text("%s", @tagName(ev.kind).ptr); + _ = cimgui.c.ImGui_TableNextColumn(); + cimgui.c.ImGui_Text("%s", ev.str.ptr); // If the event is selected, we render info about it. For now // we put this in the last column because that's the widest and // imgui has no way to make a column span. if (ev.imgui_selected) { { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "details", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); inspector.cursor.renderInTable( self.surface.renderer_state.terminal, &ev.cursor, ); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Scroll Region"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Scroll Region"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text( "T=%d B=%d L=%d R=%d", ev.scrolling_region.top, ev.scrolling_region.bottom, @@ -1253,51 +1216,49 @@ fn renderTermioWindow(self: *Inspector) void { var buf: [256]u8 = undefined; const key = std.fmt.bufPrintZ(&buf, "{s}", .{entry.key_ptr.*}) catch ""; - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableNextColumn(); - cimgui.c.igText("%s", key.ptr); - _ = cimgui.c.igTableNextColumn(); - cimgui.c.igText("%s", entry.value_ptr.ptr); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableNextColumn(); + cimgui.c.ImGui_Text("%s", key.ptr); + _ = cimgui.c.ImGui_TableNextColumn(); + cimgui.c.ImGui_Text("%s", entry.value_ptr.ptr); } } // If this is the selected event and scrolling is needed, scroll to it if (self.need_scroll_to_selected and self.is_keyboard_selection) { - cimgui.c.igSetScrollHereY(0.5); + cimgui.c.ImGui_SetScrollHereY(0.5); self.need_scroll_to_selected = false; } } } } // table - if (cimgui.c.igBeginPopupModal( + if (cimgui.c.ImGui_BeginPopupModal( popup_filter, null, cimgui.c.ImGuiWindowFlags_AlwaysAutoResize, )) { - defer cimgui.c.igEndPopup(); + defer cimgui.c.ImGui_EndPopup(); - cimgui.c.igText("Changed filter settings will only affect future events."); + cimgui.c.ImGui_Text("Changed filter settings will only affect future events."); - cimgui.c.igSeparator(); + cimgui.c.ImGui_Separator(); { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_filter_kind", 3, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); inline for (@typeInfo(terminal.Parser.Action.Tag).@"enum".fields) |field| { const tag = @field(terminal.Parser.Action.Tag, field.name); if (tag == .apc_put or tag == .dcs_put) continue; - _ = cimgui.c.igTableNextColumn(); + _ = cimgui.c.ImGui_TableNextColumn(); var value = !self.vt_stream.handler.filter_exclude.contains(tag); - if (cimgui.c.igCheckbox(@tagName(tag).ptr, &value)) { + if (cimgui.c.ImGui_Checkbox(@tagName(tag).ptr, &value)) { if (value) { self.vt_stream.handler.filter_exclude.remove(tag); } else { @@ -1307,22 +1268,22 @@ fn renderTermioWindow(self: *Inspector) void { } } // Filter kind table - cimgui.c.igSeparator(); + cimgui.c.ImGui_Separator(); - cimgui.c.igText( + cimgui.c.ImGui_Text( "Filter by string. Empty displays all, \"abc\" finds lines\n" ++ "containing \"abc\", \"abc,xyz\" finds lines containing \"abc\"\n" ++ "or \"xyz\", \"-abc\" excludes lines containing \"abc\".", ); _ = cimgui.c.ImGuiTextFilter_Draw( - self.vt_stream.handler.filter_text, + &self.vt_stream.handler.filter_text, "##filter_text", 0, ); - cimgui.c.igSeparator(); - if (cimgui.c.igButton("Close", .{ .x = 0, .y = 0 })) { - cimgui.c.igCloseCurrentPopup(); + cimgui.c.ImGui_Separator(); + if (cimgui.c.ImGui_Button("Close")) { + cimgui.c.ImGui_CloseCurrentPopup(); } } // filter popup } diff --git a/src/inspector/cell.zig b/src/inspector/cell.zig index 2f72556bd..540e044fd 100644 --- a/src/inspector/cell.zig +++ b/src/inspector/cell.zig @@ -1,7 +1,7 @@ const std = @import("std"); const assert = @import("../quirks.zig").inlineAssert; const Allocator = std.mem.Allocator; -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); const terminal = @import("../terminal/main.zig"); /// A cell being inspected. This duplicates much of the data in @@ -55,24 +55,22 @@ pub const Cell = struct { y: usize, ) void { // We have a selected cell, show information about it. - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "table_cursor", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Grid Position"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Grid Position"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("row=%d col=%d", y, x); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("row=%d col=%d", y, x); } } @@ -82,18 +80,18 @@ pub const Cell = struct { // the single glyph in an image view so it looks _identical_ to the // terminal. codepoint: { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Codepoints"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Codepoints"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - if (cimgui.c.igBeginListBox("##codepoints", .{ .x = 0, .y = 0 })) { - defer cimgui.c.igEndListBox(); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + if (cimgui.c.ImGui_BeginListBox("##codepoints", .{ .x = 0, .y = 0 })) { + defer cimgui.c.ImGui_EndListBox(); if (self.codepoint == 0) { - _ = cimgui.c.igSelectable_Bool("(empty)", false, 0, .{}); + _ = cimgui.c.ImGui_SelectableEx("(empty)", false, 0, .{}); break :codepoint; } @@ -102,42 +100,42 @@ pub const Cell = struct { { const key = std.fmt.bufPrintZ(&buf, "U+{X}", .{self.codepoint}) catch ""; - _ = cimgui.c.igSelectable_Bool(key.ptr, false, 0, .{}); + _ = cimgui.c.ImGui_SelectableEx(key.ptr, false, 0, .{}); } // All extras for (self.cps) |cp| { const key = std.fmt.bufPrintZ(&buf, "U+{X}", .{cp}) catch ""; - _ = cimgui.c.igSelectable_Bool(key.ptr, false, 0, .{}); + _ = cimgui.c.ImGui_SelectableEx(key.ptr, false, 0, .{}); } } } } // Character width property - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Width Property"); - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText(@tagName(self.wide)); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Width Property"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text(@tagName(self.wide)); // If we have a color then we show the color - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Foreground Color"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Foreground Color"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); switch (self.style.fg_color) { - .none => cimgui.c.igText("default"), + .none => cimgui.c.ImGui_Text("default"), .palette => |idx| { const rgb = t.colors.palette.current[idx]; - cimgui.c.igValue_Int("Palette", idx); + cimgui.c.ImGui_Text("Palette %d", idx); var color: [3]f32 = .{ @as(f32, @floatFromInt(rgb.r)) / 255, @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_fg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -152,7 +150,7 @@ pub const Cell = struct { @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_fg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -162,21 +160,21 @@ pub const Cell = struct { }, } - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Background Color"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Background Color"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); switch (self.style.bg_color) { - .none => cimgui.c.igText("default"), + .none => cimgui.c.ImGui_Text("default"), .palette => |idx| { const rgb = t.colors.palette.current[idx]; - cimgui.c.igValue_Int("Palette", idx); + cimgui.c.ImGui_Text("Palette %d", idx); var color: [3]f32 = .{ @as(f32, @floatFromInt(rgb.r)) / 255, @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_bg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -191,7 +189,7 @@ pub const Cell = struct { @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_bg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -209,17 +207,17 @@ pub const Cell = struct { inline for (styles) |style| style: { if (!@field(self.style.flags, style)) break :style; - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText(style.ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text(style.ptr); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("true"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("true"); } } - cimgui.c.igTextDisabled("(Any styles not shown are not currently set)"); + cimgui.c.ImGui_TextDisabled("(Any styles not shown are not currently set)"); } }; diff --git a/src/inspector/cursor.zig b/src/inspector/cursor.zig index 756898252..4f8bfb2e0 100644 --- a/src/inspector/cursor.zig +++ b/src/inspector/cursor.zig @@ -1,4 +1,4 @@ -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); const terminal = @import("../terminal/main.zig"); /// Render cursor information with a table already open. @@ -7,57 +7,57 @@ pub fn renderInTable( cursor: *const terminal.Screen.Cursor, ) void { { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Position (x, y)"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Position (x, y)"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("(%d, %d)", cursor.x, cursor.y); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("(%d, %d)", cursor.x, cursor.y); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Style"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Style"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", @tagName(cursor.cursor_style).ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", @tagName(cursor.cursor_style).ptr); } } if (cursor.pending_wrap) { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Pending Wrap"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Pending Wrap"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", if (cursor.pending_wrap) "true".ptr else "false".ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", if (cursor.pending_wrap) "true".ptr else "false".ptr); } } // If we have a color then we show the color - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Foreground Color"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Foreground Color"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); switch (cursor.style.fg_color) { - .none => cimgui.c.igText("default"), + .none => cimgui.c.ImGui_Text("default"), .palette => |idx| { const rgb = t.colors.palette.current[idx]; - cimgui.c.igValue_Int("Palette", idx); + cimgui.c.ImGui_Text("Palette %d", idx); var color: [3]f32 = .{ @as(f32, @floatFromInt(rgb.r)) / 255, @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_fg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -72,7 +72,7 @@ pub fn renderInTable( @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_fg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -82,21 +82,21 @@ pub fn renderInTable( }, } - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Background Color"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Background Color"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); switch (cursor.style.bg_color) { - .none => cimgui.c.igText("default"), + .none => cimgui.c.ImGui_Text("default"), .palette => |idx| { const rgb = t.colors.palette.current[idx]; - cimgui.c.igValue_Int("Palette", idx); + cimgui.c.ImGui_Text("Palette %d", idx); var color: [3]f32 = .{ @as(f32, @floatFromInt(rgb.r)) / 255, @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_bg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -111,7 +111,7 @@ pub fn renderInTable( @as(f32, @floatFromInt(rgb.g)) / 255, @as(f32, @floatFromInt(rgb.b)) / 255, }; - _ = cimgui.c.igColorEdit3( + _ = cimgui.c.ImGui_ColorEdit3( "color_bg", &color, cimgui.c.ImGuiColorEditFlags_DisplayHex | @@ -129,14 +129,14 @@ pub fn renderInTable( inline for (styles) |style| style: { if (!@field(cursor.style.flags, style)) break :style; - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText(style.ptr); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text(style.ptr); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("true"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("true"); } } } diff --git a/src/inspector/key.zig b/src/inspector/key.zig index e42e4f23c..12d91a107 100644 --- a/src/inspector/key.zig +++ b/src/inspector/key.zig @@ -2,7 +2,7 @@ const std = @import("std"); const Allocator = std.mem.Allocator; const input = @import("../input.zig"); const CircBuf = @import("../datastruct/main.zig").CircBuf; -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); /// Circular buffer of key events. pub const EventRing = CircBuf(Event, undefined); @@ -72,30 +72,28 @@ pub const Event = struct { /// Render this event in the inspector GUI. pub fn render(self: *const Event) void { - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "##event", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); if (self.binding.len > 0) { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Triggered Binding"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Triggered Binding"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); const height: f32 = height: { const item_count: f32 = @floatFromInt(@min(self.binding.len, 5)); - const padding = cimgui.c.igGetStyle().*.FramePadding.y * 2; - break :height cimgui.c.igGetTextLineHeightWithSpacing() * item_count + padding; + const padding = cimgui.c.ImGui_GetStyle().*.FramePadding.y * 2; + break :height cimgui.c.ImGui_GetTextLineHeightWithSpacing() * item_count + padding; }; - if (cimgui.c.igBeginListBox("##bindings", .{ .x = 0, .y = height })) { - defer cimgui.c.igEndListBox(); + if (cimgui.c.ImGui_BeginListBox("##bindings", .{ .x = 0, .y = height })) { + defer cimgui.c.ImGui_EndListBox(); for (self.binding) |action| { - _ = cimgui.c.igSelectable_Bool( + _ = cimgui.c.ImGui_SelectableEx( @tagName(action).ptr, false, cimgui.c.ImGuiSelectableFlags_None, @@ -106,64 +104,64 @@ pub const Event = struct { } pty: { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Encoding to Pty"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Encoding to Pty"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); if (self.pty.len == 0) { - cimgui.c.igTextDisabled("(no data)"); + cimgui.c.ImGui_TextDisabled("(no data)"); break :pty; } self.renderPty() catch { - cimgui.c.igTextDisabled("(error rendering pty data)"); + cimgui.c.ImGui_TextDisabled("(error rendering pty data)"); break :pty; }; } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Action"); - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", @tagName(self.event.action).ptr); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Action"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", @tagName(self.event.action).ptr); } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Key"); - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%s", @tagName(self.event.key).ptr); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Key"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%s", @tagName(self.event.key).ptr); } if (!self.event.mods.empty()) { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Mods"); - _ = cimgui.c.igTableSetColumnIndex(1); - if (self.event.mods.shift) cimgui.c.igText("shift "); - if (self.event.mods.ctrl) cimgui.c.igText("ctrl "); - if (self.event.mods.alt) cimgui.c.igText("alt "); - if (self.event.mods.super) cimgui.c.igText("super "); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Mods"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + if (self.event.mods.shift) cimgui.c.ImGui_Text("shift "); + if (self.event.mods.ctrl) cimgui.c.ImGui_Text("ctrl "); + if (self.event.mods.alt) cimgui.c.ImGui_Text("alt "); + if (self.event.mods.super) cimgui.c.ImGui_Text("super "); } if (self.event.composing) { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Composing"); - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("true"); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Composing"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("true"); } utf8: { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("UTF-8"); - _ = cimgui.c.igTableSetColumnIndex(1); + cimgui.c.ImGui_TableNextRow(); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("UTF-8"); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); if (self.event.utf8.len == 0) { - cimgui.c.igTextDisabled("(empty)"); + cimgui.c.ImGui_TextDisabled("(empty)"); break :utf8; } self.renderUtf8(self.event.utf8) catch { - cimgui.c.igTextDisabled("(error rendering utf-8)"); + cimgui.c.ImGui_TextDisabled("(error rendering utf-8)"); break :utf8; }; } @@ -187,13 +185,11 @@ pub const Event = struct { try writer.writeByte(0); // Render as a textbox - _ = cimgui.c.igInputText( + _ = cimgui.c.ImGui_InputText( "##utf8", &buf, buf_stream.getWritten().len - 1, cimgui.c.ImGuiInputTextFlags_ReadOnly, - null, - null, ); } @@ -223,13 +219,11 @@ pub const Event = struct { try writer.writeByte(0); // Render as a textbox - _ = cimgui.c.igInputText( + _ = cimgui.c.ImGui_InputText( "##pty", &buf, buf_stream.getWritten().len - 1, cimgui.c.ImGuiInputTextFlags_ReadOnly, - null, - null, ); } }; diff --git a/src/inspector/page.zig b/src/inspector/page.zig index 7da469e21..fd9d3bfb4 100644 --- a/src/inspector/page.zig +++ b/src/inspector/page.zig @@ -1,167 +1,161 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); const terminal = @import("../terminal/main.zig"); const units = @import("units.zig"); pub fn render(page: *const terminal.Page) void { - cimgui.c.igPushID_Ptr(page); - defer cimgui.c.igPopID(); + cimgui.c.ImGui_PushIDPtr(page); + defer cimgui.c.ImGui_PopID(); - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_BeginTable( "##page_state", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Memory Size"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Memory Size"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d bytes (%d KiB)", page.memory.len, units.toKibiBytes(page.memory.len)); - cimgui.c.igText("%d VM pages", page.memory.len / std.heap.page_size_min); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d bytes (%d KiB)", page.memory.len, units.toKibiBytes(page.memory.len)); + cimgui.c.ImGui_Text("%d VM pages", page.memory.len / std.heap.page_size_min); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Unique Styles"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Unique Styles"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", page.styles.count()); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", page.styles.count()); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Grapheme Entries"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Grapheme Entries"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", page.graphemeCount()); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", page.graphemeCount()); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Capacity"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Capacity"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + _ = cimgui.c.ImGui_BeginTable( "##capacity", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); const cap = page.capacity; { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Columns"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Columns"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", @as(u32, @intCast(cap.cols))); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", @as(u32, @intCast(cap.cols))); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Rows"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Rows"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", @as(u32, @intCast(cap.rows))); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", @as(u32, @intCast(cap.rows))); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Unique Styles"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Unique Styles"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", @as(u32, @intCast(cap.styles))); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", @as(u32, @intCast(cap.styles))); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Grapheme Bytes"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Grapheme Bytes"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", cap.grapheme_bytes); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", cap.grapheme_bytes); } } } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Size"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Size"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - _ = cimgui.c.igBeginTable( + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + _ = cimgui.c.ImGui_BeginTable( "##size", 2, cimgui.c.ImGuiTableFlags_None, - .{ .x = 0, .y = 0 }, - 0, ); - defer cimgui.c.igEndTable(); + defer cimgui.c.ImGui_EndTable(); const size = page.size; { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Columns"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Columns"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", @as(u32, @intCast(size.cols))); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", @as(u32, @intCast(size.cols))); } } { - cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); + cimgui.c.ImGui_TableNextRow(); { - _ = cimgui.c.igTableSetColumnIndex(0); - cimgui.c.igText("Rows"); + _ = cimgui.c.ImGui_TableSetColumnIndex(0); + cimgui.c.ImGui_Text("Rows"); } { - _ = cimgui.c.igTableSetColumnIndex(1); - cimgui.c.igText("%d", @as(u32, @intCast(size.rows))); + _ = cimgui.c.ImGui_TableSetColumnIndex(1); + cimgui.c.ImGui_Text("%d", @as(u32, @intCast(size.rows))); } } } diff --git a/src/inspector/termio.zig b/src/inspector/termio.zig index 7e2b51ee1..9f55e6019 100644 --- a/src/inspector/termio.zig +++ b/src/inspector/termio.zig @@ -1,6 +1,6 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const cimgui = @import("cimgui"); +const cimgui = @import("dcimgui"); const terminal = @import("../terminal/main.zig"); const CircBuf = @import("../datastruct/main.zig").CircBuf; const Surface = @import("../Surface.zig"); @@ -83,7 +83,7 @@ pub const VTEvent = struct { /// Returns true if the event passes the given filter. pub fn passFilter( self: *const VTEvent, - filter: *cimgui.c.ImGuiTextFilter, + filter: *const cimgui.c.ImGuiTextFilter, ) bool { // Check our main string if (cimgui.c.ImGuiTextFilter_PassFilter( @@ -318,19 +318,18 @@ pub const VTHandler = struct { /// Exclude certain actions by tag. filter_exclude: ActionTagSet = .initMany(&.{.print}), - filter_text: *cimgui.c.ImGuiTextFilter, + filter_text: cimgui.c.ImGuiTextFilter = .{}, const ActionTagSet = std.EnumSet(terminal.Parser.Action.Tag); pub fn init(surface: *Surface) VTHandler { return .{ .surface = surface, - .filter_text = cimgui.c.ImGuiTextFilter_ImGuiTextFilter(""), }; } pub fn deinit(self: *VTHandler) void { - cimgui.c.ImGuiTextFilter_destroy(self.filter_text); + _ = self; } pub fn vt( @@ -371,7 +370,7 @@ pub const VTHandler = struct { errdefer ev.deinit(alloc); // Check if the event passes the filter - if (!ev.passFilter(self.filter_text)) { + if (!ev.passFilter(&self.filter_text)) { ev.deinit(alloc); return true; }