Organisation des widgets

Définition de la taille et de la position d’un widget

Appelez withSize et withPosition pour définir la taille et la position du widget dans l’onglet.

withSize définit la largeur en colonnes et la hauteur en lignes du widget. Par exemple, appeler withSize(1, 1) fait en sorte que le widget occupe une seule cellule dans la grille. Notez que certains widgets ont une taille minimale qui peut être supérieure à la taille spécifiée, dans ce cas, le widget utilisera la taille minimale requise et ignorera la taille spécifiée par l’utilisateur.

withPosition définit la ligne et la colonne du coin supérieur gauche du widget. Les lignes et les colonnes sont toutes deux indexées à compter de 0, donc la ligne la plus en haut est le numéro 0 et la colonne la plus à gauche est également le numéro 0. Si la position d’un widget dans un onglet est spécifiée, chaque widget doit également avoir sa position définie pour éviter le chevauchement des widgets.

Shuffleboard.getTab("Pre-round")
  .add("Auto Mode", autoModeChooser)
  .withSize(2, 1) // make the widget 2x1
  .withPosition(0, 0); // place it in the top-left corner
frc::Shuffleboard::GetTab("Pre-round")
  .Add("Auto Mode", autoModeChooser)
  .WithSize(2, 1)
  .WithPosition(0,0);
from wpilib.shuffleboard import Shuffleboard

(Shuffleboard.getTab("Pre-round")
  .add("Auto Mode", autoModeChooser)
  .withSize(2, 1) # make the widget 2x1
  .withPosition(0, 0)) # place it in the top-left corner

Ajout de widgets aux mises en page

S’il existe de nombreux widgets dans un onglet avec des données associées, il peut être utile de les placer dans des sous-groupes plus petits plutôt que de les placer de façon lâche dans l’onglet. Tout comme la façon dont la référence d’un onglet est récupérée avec Shuffleboard.getTab, une disposition à l’intérieur d’un onglet (ou même dans une autre disposition) peut être récupérée avec ShuffleboardTab.getLayout.

ShuffleboardLayout elevatorCommands = Shuffleboard.getTab("Commands")
  .getLayout("Elevator", BuiltInLayouts.kList)
  .withSize(2, 2)
  .withProperties(Map.of("Label position", "HIDDEN")); // hide labels for commands

elevatorCommands.add(new ElevatorDownCommand());
elevatorCommands.add(new ElevatorUpCommand());
wpi::StringMap<std::shared_ptr<nt::Value>> properties{
  std::make_pair("Label position", nt::Value::MakeString("HIDDEN"))
};

frc::ShuffleboardLayout& elevatorCommands = frc::Shuffleboard::GetTab("Commands")
  .GetLayout("Elevator", frc::BuiltInLayouts::kList)
  .WithSize(2, 2)
  .WithProperties(properties);

ElevatorDownCommand* elevatorDown = new ElevatorDownCommand();
ElevatorUpCommand* elevatorUp = new ElevatorUpCommand();

elevatorCommands.Add("Elevator Down", elevatorDown);
elevatorCommands.Add("Elevator Up", elevatorUp);
from wpilib.shuffleboard import Shuffleboard
from wpilib.shuffleboard import BuiltInLayouts

(elevatorCommands = Shuffleboard.getTab("Commands")
  .getLayout("Elevator", BuiltInLayouts.kList)
  .withSize(2, 2)
  .withProperties(map("Label position", "HIDDEN"))) # hide labels for commands

elevatorCommands.add(ElevatorDownCommand())
elevatorCommands.add(ElevatorUpCommand())
Boutons de commandes organisés par l’ordre dans lequel ils sont ajoutés pour les sous-systèmes Elevator et Claw.