Пример #1
0
void MainUI::createUI(Wt::WContainerWidget *parent) {

  Wt::WMenu *menu =  new Wt::WMenu();

  pugi::xml_document doc;

  /* input file of menudata*/
  const std::string MENUDATA_XML_FILE = Wt::WApplication::instance()->docRoot() + "/menu-xml/menudata.xml";
  pugi::xml_parse_result tos = doc.load_file(MENUDATA_XML_FILE.c_str());

  std::cout << "Load result: " << tos.description() << std::endl;

  /* iteration over menudata but since only one is there so */
  pugi::xml_node menudata_node = doc.child("menudata");
  /* iteration over menubar but since only one is there so */
  pugi::xml_node menubar_node = menudata_node.child("menubar");

  /* iteration over fisrt occurane of menu */
  pugi::xml_node menu_node = menubar_node.child("menu");
  while( menu_node ) {


    /* first menu creation */
    Wt::WPopupMenu *firstLevel = new Wt::WPopupMenu();
    menu->addMenu(menu_node.child_value("label"), firstLevel);
    /* iteration over first occurance of items */
    pugi::xml_node menu_items_node = menu_node.child("items");
    while( menu_items_node ) {
       /* iteration over second occurane of menu */
       pugi::xml_node menu_items_menu_node = menu_items_node.child("menu");
       while( menu_items_menu_node ) {
          /* submenu creation */
          Wt::WPopupMenu *nextLevel = new Wt::WPopupMenu();
          firstLevel->addMenu(menu_items_menu_node.child_value("label"), nextLevel);
          /* iteration over second occurance of items */
          pugi::xml_node menu_items_menu_items_node = menu_items_menu_node.child("items");
          while ( menu_items_menu_items_node ) {
             /* iteration over internal occurance of menuitem */
             pugi::xml_node menu_items_menu_items_menuitem_node = menu_items_menu_items_node.child("menuitem");
             while( menu_items_menu_items_menuitem_node ) {
                nextLevel->addItem(menu_items_menu_items_menuitem_node.child_value("label"));
                menu_items_menu_items_menuitem_node = menu_items_menu_items_menuitem_node.next_sibling("menuitem");
             }
             menu_items_menu_items_node = menu_items_menu_items_node.next_sibling("items");
          }
          menu_items_menu_node = menu_items_menu_node.next_sibling("menu");
       }

       /* iteration over outer occurance of menuitem */
       pugi::xml_node menu_items_menuitem_node = menu_items_node.child("menuitem");
       while ( menu_items_menuitem_node ) {
          firstLevel->addItem(menu_items_menuitem_node.child_value("label"));
          menu_items_menuitem_node = menu_items_menuitem_node.next_sibling("menuitem");
       }

       menu_items_node = menu_items_node.next_sibling("items");

       menu_node = menu_node.next_sibling("menu");
    }
  }

  Wt::WNavigationBar *naivgationbar = new Wt::WNavigationBar();
  naivgationbar->setResponsive(true);
  naivgationbar->addMenu(menu);
  addWidget(naivgationbar);

}
Пример #2
0
Wt::WWidget* Tester::Title()
{
    Wt::WContainerWidget* container = new Wt::WContainerWidget();

    // Create a navigation bar with a link to a web page.
    Wt::WNavigationBar* navigation = new Wt::WNavigationBar(container);
    navigation->setTitle("LPeg Grammar Tester", "/");
    navigation->setResponsive(true);

    // Setup a Left-aligned menu.
    Wt::WMenu* leftMenu = new Wt::WMenu();
    navigation->addMenu(leftMenu);

    Wt::WPopupMenu* popup = new Wt::WPopupMenu();
    popup->setAutoHide(true, 250);
    popup->addItem("LPeg Documentation")->setLink(Wt::WLink("http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html"));
    Wt::WMenuItem* item = new Wt::WMenuItem("Documentation");
    item->setMenu(popup);
    leftMenu->addItem(item);

    popup = new Wt::WPopupMenu();
    popup->setAutoHide(true, 250);

    Wt::WMenuItem* pi = popup->addItem("date_time");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/date_time");
        HandleInternalPath(internalPath());
    }));

    pi = popup->addItem("common_log_format");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/clf");
        HandleInternalPath(internalPath());
    }));

    pi = popup->addItem("syslog");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/syslog");
        HandleInternalPath(internalPath());
    }));

    pi = popup->addItem("cbufd");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/cbufd");
        HandleInternalPath(internalPath());
    }));

    pi = popup->addItem("mysql");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/mysql");
        HandleInternalPath(internalPath());
    }));

    item = new Wt::WMenuItem("Modules");
    item->setMenu(popup);
    leftMenu->addItem(item);

    popup = new Wt::WPopupMenu();
    popup->setAutoHide(true, 250);

    pi = popup->addItem("Name-value lists");
    pi->setPathComponent("nvlist");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/nvlist");
        HandleInternalPath(internalPath());
    }));
    pi = popup->addItem("Split");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/split");
        HandleInternalPath(internalPath());
    }));
    pi = popup->addItem("CSV");
    pi->triggered().connect(std::bind([=]() {
        setInternalPath("/share/csv");
        HandleInternalPath(internalPath());
    }));
    item = new Wt::WMenuItem("Examples");
    item->setMenu(popup);
    leftMenu->addItem(item);

    return container;
}
Пример #3
0
void studentPasswords::create() {
  Wt::WPanel * panel = new Wt::WPanel(this);
  
  panel->setStyleClass("panel panel-primary");
  panel->setTitle("<h3>Wachtwoorden Administratie</h3>");
  panel->setMinimumSize(800, 800);
  panel->setMaximumSize(800, Wt::WLength::Auto);
  panel->setMargin("0 auto");
  
  Wt::WContainerWidget * content = new Wt::WContainerWidget();
  panel->setCentralWidget(content);
  content->setPadding("1%");
  
  buttons = new Wt::WContainerWidget(content);
  Wt::WHBoxLayout * buttonLayout = new Wt::WHBoxLayout();
  buttons->setLayout(buttonLayout);
  
  Wt::WPopupMenu * popup = new Wt::WPopupMenu();
  Wt::WPushButton * button = new Wt::WPushButton();
  button->setMenu(popup);
  button->setText("Selecteer een klas");
  buttonLayout->addWidget(button);
  
  Wt::WPushButton * button2 = new Wt::WPushButton();
  button2->setText("Selectie Aanpassen");
  button2->setStyleClass("btn btn-success");
  buttonLayout->addWidget(button2);
  button2->clicked().connect(this, &studentPasswords::changePasswords);
  
  Wt::WContainerWidget * tableContent = new Wt::WContainerWidget(content);
  table = new Wt::WTable(tableContent);
  
  // add classes
  Wt::WPopupMenu * subMenu[7];
  
  for(int i = 0; i < 7; i++) {
    subMenu[i] = new Wt::WPopupMenu();
    if(i == 0) {
      popup->addMenu("1ste jaar", subMenu[i]);
    } else {
      string s = string(i+1) + "de jaar";
      popup->addMenu(s.wt(), subMenu[i]);
    }
  }
  
  CLASSES & classes = server->getClasses();
  
  for(int i = 0; i < classes.elms(); i++) {
    string name = classes[i].cn().get();
    if(name.empty()) continue;
    
    int year = -1;
    switch(name[0]) {
      case '1': year = 0; break;
      case '2': year = 1; break;
      case '3': year = 2; break;
      case '4': year = 3; break;
      case '5': year = 4; break;
      case '6': year = 5; break;
      case '7': year = 6; break;
    }
    if(year < 0) continue;
    
    subMenu[year]->addItem(name.wt())->triggered().connect(std::bind([=] () {
      showClass(name);
    }));
  }
  
  progress = new Wt::WProgressBar(content);
  progress->hide();
  
  anchor = new Wt::WAnchor(Wt::WLink(&pfile), "Download passwords", content);
  anchor->setTarget(Wt::TargetNewWindow);
  anchor->clicked().connect(this, &studentPasswords::reset);
  anchor->hide();
}
Пример #4
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;
}