415{
416 ImGuiWrapper& imgui = *wxGetApp().imgui();
417 float scale = imgui.get_font_size() / 15.0f;
418 ImGuiWindow* parent_window = ImGui::GetCurrentWindow();
419 int window_flags = parent_window->Flags;
420 std::string name = "##DailyTipsPanelControllers" + std::to_string(parent_window->ID);
421 ImGui::SetNextWindowPos(pos);
422 if (ImGui::BeginChild(name.c_str(), size, false, window_flags)) {
423 ImVec2 button_size = ImVec2(38.0f, 38.0f) *
scale;
424 float button_margin_x = 8.0f *
scale;
425 std::wstring button_text;
426
427
428 ImVec2 btn_pos =
pos + ImVec2(0, (size.y - ImGui::CalcTextSize(
"A").y) / 2);
429 ImGui::SetCursorScreenPos(btn_pos);
432 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f));
433 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(.0f, .0f, .0f, .0f));
434 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(.0f, .0f, .0f, .0f));
435 ImGui::PushStyleColor(ImGuiCol_Text, ImColor(144, 144, 144, (
int)(255 *
m_fade_opacity)).Value);
436
437 button_text = ImGui::CollapseArrowIcon;
438 imgui.button((
_L(
"Collapse") + button_text));
439 ImVec2 collapse_btn_size = ImGui::CalcTextSize((
_u8L(
"Collapse")).c_str());
440 collapse_btn_size.x += button_size.x / 2.0f;
441 if (ImGui::IsMouseHoveringRect(btn_pos, btn_pos + collapse_btn_size, true))
442 {
443
444 ImVec2 lineEnd = ImGui::GetItemRectMax();
445 lineEnd.x -= ImGui::CalcTextSize("A").x / 2;
446 lineEnd.y -= 2;
447 ImVec2 lineStart = lineEnd;
448 lineStart.x = ImGui::GetItemRectMin().x;
449 ImGui::GetWindowDrawList()->AddLine(lineStart, lineEnd, ImColor(144, 144, 144));
450
451 if (ImGui::IsMouseClicked(ImGuiMouseButton_Left))
453 }
454
455 ImGui::PopStyleColor(4);
456 }
457 else {
458 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f));
459 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(.0f, .0f, .0f, .0f));
460 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(.0f, .0f, .0f, .0f));
462
463
464 imgui.push_bold_font();
465 imgui.button((
_L(
"Daily Tips")));
466 imgui.pop_bold_font();
467 ImVec2 expand_btn_size = ImGui::CalcTextSize((
_u8L(
"Daily Tips")).c_str());
468 ImGui::SetCursorScreenPos(ImVec2(btn_pos.x + expand_btn_size.x + ImGui::CalcTextSize(" ").x, btn_pos.y));
469 button_text = ImGui::ExpandArrowIcon;
470 imgui.button(button_text.c_str());
471 expand_btn_size.x += 19.0f *
scale;
472 if (ImGui::IsMouseHoveringRect(btn_pos, btn_pos + expand_btn_size, true))
473 {
474
475 ImVec2 lineEnd = ImGui::GetItemRectMax();
476 lineEnd.x -= ImGui::CalcTextSize("A").x / 2;
477 lineEnd.y -= 2;
478 ImVec2 lineStart = lineEnd;
479 lineStart.x = ImGui::GetItemRectMin().x - expand_btn_size.x;
481
482 if (ImGui::IsMouseClicked(ImGuiMouseButton_Left))
484 }
485
486 ImGui::PopStyleColor(4);
487
488 ImGui::EndChild();
489 return;
490 }
491 }
492
493
497 float text_item_width = ImGui::CalcTextSize(text_str.c_str()).x;
498 ImGui::PushItemWidth(text_item_width);
499 float text_pos_x = (
pos + size).x - button_margin_x * 2 - button_size.x * 2 - text_item_width;
500 float text_pos_y =
pos.y + (size.y - ImGui::CalcTextSize(
"A").y) / 2;
501 ImGui::SetCursorScreenPos(ImVec2(text_pos_x, text_pos_y));
503 imgui.text(text_str);
504 ImGui::PopStyleColor();
505 ImGui::PopItemWidth();
506
507 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f));
508 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(.0f, .0f, .0f, .0f));
509 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(.0f, .0f, .0f, .0f));
510 ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(.0f, .0f, .0f, .0f));
511
512
514 ImVec2 prev_button_pos =
pos + size + ImVec2(-button_margin_x - button_size.x * 2, -size.y + (size.y - button_size.y) / 2);
515 ImGui::SetCursorScreenPos(prev_button_pos);
516 button_text = ImGui::PrevArrowBtnIcon;
517 if (ImGui::IsMouseHoveringRect(prev_button_pos, prev_button_pos + button_size, true))
518 {
519 button_text_color = ImColor(0, 150, 136, (
int)(255 *
m_fade_opacity));
520 if (ImGui::IsMouseClicked(ImGuiMouseButton_Left))
522 }
523 ImGui::PushStyleColor(ImGuiCol_Text, button_text_color.Value);
524 imgui.button(button_text.c_str());
525 ImGui::PopStyleColor();
526
527
529 ImVec2 next_button_pos =
pos + size + ImVec2(-button_size.x, -size.y + (size.y - button_size.y) / 2);
530 ImGui::SetCursorScreenPos(next_button_pos);
531 button_text = ImGui::NextArrowBtnIcon;
532 if (ImGui::IsMouseHoveringRect(next_button_pos, next_button_pos + button_size, true))
533 {
534 button_text_color = ImColor(0, 150, 136, (
int)(255 *
m_fade_opacity));
535 if (ImGui::IsMouseClicked(ImGuiMouseButton_Left))
537 }
538 ImGui::PushStyleColor(ImGuiCol_Text, button_text_color.Value);
539 imgui.button(button_text.c_str());
540 ImGui::PopStyleColor();
541
542 ImGui::PopStyleColor(4);
543 }
544 ImGui::EndChild();
545}
#define _L(s)
Definition OBJ.cpp:34
void collapse()
Definition DailyTips.cpp:372
float m_fade_opacity
Definition DailyTips.hpp:56
int m_pages_count
Definition DailyTips.hpp:45
size_t m_page_index
Definition DailyTips.hpp:44
size_t get_index()
Definition HintNotification.hpp:61
static HintDatabase & get_instance()
Definition HintNotification.hpp:44
size_t get_count()
Definition HintNotification.hpp:62
@ Next
Definition HintNotification.hpp:37
@ Prev
Definition HintNotification.hpp:36
Vec3d pos(const Pt &p)
Definition ReprojectPointsOnMesh.hpp:16
#define _u8L(s)
Definition I18N.hpp:11