| 299 | } |
| 300 | |
| 301 | void ExamplesFrame::setupButtons() { |
| 302 | visage::Font font(20, resources::fonts::Lato_Regular_ttf); |
| 303 | |
| 304 | icon_button_ = std::make_unique<visage::ToggleIconButton>(resources::icons::check_circle_svg.data, |
| 305 | resources::icons::check_circle_svg.size, true); |
| 306 | |
| 307 | text_button_ = std::make_unique<visage::ToggleTextButton>("Toggle"); |
| 308 | text_button_->setFont(font); |
| 309 | |
| 310 | ui_button_ = std::make_unique<visage::UiButton>("Trigger Overlay"); |
| 311 | ui_button_->setFont(font); |
| 312 | ui_button_->onToggle() = [this](visage::Button* button, bool toggled) { |
| 313 | on_show_overlay_.callback(); |
| 314 | }; |
| 315 | |
| 316 | ui_button_->setToggleOnMouseDown(true); |
| 317 | |
| 318 | action_button_ = std::make_unique<visage::UiButton>("Popup Menu"); |
| 319 | action_button_->setFont(font); |
| 320 | action_button_->setActionButton(); |
| 321 | action_button_->onToggle() = [this](visage::Button* button, bool toggled) { |
| 322 | visage::PopupMenu menu; |
| 323 | menu.addOption(0, "Take Screenshot"); |
| 324 | menu.addOption(1, "Toggle Debug Info"); |
| 325 | menu.addBreak(); |
| 326 | visage::PopupMenu sub_menu("Sub Menu"); |
| 327 | sub_menu.addOption(3, "Sub Item 1"); |
| 328 | sub_menu.addBreak(); |
| 329 | sub_menu.addOption(4, "Sub Item 2"); |
| 330 | sub_menu.addOption(5, "Sub Item 3"); |
| 331 | sub_menu.addOption(6, "Sub Item 4"); |
| 332 | menu.addSubMenu(sub_menu); |
| 333 | visage::PopupMenu sub_menu2("Other Sub Menu"); |
| 334 | sub_menu2.addOption(7, "Other Sub Item 1"); |
| 335 | sub_menu2.addBreak(); |
| 336 | sub_menu2.addOption(8, "Other Sub Item 2"); |
| 337 | sub_menu2.addOption(9, "Other Sub Item 3"); |
| 338 | sub_menu2.addOption(10, "Other Sub Item 4"); |
| 339 | menu.addSubMenu(sub_menu2); |
| 340 | menu.addBreak(); |
| 341 | menu.addOption(12, "Force Crash"); |
| 342 | menu.addOption(13, "Close Application"); |
| 343 | |
| 344 | menu.onSelection() = [this](int id) { |
| 345 | if (id == 0) { |
| 346 | visage::File file = visage::hostExecutable().parent_path() / "screenshot.png"; |
| 347 | on_screenshot_.callback(file.string()); |
| 348 | } |
| 349 | else if (id == 1) |
| 350 | on_toggle_debug_.callback(); |
| 351 | else if (id == 12) |
| 352 | visage::forceCrash(); |
| 353 | else if (id == 13) |
| 354 | visage::closeApplication(); |
| 355 | }; |
| 356 | |
| 357 | menu.show(action_button_.get()); |
| 358 | }; |
nothing calls this directly
no test coverage detected