165 {
166 ImGui::TextUnformatted("Console Select");
167 ImGui::Separator();
168
170 int sel = 0;
172 {
174 {
175 sel = i;
176 break;
177 }
178 }
179
181 {
183 {
184 bool selected = (i == sel);
186 {
187 sel = i;
189 }
190
191 if (selected)
192 ImGui::SetItemDefaultFocus();
193 }
194 ImGui::EndCombo();
195 }
196
197 if (ImGui::Button("Clear Console"))
198 {
200 }
201
202 ImGui::Dummy(ImVec2(0, 6));
203 ImGui::Separator();
204 ImGui::TextUnformatted("LocalTunnel");
205 if (ImGui::Button("Start"))
206 {
208 {
210 if (!url.empty())
212 else
214 }
215 else
216 {
218 }
219 }
220 ImGui::SameLine();
221 if (ImGui::Button("Stop"))
222 {
224 {
227 }
228 else
229 {
231 }
232 }
233
234 ImGui::Dummy(ImVec2(0, 6));
235 ImGui::Separator();
236
237 if (ImGui::Button("Print Identity"))
238 {
240 {
243 }
244 else
245 {
247 }
248 }
249
250 ImGui::Dummy(ImVec2(0, 6));
251 ImGui::Separator();
252
254 ImGui::SetItemTooltip("When ON, the per-frame debug callbacks of active toggles will run.");
255
256 ImGui::TextUnformatted("Debug Toggles");
257 ImGui::BeginChild("TogglesScroll", ImVec2(0, -30), false, ImGuiWindowFlags_HorizontalScrollbar);
259 {
260 bool val = t.flagPtr ? *t.flagPtr : false;
261 if (ImGui::Checkbox(t.label.c_str(), &val))
262 {
263 if (t.flagPtr)
264 *t.flagPtr = val;
265 if (t.onChanged)
266 t.onChanged(val);
267 }
268 }
269 ImGui::EndChild();
270 }
static std::vector< std::string > displayNames_
static void buildChannelLists_(std::vector< std::string > &display, std::vector< std::string > &order)
static std::function< std::string()> ltStart_
static std::function< void()> ltStop_
static std::vector< std::string > channelOrder_
static std::function< std::string()> identityLogger_