Пример #1
0
Wt::WWidget *FormWidgets::pushButton()
{
  Wt::WTemplate *result = new TopicTemplate("forms-pushButton");
  result->bindWidget("PushButton", PushButton());
  result->bindWidget("PushButtonOnce", PushButtonOnce());
  result->bindWidget("PushButtonLink", PushButtonLink());
  result->bindWidget("PushButtonDropdownAppended",
                     PushButtonDropdownAppended());
  result->bindWidget("PushButtonColor", PushButtonColor());
  result->bindWidget("PushButtonSize", PushButtonSize());
  result->bindWidget("PushButtonPrimary", PushButtonPrimary());
  result->bindWidget("PushButtonAction", PushButtonAction());

  // Show the XML-templates as text
  result->bindString("appendedDropdownButton-template",
                     reindent(tr("appendedDropdownButton-template")),
                     Wt::PlainText);
  result->bindString("pushButtonColor-template",
                     reindent(tr("pushButtonColor-template")), Wt::PlainText);
  result->bindString("pushButtonSize-template",
                     reindent(tr("pushButtonSize-template")), Wt::PlainText);
  result->bindString("pushButtonAction-template",
                     reindent(tr("pushButtonAction-template")), Wt::PlainText);
  return result;
}
Пример #2
0
Wt::WWidget *FormWidgets::example()
{
  Wt::WTemplate *result = new TopicTemplate("forms-integration-example");
  result->bindWidget("FormModel", FormModel());

  // Show the XML-templates as text
  result->bindString("form-field",
                     reindent(tr("form-field")), Wt::PlainText);
  result->bindString("userForm-template",
                     reindent(tr("userForm-template")), Wt::PlainText);
  return result;
}
Пример #3
0
Wt::WWidget *FormWidgets::introduction()
{
  Wt::WTemplate *result = new TopicTemplate("forms-introduction");
  result->bindWidget("SimpleForm", SimpleForm());
  result->bindWidget("FormModel", FormModel());

  // Show the XML-templates as text
  result->bindString("simpleForm-template",
                     reindent(tr("simpleForm-template")), Wt::PlainText);
  result->bindString("form-field",
                     reindent(tr("form-field")), Wt::PlainText);
  result->bindString("userForm-template",
                     reindent(tr("userForm-template")), Wt::PlainText);

  return result;
}
Пример #4
0
Wt::WWidget *FormWidgets::textEditors()
{
  Wt::WTemplate *result = new TopicTemplate("forms-textEditors");
  result->bindWidget("LineEdit", LineEdit());
  result->bindWidget("LineEditEvent", LineEditEvent());
  result->bindWidget("TextArea", TextArea());
  result->bindWidget("TextEdit", TextEdit());
  result->bindWidget("SpinBox", SpinBox());
  result->bindWidget("TextSide", TextSide());

  // Show the XML-template as text
  result->bindString("lineEdit-template", reindent(tr("lineEdit-template")),
                     Wt::PlainText);
  result->bindString("editSide-template", reindent(tr("editSide-template")),
                     Wt::PlainText);
  return result;
}
Пример #5
0
Wt::WWidget *TreesTables::treeViews()
{
  Wt::WTemplate *result = new TopicTemplate("treestables-TreeViews");
#ifndef _WIN32
  result->bindWidget("TreeView", TreeView());
#else
  result->bindString("TreeView", "Example not available on windows");
#endif
  return result;  
}
Пример #6
0
Wt::WWidget *FormWidgets::validation()
{
  Wt::WTemplate *result = new TopicTemplate("forms-validation");
  result->bindWidget("Validation", Validation());
  result->bindWidget("ValidationDate", ValidationDate());
  result->bindWidget("ValidationModel", ValidationModel());

  // Show the XML-template as text
  result->bindString("validation-template", reindent(tr("validation-template")),
                     Wt::PlainText);
  return result;  
}
Пример #7
0
Wt::WWidget *GraphicsWidgets::googleMap()
{
  Wt::WTemplate *result = new TopicTemplate("graphics-GoogleMap");

  result->bindWidget("GoogleMap", GoogleMap());

  // Show the XML-template as text
  result->bindString("GoogleMap-controls",
                     reindent(tr("graphics-GoogleMap-controls")),
		     Wt::PlainText);
  return result;
}
Пример #8
0
void
ShareEdit::refresh(void)
{
	if (!wApp->internalPathMatches("/share-edit"))
		return;

	clear();

	std::string editUUID = wApp->internalPathNextPart("/share-edit/");

	Wt::Dbo::Transaction transaction(FsApp->getDboSession());

	Database::Share::pointer share = Database::Share::getByEditUUID(FsApp->getDboSession(), editUUID);
	if (!share || !boost::filesystem::exists(share->getPath()))
	{
		FS_LOG(UI, ERROR) << "Edit UUID '" << editUUID << "' not found";
		displayNotFound();
		return;
	}

	FS_LOG(UI, INFO) << "[" << share->getDownloadUUID() << "] Editing share from " << wApp->environment().clientAddress();

	Wt::WTemplate *t = addNew<Wt::WTemplate>(tr("template-share-edit"));
	t->addFunction("tr", &Wt::WTemplate::Functions::tr);

	if (!share->getDesc().empty())
	{
		t->setCondition("if-desc", true);
		t->bindString("file-desc", Wt::WString::fromUTF8(share->getDesc()));
	}
	t->bindString("file-name", Wt::WString::fromUTF8(share->getFileName()));
	t->bindString("file-size", sizeToString(share->getFileSize()));
	t->bindString("expiry-date-time", share->getExpiryTime().toString() + " UTC");

	auto hits = std::to_string(share->getHits());
	if (share->getMaxHits() > 0)
		hits += " / " + std::to_string(share->getMaxHits());
	t->bindString("hits", hits);

	t->bindWidget("download-link", createShareDownloadAnchor(share));

	Wt::WPushButton* deleteBtn = t->bindNew<Wt::WPushButton>("delete-btn", tr("msg-delete"));

	deleteBtn->clicked().connect([=] ()
	{
		auto messageBox = deleteBtn->addChild(std::make_unique<Wt::WMessageBox>(tr("msg-share-delete"),
			tr("msg-confirm-action"),
			 Wt::Icon::Question,
			 Wt::StandardButton::Yes | Wt::StandardButton::No));

		messageBox->setModal(true);

		messageBox->buttonClicked().connect([=] (Wt::StandardButton btn)
		{
			if (btn == Wt::StandardButton::Yes)
			{
				Wt::Dbo::Transaction transaction(FsApp->getDboSession());

				Database::Share::pointer share = Database::Share::getByEditUUID(FsApp->getDboSession(), editUUID);

				if (share)
				{
					FS_LOG(UI, INFO) << "[" << share->getDownloadUUID() << "] Deleting share from " << wApp->environment().clientAddress();
					share.modify()->destroy();
					share.remove();
				}

				displayRemoved();
			}
			deleteBtn->removeChild(messageBox);
		});

		messageBox->show();
	});

}
Пример #9
0
Wt::WContainerWidget *nav_bar()
{
    // Main Container holding navbar and content
    Wt::WContainerWidget *container = new Wt::WContainerWidget();
    
    // Content stack shows content, one at a time
    Wt::WStackedWidget *contentsStack = new Wt::WStackedWidget(container);
    contentsStack->addStyleClass("container");
    
    // Container holding content for layout purposes
    Wt::WContainerWidget *container2 = new Wt::WContainerWidget();
    
    // Create a NAVBAR
    Wt::WNavigationBar *navigation = new Wt::WNavigationBar(container);
    navigation->setTitle("Halo Viewer",
                         "http://haloviewer.bluewizard.ca/");
    navigation->setResponsive(true);
    navigation->addStyleClass("navbar-fixed-top");
    navigation->addStyleClass("navbar-inner");
    
    // Setup a Left-aligned menu.
    Wt::WMenu *leftMenu = new Wt::WMenu(contentsStack, container2);
    navigation->addMenu(leftMenu, Wt::AlignCenter);
    
    Wt::WText *searchResult = new Wt::WText("Buy or Sell... Bye!");
    
    // Create Spartan profile
    SpartanProfile *mySpartan = new SpartanProfile();
    
    // Create Profile view container
    Wt::WContainerWidget *profile = new Wt::WContainerWidget();
    profile->addStyleClass("summary-container");
    
    
    // User summary template (emblem, name, rank etc.)
    Wt::WTemplate *t = new Wt::WTemplate("<div class=\"summary-container\">\n<img src=\"${emblem-url}\" class=\"emblem-image\" />\n<div class=\"spartan-name\">${spartan-name}</div>\n<div class=\"spartan-rank\">SR ${spartan-rank}</div>\n</div>");
    std::string emblem_url("https://image.halocdn.com/h5/emblems/311_0_31_48?width=256&hash=%2blRdfGUDXqlSen9Z1eRb8OoX%2fqYz9zaLqu3TNgYxffs%3d");
    boost::replace_all(emblem_url, "&", "&amp;");
    t->bindString("emblem-url", emblem_url);
    t->bindWidget("spartan-name", new Wt::WText("CLWakaLaka"));
    t->bindWidget("spartan-rank", new Wt::WText("SR 74"));
    profile->addWidget(t);
    
    // Ranks Container shows playlist ranks for a given SpartanProfile
    Wt::WContainerWidget *summary_layout = new Wt::WContainerWidget();
    PlaylistRanksContainer *ranks = new PlaylistRanksContainer(mySpartan);
    
    Wt::WContainerWidget *panels = new Wt::WContainerWidget();
    panels->setWidth("60%");
    Wt::WPanel *panel = new Wt::WPanel();
    panel->setTitle("Collapsible panel");
    panel->addStyleClass("centered-example");
    panel->setCollapsible(true);
    Wt::WAnimation animation(Wt::WAnimation::SlideInFromTop,
                             Wt::WAnimation::EaseOut,
                             100);
    panel->setAnimation(animation);
    Wt::WText *temp_text = new Wt::WText(mySpartan->printRecentMatches());
    panel->setCentralWidget(temp_text);
    panels->addWidget(panel);
    
    RecentMatchesContainer *recent_matches_panel = new RecentMatchesContainer(mySpartan);
    
    ranks->setFloatSide(Wt::Left);
    recent_matches_panel->setFloatSide(Wt::Left);
    summary_layout->addWidget(ranks);
    summary_layout->addWidget(recent_matches_panel);
    
    
    // Create TabWidget for profile view
    Wt::WTabWidget *tabW = new Wt::WTabWidget(profile);
    Wt::WTextArea *text = new Wt::WTextArea(mySpartan->getRanks());
    tabW->addTab(summary_layout,
                 "Summary", Wt::WTabWidget::PreLoading);
    tabW->addTab(text,
                 "Weapons", Wt::WTabWidget::PreLoading);
    tabW->addTab(new Wt::WTextArea("You could change any other style attribute of the"
                                   " tab widget by modifying the style class."
                                   " The style class 'trhead' is applied to this tab."),
                 "Medals", Wt::WTabWidget::PreLoading)->setStyleClass("trhead");
    tabW->setStyleClass("tabwidget");
    
    // Add containers to Left Menu
    leftMenu->addItem("Profile", profile);
    leftMenu->addItem("Matches", new Wt::WText("Layout contents"));
    leftMenu->addItem("Sales", searchResult);
    
    // Setup a Right-aligned menu.
    Wt::WMenu *rightMenu = new Wt::WMenu();
    navigation->addMenu(rightMenu, Wt::AlignRight);
    
    // Create a popup submenu for the Help menu.
    Wt::WPopupMenu *popup = new Wt::WPopupMenu();
    popup->addItem("Contents");
    popup->addItem("Index");
    popup->addSeparator();
    popup->addItem("About");
    
    panel->expanded().connect(std::bind([=] () {
        temp_text->setText(mySpartan->printRecentMatches());
    }));
    
    popup->itemSelected().connect(std::bind([=] (Wt::WMenuItem *item) {
        Wt::WMessageBox *messageBox = new Wt::WMessageBox
        ("Help",
         Wt::WString::fromUTF8("<p>Showing Help: {1}</p>").arg(item->text()),
         Wt::Information, Wt::Ok);
        
        messageBox->buttonClicked().connect(std::bind([=] () {
            delete messageBox;
        }));
        
        messageBox->show();
    }, std::placeholders::_1));
    
    Wt::WMenuItem *item = new Wt::WMenuItem("Help");
    item->setMenu(popup);
    rightMenu->addItem(item);
    
    // Add a Search control.
    Wt::WLineEdit *edit = new Wt::WLineEdit();
    edit->setEmptyText("Enter a search item");
    
    edit->enterPressed().connect(std::bind([=] () {
        leftMenu->select(0); // is the index of the "Sales"
        mySpartan->updateProfile(edit->text().toUTF8());
        mySpartan->printRanks();
        std::cout << mySpartan->getGamertag() << std::endl;
        std::cout << mySpartan->getEmblem() << std::endl;
        if (boost::algorithm::contains(mySpartan->getEmblem(), "https:")) {
            // Update summary template
            std::string tmp_url = mySpartan->getEmblem();
            boost::replace_all(tmp_url, "&", "&amp;");
            t->bindString("emblem-url", tmp_url);
            t->bindString("spartan-name", mySpartan->getGamertag());
            t->bindString("spartan-rank", std::to_string(mySpartan->getSpartanRank()));
        
            // Update summary tab
            //tabW->widget(0)->setText(new Wt::WString(mySpartan->getRanks()));
            text->setText(mySpartan->getRanks());
        
            ranks->update();
            recent_matches_panel->update();
        }
    }));
    
    navigation->addSearch(edit, Wt::AlignRight);
    
    container->addWidget(contentsStack);
    
    return container;
}