From 4488e25f16c6bb98cdbfa48095db56b7f6390da3 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 17 Jan 2021 20:33:42 -0800 Subject: [PATCH] [glass] Shorten SmartDashboard window names (#3096) Instead of "/SmartDashboard/name" they now default to "name (SmartDashboard)". This allows for smaller windows while preserving the name without requiring user customization. --- glass/src/lib/native/cpp/Window.cpp | 3 ++- glass/src/lib/native/include/glass/Window.h | 4 +++- glass/src/libnt/native/cpp/NetworkTablesProvider.cpp | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/glass/src/lib/native/cpp/Window.cpp b/glass/src/lib/native/cpp/Window.cpp index 5b13c77d70..83e59aa79f 100644 --- a/glass/src/lib/native/cpp/Window.cpp +++ b/glass/src/lib/native/cpp/Window.cpp @@ -50,7 +50,8 @@ void Window::Display() { char label[128]; std::snprintf(label, sizeof(label), "%s###%s", - m_name.empty() ? m_id.c_str() : m_name.c_str(), m_id.c_str()); + m_name.empty() ? m_defaultName.c_str() : m_name.c_str(), + m_id.c_str()); if (Begin(label, &m_visible, m_flags)) { if (m_renamePopupEnabled) { diff --git a/glass/src/lib/native/include/glass/Window.h b/glass/src/lib/native/include/glass/Window.h index df2f03d227..504b53e11a 100644 --- a/glass/src/lib/native/include/glass/Window.h +++ b/glass/src/lib/native/include/glass/Window.h @@ -23,7 +23,7 @@ namespace glass { class Window { public: Window() = default; - explicit Window(wpi::StringRef id) : m_id{id} {} + explicit Window(wpi::StringRef id) : m_id{id}, m_defaultName{id} {} wpi::StringRef GetId() const { return m_id; } @@ -44,6 +44,7 @@ class Window { void SetFlags(ImGuiWindowFlags flags) { m_flags = flags; } void SetName(const wpi::Twine& name) { m_name = name.str(); } + void SetDefaultName(const wpi::Twine& name) { m_defaultName = name.str(); } /** * Normally windows provide a right-click popup menu on the title bar to @@ -115,6 +116,7 @@ class Window { private: std::string m_id; std::string m_name; + std::string m_defaultName; std::unique_ptr m_view; ImGuiWindowFlags m_flags = 0; bool m_visible = true; diff --git a/glass/src/libnt/native/cpp/NetworkTablesProvider.cpp b/glass/src/libnt/native/cpp/NetworkTablesProvider.cpp index bfe135e062..7431380752 100644 --- a/glass/src/libnt/native/cpp/NetworkTablesProvider.cpp +++ b/glass/src/libnt/native/cpp/NetworkTablesProvider.cpp @@ -153,6 +153,10 @@ void NetworkTablesProvider::Show(ViewEntry* entry, Window* window) { if (!window) { return; } + if (wpi::StringRef{entry->name}.startswith("/SmartDashboard/")) { + window->SetDefaultName(wpi::StringRef{entry->name}.drop_front(16) + + " (SmartDashboard)"); + } entry->window = window; // create view