ribi::QtRichelBilderbeekGalleryDialog::QtRichelBilderbeekGalleryDialog(QWidget *parent) : QtHideAndShowDialog(parent), ui(new Ui::QtRichelBilderbeekGalleryDialog), m_programs(Program::GetAllPrograms()) { ui->setupUi(this); QtResources r; const int n = static_cast<int>(m_programs.size()); ui->table->setColumnCount(5); ui->table->setRowCount(n + 1); { QtGalleryItem * const item = new QtGalleryItem(QIcon(r.GetCl().c_str()),QString()); item->setToolTip("Command line"); ui->table->setItem(0,1,item); } { QtGalleryItem * const item = new QtGalleryItem(QIcon(r.GetWindows().c_str()),QString()); item->setToolTip("Windows-only desktop "); ui->table->setItem(0,2,item); } { QtGalleryItem * const item = new QtGalleryItem(QIcon(r.GetDesktop().c_str()),QString()); item->setToolTip("Desktop"); ui->table->setItem(0,3,item); } { QtGalleryItem * const item = new QtGalleryItem(QIcon(r.GetWeb().c_str()),QString()); item->setToolTip("Web application"); ui->table->setItem(0,4,item); } for (int row=0; row!=n; ++row) { { QtGalleryItem * const item = new QtGalleryItem(m_programs[row]->GetName().c_str()); ui->table->setItem(row+1,0,item); } for (int col=0; col!=4; ++col) { ProgramStatus p = ProgramStatus::unk; switch (col) { case 0: p = m_programs[row]->GetStatusConsole(); break; case 1: p = m_programs[row]->GetStatusDesktopWindowsOnly(); break; case 2: p = m_programs[row]->GetStatusDesktop(); break; case 3: p = m_programs[row]->GetStatusWebApplication(); break; } std::string s; switch (p) { case ProgramStatus::yes: s = r.GetGreen(); break; case ProgramStatus::no: s = r.GetRed(); break; case ProgramStatus::nvr: s = r.GetBlack(); break; case ProgramStatus::n_a: s = r.GetBlack(); break; case ProgramStatus::wip: s = r.GetYellow(); break; case ProgramStatus::tbd: s = r.GetOrange(); break; case ProgramStatus::unk: s = r.GetBlack(); break; } { QtGalleryItem * const item = new QtGalleryItem(QIcon(s.c_str()),QString()); item->setToolTip(ProgramStatusToStr(p).c_str()); ui->table->setItem(row+1,col+1,item); } } } //Set all row heights { const int n_rows = ui->table->rowCount(); const int row_height = 18; for (int i=0; i!=n_rows; ++i) { ui->table->setRowHeight(i,row_height); } } //Set all column widths { const int n_cols = ui->table->columnCount(); const int col_width = 18; const int first_col_width = 200; ui->table->setColumnWidth(0,first_col_width); for (int i=1; i!=n_cols; ++i) { ui->table->setColumnWidth(i,col_width); } ui->table->setMaximumWidth(first_col_width + (n_cols * col_width)); ui->table->setMinimumWidth(first_col_width + (n_cols * col_width)); } { //Put the maximized dialog in the screen center const QRect screen = QApplication::desktop()->screenGeometry(); const int width = screen.width() - 64; const int height = screen.height() - 128; this->setGeometry(0,0,width,height); this->move( screen.center() - this->rect().center() ); this->setMaximumHeight(height); this->setMaximumWidth(width); } }
ribi::RichelBilderbeek::WtGalleryDialog::WtGalleryDialog() : m_ui{} { this->setContentAlignment(Wt::AlignCenter); new Wt::WBreak(this); new Wt::WLabel("Overview of Richel Bilderbeek's work",this); new Wt::WBreak(this); new Wt::WBreak(this); this->addWidget(m_ui.m_table); //table->setHeaderCount(1,Wt::Horizontal); //table->setHeaderCount(1,Wt::Vertical); m_ui.m_table->setMaximumSize(400,200); QtResources r; m_ui.m_table->elementAt(0,0)->addWidget(new Wt::WLabel("Program")); m_ui.m_table->elementAt(0,1)->addWidget(new Wt::WImage(r.GetCl())); m_ui.m_table->elementAt(0,2)->addWidget(new Wt::WImage(r.GetWindows())); m_ui.m_table->elementAt(0,3)->addWidget(new Wt::WImage(r.GetDesktop())); m_ui.m_table->elementAt(0,4)->addWidget(new Wt::WImage(r.GetWeb())); //ui.m_table->setPositionScheme(Wt::PositionScheme(Wt::CenterX | Wt::CenterY)); const std::vector<boost::shared_ptr<Program> > v = Program::GetAllPrograms(); const std::size_t n = v.size(); for (std::size_t i=0; i!=n; ++i) { //Add a label { Wt::WLabel * const label = new Wt::WLabel(v[i]->GetName().c_str()); //label->setMaximumSize(Wt::WLength::Auto,6); //label->setHeight(6); m_ui.m_table->elementAt(i+1,0)->addWidget(label); //ui.m_table->elementAt(i+1,0)->setMaximumSize(Wt::WLength::Auto,6); } for (int j=0; j!=4; ++j) { ProgramStatus p = ProgramStatus::unk; switch (j) { case 0: p = v[i]->GetStatusConsole(); break; case 1: p = v[i]->GetStatusDesktopWindowsOnly(); break; case 2: p = v[i]->GetStatusDesktop(); break; case 3: p = v[i]->GetStatusWebApplication(); break; } std::string s; switch (p) { case ProgramStatus::yes: s = r.GetGreen(); break; case ProgramStatus::no: s = r.GetRed(); break; case ProgramStatus::nvr: s = r.GetBlack(); break; case ProgramStatus::n_a: s = r.GetBlack(); break; case ProgramStatus::wip: s = r.GetYellow(); break; case ProgramStatus::tbd: s = r.GetOrange(); break; case ProgramStatus::unk: s = r.GetBlack(); break; } m_ui.m_table->elementAt(i+1,j+1)->addWidget(new Wt::WImage(s.c_str())); } } { const int n_rows = m_ui.m_table->rowCount(); for (int i=0; i!=n_rows; ++i) { //ui.m_table->rowAt(i)->elementAt(0)->set } } m_ui.m_table->clicked().connect(this,&ribi::RichelBilderbeek::WtGalleryDialog::OnClick); }
const std::vector<std::string> ribi::GalleryMenuDialog::CreateHtmlStatus() const noexcept { std::vector<std::string> v; //Add header { v = c2h::Header::ToHtml(c2h::HeaderType::cpp,"CppRichelBilderbeekStatus.htm"); } QtResources r; v.push_back("<table border=\"1\">"); v.push_back( "<tr>" "<th>Name</th>" "<th><img src=\"" + r.GetCl() +"\" alt=\"Console application\"/></th>" "<th><img src=\"" + r.GetWindows() +"\" alt=\"Desktop (Windows only) application\"/></th>" "<th><img src=\"" + r.GetDesktop() +"\" alt=\"Desktop application\"/></th>" "<th><img src=\"" + r.GetWeb() +"\" alt=\"Web application\"/></th>" "</tr>"); const std::vector<boost::shared_ptr<Program> > ps = Program::GetAllPrograms(); std::for_each(ps.begin(),ps.end(), [&v,r](const boost::shared_ptr<Program>& p) { std::string s = "<tr>" "<td><a href=\""+p->GetUrl()+"\">" + p->GetName() + "</a></td>"; for (int j=0; j!=4; ++j) { ProgramStatus status = ProgramStatus::unk; switch (j) { case 0: status = p->GetStatusConsole(); break; case 1: status = p->GetStatusDesktopWindowsOnly(); break; case 2: status = p->GetStatusDesktop(); break; case 3: status = p->GetStatusWebApplication(); break; } std::string filename; switch (status) { case ProgramStatus::yes: filename = r.GetGreen(); break; case ProgramStatus::no: filename = r.GetRed(); break; case ProgramStatus::nvr: filename = r.GetBlack(); break; case ProgramStatus::n_a: filename = r.GetBlack(); break; case ProgramStatus::wip: filename = r.GetYellow(); break; case ProgramStatus::tbd: filename = r.GetOrange(); break; case ProgramStatus::unk: filename = r.GetBlack(); break; } s += "<td><img src=\"" + filename +"\" alt=\""+ filename +"\"/></td>"; } s+="</tr>"; v.push_back(s); } ); v.push_back("</table>"); //Add footer { const std::vector<std::string> w { c2h::Footer::ToHtml(c2h::FooterType::cpp) }; std::copy(w.begin(),w.end(),std::back_inserter(v)); } return v; }