From d87863ba9cde33a37d75154364c311f5d738e0b4 Mon Sep 17 00:00:00 2001 From: redtide Date: Mon, 5 Apr 2021 21:14:37 +0200 Subject: [PATCH] Text for icons in the about dialog --- plugins/editor/layout/about.fl | 28 +++++++-------- plugins/editor/src/editor/DlgAbout.cpp | 40 ++++++++++++++------- plugins/editor/src/editor/GUIComponents.cpp | 4 +++ plugins/editor/src/editor/GUIComponents.h | 4 +++ plugins/editor/src/editor/layout/about.hpp | 20 +++++------ 5 files changed, 60 insertions(+), 36 deletions(-) diff --git a/plugins/editor/layout/about.fl b/plugins/editor/layout/about.fl index b268da03..838f9117 100644 --- a/plugins/editor/layout/about.fl +++ b/plugins/editor/layout/about.fl @@ -4,47 +4,47 @@ header_name {.h} code_name {.cxx} widget_class aboutView { label {About sfizz} open selected - xywh {536 183 800 475} type Double visible + xywh {527 165 800 475} type Double visible } { - Fl_Box {} { - image {../resources/logo_orange.png} xywh {200 80 400 180} - class Logo + Fl_Box lblHover_ { + xywh {200 80 400 25} labelsize 10 + class HoverBox } Fl_Button {} { comment {tag=kTagButtonSfztools} - xywh {235 45 50 50} labelsize 30 + xywh {235 45 35 35} labelsize 30 class ButtonSfztools } Fl_Button {} { comment {tag=kTagButtonGithub} - xywh {305 45 50 50} labelsize 30 + xywh {305 45 35 35} labelsize 30 class ButtonGithub } Fl_Button {} { comment {tag=kTagButtonDiscord} - xywh {375 45 50 50} labelsize 30 + xywh {375 45 35 35} labelsize 30 class ButtonDiscord } Fl_Button {} { comment {tag=kTagButtonOpencollective} - xywh {445 45 50 50} labelsize 30 + xywh {445 45 35 35} labelsize 30 class ButtonOpencollective } Fl_Button {} { comment {tag=kTagButtonSfzformat} - xywh {515 45 50 50} labelsize 30 + xywh {515 45 35 35} labelsize 30 class ButtonSfzformat } Fl_Box {} { - xywh {260 260 280 80} + image {../resources/logo_orange.png} xywh {200 90 400 180} + class Logo + } + Fl_Box {} { + xywh {260 270 280 80} class InfoBox } Fl_Box {} { xywh {200 350 400 100} class DescriptionBox } - Fl_Box lblHover_ { - xywh {320 10 160 25} - class HoverBox - } } diff --git a/plugins/editor/src/editor/DlgAbout.cpp b/plugins/editor/src/editor/DlgAbout.cpp index 17157b12..75392fab 100644 --- a/plugins/editor/src/editor/DlgAbout.cpp +++ b/plugins/editor/src/editor/DlgAbout.cpp @@ -67,9 +67,10 @@ SAboutDialog::SAboutDialog(const CRect& bounds) lbl->setBackColor(CColor(0x00, 0x00, 0x00, 0x00)); lbl->setHoriAlign(align); lbl->setText(absl::StrCat( - u8"Maintainers: Paul Ferrand, Jean-Pierre Cimalando\n""" + u8"Maintainers: Paul Ferrand, Jean-Pierre Cimalando\n" u8"Contributors: Andrea Zanellato, Alexander Mitchell, Michael Willis,\n" - u8"Tobiasz \"unfa\" Karoń, Kinwie, Atsushi Eno, Dominique Würtz et al.")); + u8"Tobiasz \"unfa\" Karoń, Kinwie, Atsushi Eno, Dominique Würtz,\n" + u8"Even Brenden et al.")); return lbl; }; @@ -95,20 +96,35 @@ SAboutDialog::SAboutDialog(const CRect& bounds) btn->setGradientHighlighted(nullptr); return btn; }; - auto createButtonSfztools = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { - return createGlyphButton(u8"\ue000", bounds, tag, fontsize); + auto createButtonSfztools = [this, &createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { + STextButton* btn = createGlyphButton(u8"\ue000", bounds, tag, fontsize); + btn->OnHoverEnter = [this]() { lblHover_->setText("SFZTools Website"); }; + btn->OnHoverLeave = [this]() { lblHover_->setText(""); }; + return btn; }; - auto createButtonGithub = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { - return createGlyphButton(u8"\ue001", bounds, tag, fontsize); + auto createButtonGithub = [this, &createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { + STextButton* btn = createGlyphButton(u8"\ue001", bounds, tag, fontsize); + btn->OnHoverEnter = [this]() { lblHover_->setText("GitHub Repository"); }; + btn->OnHoverLeave = [this]() { lblHover_->setText(""); }; + return btn; }; - auto createButtonDiscord = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { - return createGlyphButton(u8"\ue002", bounds, tag, fontsize); + auto createButtonDiscord = [this, &createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { + STextButton* btn = createGlyphButton(u8"\ue002", bounds, tag, fontsize); + btn->OnHoverEnter = [this]() { lblHover_->setText("Discord Chat"); }; + btn->OnHoverLeave = [this]() { lblHover_->setText(""); }; + return btn; }; - auto createButtonOpencollective = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { - return createGlyphButton(u8"\ue003", bounds, tag, fontsize); + auto createButtonOpencollective = [this, &createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { + STextButton* btn = createGlyphButton(u8"\ue003", bounds, tag, fontsize); + btn->OnHoverEnter = [this]() { lblHover_->setText("Support Us"); }; + btn->OnHoverLeave = [this]() { lblHover_->setText(""); }; + return btn; }; - auto createButtonSfzformat = [&createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { - return createGlyphButton(u8"\ue004", bounds, tag, fontsize); + auto createButtonSfzformat = [this, &createGlyphButton](const CRect& bounds, int tag, const char*, CHoriTxtAlign, int fontsize) { + STextButton* btn = createGlyphButton(u8"\ue004", bounds, tag, fontsize); + btn->OnHoverEnter = [this]() { lblHover_->setText("SFZFormat Documentation"); }; + btn->OnHoverLeave = [this]() { lblHover_->setText(""); }; + return btn; }; #include "layout/about.hpp" diff --git a/plugins/editor/src/editor/GUIComponents.cpp b/plugins/editor/src/editor/GUIComponents.cpp index 294a5703..bd90083c 100644 --- a/plugins/editor/src/editor/GUIComponents.cpp +++ b/plugins/editor/src/editor/GUIComponents.cpp @@ -448,6 +448,8 @@ void STextButton::draw(CDrawContext* context) CMouseEventResult STextButton::onMouseEntered (CPoint& where, const CButtonState& buttons) { hovered_ = true; + if (OnHoverEnter) + OnHoverEnter(); invalid(); return CTextButton::onMouseEntered(where, buttons); } @@ -455,6 +457,8 @@ CMouseEventResult STextButton::onMouseEntered (CPoint& where, const CButtonState CMouseEventResult STextButton::onMouseExited (CPoint& where, const CButtonState& buttons) { hovered_ = false; + if (OnHoverLeave) + OnHoverLeave(); invalid(); return CTextButton::onMouseExited(where, buttons); } diff --git a/plugins/editor/src/editor/GUIComponents.h b/plugins/editor/src/editor/GUIComponents.h index a890b3ed..a69faee9 100644 --- a/plugins/editor/src/editor/GUIComponents.h +++ b/plugins/editor/src/editor/GUIComponents.h @@ -196,6 +196,10 @@ public: CMouseEventResult onMouseEntered (CPoint& where, const CButtonState& buttons) override; CMouseEventResult onMouseExited (CPoint& where, const CButtonState& buttons) override; void draw(CDrawContext* context) override; + + std::function OnHoverEnter; + std::function OnHoverLeave; + private: CColor hoverColor_; bool hovered_ { false }; diff --git a/plugins/editor/src/editor/layout/about.hpp b/plugins/editor/src/editor/layout/about.hpp index 80a487aa..594f175e 100644 --- a/plugins/editor/src/editor/layout/about.hpp +++ b/plugins/editor/src/editor/layout/about.hpp @@ -1,22 +1,22 @@ /* This file is generated by the layout maker tool. */ auto* const view__0 = createaboutView(CRect(0, 0, 800, 475), -1, "About sfizz", kCenterText, 14); aboutView = view__0; -auto* const view__1 = createLogo(CRect(200, 80, 600, 260), -1, "", kCenterText, 14); +auto* const view__1 = createHoverBox(CRect(200, 80, 600, 105), -1, "", kCenterText, 10); +lblHover_ = view__1; view__0->addView(view__1); -auto* const view__2 = createButtonSfztools(CRect(235, 45, 285, 95), kTagButtonSfztools, "", kCenterText, 30); +auto* const view__2 = createButtonSfztools(CRect(235, 45, 270, 80), kTagButtonSfztools, "", kCenterText, 30); view__0->addView(view__2); -auto* const view__3 = createButtonGithub(CRect(305, 45, 355, 95), kTagButtonGithub, "", kCenterText, 30); +auto* const view__3 = createButtonGithub(CRect(305, 45, 340, 80), kTagButtonGithub, "", kCenterText, 30); view__0->addView(view__3); -auto* const view__4 = createButtonDiscord(CRect(375, 45, 425, 95), kTagButtonDiscord, "", kCenterText, 30); +auto* const view__4 = createButtonDiscord(CRect(375, 45, 410, 80), kTagButtonDiscord, "", kCenterText, 30); view__0->addView(view__4); -auto* const view__5 = createButtonOpencollective(CRect(445, 45, 495, 95), kTagButtonOpencollective, "", kCenterText, 30); +auto* const view__5 = createButtonOpencollective(CRect(445, 45, 480, 80), kTagButtonOpencollective, "", kCenterText, 30); view__0->addView(view__5); -auto* const view__6 = createButtonSfzformat(CRect(515, 45, 565, 95), kTagButtonSfzformat, "", kCenterText, 30); +auto* const view__6 = createButtonSfzformat(CRect(515, 45, 550, 80), kTagButtonSfzformat, "", kCenterText, 30); view__0->addView(view__6); -auto* const view__7 = createInfoBox(CRect(260, 260, 540, 340), -1, "", kCenterText, 14); +auto* const view__7 = createLogo(CRect(200, 90, 600, 270), -1, "", kCenterText, 14); view__0->addView(view__7); -auto* const view__8 = createDescriptionBox(CRect(200, 350, 600, 450), -1, "", kCenterText, 14); +auto* const view__8 = createInfoBox(CRect(260, 270, 540, 350), -1, "", kCenterText, 14); view__0->addView(view__8); -auto* const view__9 = createHoverBox(CRect(320, 10, 480, 35), -1, "", kCenterText, 14); -lblHover_ = view__9; +auto* const view__9 = createDescriptionBox(CRect(200, 350, 600, 450), -1, "", kCenterText, 14); view__0->addView(view__9);