예제 #1
0
WidgetGallery::WidgetGallery()
  : WContainerWidget()
{
  setOverflow(Wt::Overflow::Hidden);

  auto navigation = Wt::cpp14::make_unique<Wt::WNavigationBar>();
  navigation_ = navigation.get();

  navigation_->addStyleClass("main-nav");
  navigation_->setTitle("Wt Widget Gallery",
			"https://www.webtoolkit.eu/widgets");
  navigation_->setResponsive(true);

  auto contentsStack
      = Wt::cpp14::make_unique<Wt::WStackedWidget>();
  contentsStack_ = contentsStack.get();

  Wt::WAnimation animation(Wt::AnimationEffect::Fade,
			   Wt::TimingFunction::Linear,
			   200);
  contentsStack_->setTransitionAnimation(animation, true);

  /*
   * Setup the top-level menu
   */
  auto menu = Wt::cpp14::make_unique<Wt::WMenu>(contentsStack_);
  menu->setInternalPathEnabled();
  menu->setInternalBasePath("/");

  addToMenu(menu.get(), "Layout", Wt::cpp14::make_unique<Layout>());
  addToMenu(menu.get(), "Forms", Wt::cpp14::make_unique<FormWidgets>());
  addToMenu(menu.get(), "Navigation", Wt::cpp14::make_unique<Navigation>());
  addToMenu(menu.get(), "Trees & Tables", Wt::cpp14::make_unique<TreesTables>())
    ->setPathComponent("trees-tables");
  addToMenu(menu.get(), "Graphics & Charts", Wt::cpp14::make_unique<GraphicsWidgets>())
    ->setPathComponent("graphics-charts");
  //addToMenu(menu.get(), "Events", Wt::cpp14::make_unique<EventsDemo>());
  addToMenu(menu.get(), "Media", Wt::cpp14::make_unique<Media>());
  navigation_->addMenu(std::move(menu));

  /*
   * Add it all inside a layout
   */
  auto layout = this->setLayout(Wt::cpp14::make_unique<Wt::WVBoxLayout>());
  layout->addWidget(std::move(navigation), 0);
  layout->addWidget(std::move(contentsStack), 1);
  layout->setContentsMargins(0, 0, 0, 0);
}
예제 #2
0
Wt::WMenuItem *WidgetGallery::addToMenu(Wt::WMenu *menu,
					const Wt::WString& name,
					std::unique_ptr<TopicWidget> topic)
{
  auto topic_ = topic.get();
  auto result = Wt::cpp14::make_unique<Wt::WContainerWidget>();

  auto pane = Wt::cpp14::make_unique<Wt::WContainerWidget>();
  auto pane_ = pane.get();

  auto vLayout = result->setLayout(Wt::cpp14::make_unique<Wt::WVBoxLayout>());
  vLayout->setContentsMargins(0, 0, 0, 0);
  vLayout->addWidget(std::move(topic));
  vLayout->addWidget(std::move(pane), 1);

  auto hLayout = pane_->setLayout(Wt::cpp14::make_unique<Wt::WHBoxLayout>());

  auto item = Wt::cpp14::make_unique<Wt::WMenuItem>(name, std::move(result));
  auto item_ = menu->addItem(std::move(item));

  auto subStack = Wt::cpp14::make_unique<Wt::WStackedWidget>();
  subStack->addStyleClass("contents");

  /*
  WAnimation animation(AnimationEffect::Fade,
                           TimingFunction::Linear,
			   100);
  subStack->setTransitionAnimation(animation, true);
  */

  auto subMenu = Wt::cpp14::make_unique<Wt::WMenu>(subStack.get());
  auto subMenu_ = subMenu.get();
  subMenu_->addStyleClass("nav-pills nav-stacked submenu");
  subMenu_->setWidth(200);

  hLayout->addWidget(std::move(subMenu));
  hLayout->addWidget(std::move(subStack),1);

  subMenu_->setInternalPathEnabled();
  subMenu_->setInternalBasePath("/" + item_->pathComponent());

  topic_->populateSubMenu(subMenu_);

  return item_;
}
예제 #3
0
파일: WMenu.C 프로젝트: LifeGo/wt
void WMenu::setInternalBasePath(const std::string& basePath)
{
  setInternalPathEnabled(basePath);
}