예제 #1
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     builder.SmartDashboardType = "String Chooser";
     builder.GetEntry(INSTANCE).SetDouble(m_instance);
     builder.AddStringProperty(DEFAULT, () => m_defaultChoice, null);
     builder.AddStringArrayProperty(OPTIONS, () => m_map.Keys.ToArray(), null);
     builder.AddStringProperty(ACTIVE, () =>
     {
         lock (m_mutex)
         {
             if (m_selected != null)
             {
                 return(m_selected);
             }
             else
             {
                 return(m_defaultChoice);
             }
         }
     }, null);
     lock (m_mutex)
     {
         m_activeEntries.Add(builder.GetEntry(ACTIVE));
     }
     builder.AddStringProperty(SELECTED, null, val =>
     {
         lock (m_mutex)
         {
             m_selected = val;
             foreach (var entry in m_activeEntries)
             {
                 entry.SetString(val);
             }
         }
     });
 }
예제 #2
0
 void ISendable.InitSendable(ISendableBuilder builder)
 {
     builder.SmartDashboardType = "Command";
     builder.AddStringProperty(".name", () => Name, null);
     builder.AddBooleanProperty("running", () => ((ICommand)this).IsScheduled, value =>
     {
         ICommand c = this;
         if (value)
         {
             if (!c.IsScheduled)
             {
                 c.Schedule();
             }
         }
         else
         {
             if (c.IsScheduled)
             {
                 c.Cancel();
             }
         }
     });
 }