MCPcopy Create free account
hub / github.com/DFHack/dfhack / add_main_interface_focus_strings

Function add_main_interface_focus_strings

library/modules/Gui.cpp:343–873  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

341}
342
343static void add_main_interface_focus_strings(const string &baseFocus, vector<string> &focusStrings) {
344 std::string newFocusString;
345
346 if (game->main_interface.main_designation_selected != -1) {
347 newFocusString = baseFocus;
348 newFocusString += "/Designate/" + enum_item_key(game->main_interface.main_designation_selected);
349 focusStrings.push_back(newFocusString);
350 }
351 if (get_visible_child(&game->main_interface.announcements.stack)) {
352 focusStrings.push_back(baseFocus + "/Announcements");
353 }
354 if (game->main_interface.info.open) {
355 newFocusString = baseFocus;
356 newFocusString += "/Info";
357 newFocusString += '/' + enum_item_key(game->main_interface.info.current_mode);
358
359 switch(game->main_interface.info.current_mode) {
360 case df::enums::info_interface_mode_type::CREATURES:
361 {
362 auto tab = get_visible_child_container(Gui::getWidget(&game->main_interface.info.creatures, "Tabs"));
363 if (!tab) {
364 WARN(gui).print("Info tab widget not found\n");
365 } else if (tab->name == "Citizens") {
366 if (tab->children.size() > 1)
367 newFocusString += "/ActivityDetails";
368 else
369 newFocusString += "/CITIZEN";
370 } else if (tab->name == "Pets/Livestock") {
371 if (Gui::getWidget(tab, "Overall training"))
372 newFocusString += "/OverallTraining";
373 else if (Gui::getWidget(tab, "Trainer"))
374 newFocusString += "/AddingTrainer";
375 else if (Gui::getWidget(tab, "Hunting assignment"))
376 newFocusString += "/AssignWorkAnimal";
377 else
378 newFocusString += "/PET";
379 } else if (tab->name == "Other") {
380 newFocusString += "/OTHER";
381 } else if (tab->name == "Dead/Missing") {
382 newFocusString += "/DECEASED";
383 }
384 break;
385 }
386 case df::enums::info_interface_mode_type::BUILDINGS:
387 newFocusString += '/' + enum_item_key(game->main_interface.info.buildings.mode);
388 break;
389 case df::enums::info_interface_mode_type::LABOR:
390 {
391 auto tab = get_visible_child(Gui::getWidget(&game->main_interface.info.labor, "Tabs"));
392 if (!tab) {
393 WARN(gui).print("Labor tab widget not found\n");
394 } else if (tab->name == "Work Details") {
395 newFocusString += "/WORK_DETAILS";
396 auto rp = Gui::getWidget(virtual_cast<df::labor_work_details_interfacest>(tab), "Right panel");
397 if (get_num_children(rp) == 2)
398 newFocusString += "/Details";
399 else
400 newFocusString += "/Default";

Callers 1

Calls 9

enum_item_keyFunction · 0.85
get_visible_childFunction · 0.85
get_num_childrenFunction · 0.85
getTypeMethod · 0.80
findFunction · 0.50
printMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected