mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
* Replaced include guards with #pragma once * All source files now have exactly one newline appended Some files had either two newlines at the end or none (which isn't POSIX compliant). This patch fixes that.
46 lines
1.7 KiB
C++
46 lines
1.7 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) FIRST 2011-2016. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
/* the project. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#pragma once
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <string>
|
|
#include "SmartDashboard/Sendable.h"
|
|
#include "tables/ITable.h"
|
|
|
|
/**
|
|
* The {@link SendableChooser} class is a useful tool for presenting a selection
|
|
* of options to the {@link SmartDashboard}.
|
|
*
|
|
* <p>For instance, you may wish to be able to select between multiple
|
|
* autonomous modes. You can do this by putting every possible {@link Command}
|
|
* you want to run as an autonomous into a {@link SendableChooser} and then put
|
|
* it into the {@link SmartDashboard} to have a list of options appear on the
|
|
* laptop. Once autonomous starts, simply ask the {@link SendableChooser} what
|
|
* the selected value is.</p>
|
|
*
|
|
* @see SmartDashboard
|
|
*/
|
|
class SendableChooser : public Sendable {
|
|
public:
|
|
virtual ~SendableChooser() = default;
|
|
|
|
void AddObject(const std::string& name, void* object);
|
|
void AddDefault(const std::string& name, void* object);
|
|
void* GetSelected();
|
|
|
|
virtual void InitTable(std::shared_ptr<ITable> subtable);
|
|
virtual std::shared_ptr<ITable> GetTable() const;
|
|
virtual std::string GetSmartDashboardType() const;
|
|
|
|
private:
|
|
std::string m_defaultChoice;
|
|
std::map<std::string, void*> m_choices;
|
|
std::shared_ptr<ITable> m_table;
|
|
};
|