Files
allwpilib/simulation/halsim_gui/src/main/native/cpp/NetworkTablesSimGui.cpp

61 lines
2.4 KiB
C++
Raw Normal View History

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
2025-11-07 19:56:21 -05:00
#include "NetworkTablesSimGui.hpp"
2024-09-20 17:43:39 -07:00
#include <memory>
2025-11-07 19:56:21 -05:00
#include "wpi/glass/Context.hpp"
#include "wpi/glass/Storage.hpp"
#include "wpi/glass/networktables/NetworkTables.hpp"
#include "wpi/gui/wpigui.hpp"
#include "wpi/halsim/gui/HALSimGui.hpp"
using namespace halsimgui;
2025-11-07 20:00:05 -05:00
static std::unique_ptr<wpi::glass::NetworkTablesModel> gNetworkTablesModel;
static std::unique_ptr<wpi::glass::Window> gNetworkTablesWindow;
static std::unique_ptr<wpi::glass::Window> gNetworkTablesInfoWindow;
void NetworkTablesSimGui::Initialize() {
2025-11-07 20:00:05 -05:00
gNetworkTablesModel = std::make_unique<wpi::glass::NetworkTablesModel>();
wpi::gui::AddEarlyExecute([] { gNetworkTablesModel->Update(); });
2022-10-08 10:01:31 -07:00
2025-11-07 20:00:05 -05:00
gNetworkTablesWindow = std::make_unique<wpi::glass::Window>(
wpi::glass::GetStorageRoot().GetChild("NetworkTables View"), "NetworkTables");
gNetworkTablesWindow->SetView(
2025-11-07 20:00:05 -05:00
std::make_unique<wpi::glass::NetworkTablesView>(gNetworkTablesModel.get()));
gNetworkTablesWindow->SetDefaultPos(250, 277);
gNetworkTablesWindow->SetDefaultSize(750, 185);
gNetworkTablesWindow->DisableRenamePopup();
wpi::gui::AddLateExecute([] { gNetworkTablesWindow->Display(); });
2022-10-08 10:01:31 -07:00
// NetworkTables info window
2025-11-07 20:00:05 -05:00
gNetworkTablesInfoWindow = std::make_unique<wpi::glass::Window>(
wpi::glass::GetStorageRoot().GetChild("NetworkTables Info"),
2022-10-08 10:01:31 -07:00
"NetworkTables Info");
2025-11-07 20:00:05 -05:00
gNetworkTablesInfoWindow->SetView(wpi::glass::MakeFunctionView(
[&] { wpi::glass::DisplayNetworkTablesInfo(gNetworkTablesModel.get()); }));
2022-10-08 10:01:31 -07:00
gNetworkTablesInfoWindow->SetDefaultPos(250, 130);
gNetworkTablesInfoWindow->SetDefaultSize(750, 145);
2025-11-07 20:00:05 -05:00
gNetworkTablesInfoWindow->SetDefaultVisibility(wpi::glass::Window::kHide);
2022-10-08 10:01:31 -07:00
gNetworkTablesInfoWindow->DisableRenamePopup();
wpi::gui::AddLateExecute([] { gNetworkTablesInfoWindow->Display(); });
wpi::gui::AddWindowScaler([](float scale) {
// scale default window positions
gNetworkTablesWindow->ScaleDefault(scale);
2022-10-08 10:01:31 -07:00
gNetworkTablesInfoWindow->ScaleDefault(scale);
});
}
void NetworkTablesSimGui::DisplayMenu() {
if (gNetworkTablesWindow) {
gNetworkTablesWindow->DisplayMenuItem("NetworkTables View");
}
2022-10-08 10:01:31 -07:00
if (gNetworkTablesInfoWindow) {
gNetworkTablesInfoWindow->DisplayMenuItem("NetworkTables Info");
}
}