Source code of the Widget gallery example

Browse below the source code for Wt's Widget gallery example.

  • widgetgallery
    • class BaseTemplate
      • BaseTemplate.C
        • BaseTemplate.h
        • class FormWidgets
          • class GraphicsWidgets
            • class Layout
              • class Media
                • class Navigation
                  • class Notification
                    • class Theme
                      • class Topic
                        • class TopicTemplate
                          • class TreesTables
                            • class WidgetGallery
                              • DeferredWidget.h
                                • Sample.h
                                  • main.C
                                    • style
                                      • examples
                                        • docroot
                                          • approot
                                          /*
                                           * Copyright (C) 2022 Emweb bv, Herent, Belgium
                                           *
                                           * See the LICENSE file for terms of use.
                                           */
                                          
                                          #include "BaseTemplate.h"
                                          
                                          #include <Wt/Utils.h>
                                          #include <Wt/WApplication.h>
                                          #include <Wt/WTheme.h>
                                          
                                          #include <boost/algorithm/string.hpp>
                                          
                                          BaseTemplate::BaseTemplate(const char *trKey)
                                            : Wt::WTemplate(tr(trKey))
                                          {
                                            setInternalPathEncoding(true);
                                            addFunction("tr", &Functions::tr);
                                            addFunction("block", &Functions::block);
                                          
                                          #ifndef WT_TARGET_JAVA
                                            setCondition("if:cpp", true);
                                            setCondition("if:java", false);
                                          #else
                                            setCondition("if:cpp", false);
                                            setCondition("if:java", true);
                                          #endif
                                          }
                                          
                                          void BaseTemplate::resolveString(const std::string& varName,
                                                                           const std::vector<Wt::WString>& args,
                                                                           std::ostream& result)
                                          {
                                            if (varName == "img") {
                                              std::string src;
                                              std::string alt;
                                              std::string style;
                                          
                                              for (const auto& arg : args) {
                                                const auto argS = arg.toUTF8();
                                                if (boost::starts_with(argS, "src=")) {
                                                  src = argS.substr(4);
                                                } else if (boost::starts_with(argS, "alt=")) {
                                                  alt = argS.substr(4);
                                                } else if (boost::starts_with(argS, "style=")) {
                                                  style = argS.substr(6);
                                                }
                                              }
                                          
                                              const Wt::WApplication* app = Wt::WApplication::instance();
                                              result << "<img src=\"" << Wt::Utils::htmlAttributeValue(app->resolveRelativeUrl(src)) << "\" ";
                                              if (!alt.empty()) {
                                                result << "alt=\"" << Wt::Utils::htmlAttributeValue(alt) << "\" ";
                                              }
                                              if (!style.empty()) {
                                                result << "style=\"" << Wt::Utils::htmlAttributeValue(style) << "\" ";
                                              }
                                              result << "/>";
                                            } else {
                                              WTemplate::resolveString(varName, args, result);
                                            }
                                          }