std::ostream& ribi::operator<<(std::ostream& os, const Program& p) noexcept { const std::string name = p.GetName(); os << name; if (name.size() < 10) { os << '\t'; } os << '\t' << p.GetTypeName() << '\t' << ProgramStatusToStr(p.GetStatusConsole()) << '\t' << ProgramStatusToStr(p.GetStatusDesktopWindowsOnly()) << '\t' << ProgramStatusToStr(p.GetStatusDesktop()) << '\t' << ProgramStatusToStr(p.GetStatusWebApplication()); return os; }
void ribi::ProjectRichelBilderbeekMenuDialog::ShowStatus() const noexcept { typedef boost::shared_ptr<const ribi::Program> ProgramType; std::vector<ProgramType> v; for (const auto& p: CreateMenus()) { assert(p); assert(p->GetProgram()); v.push_back(p->GetProgram()); } assert(v.size() == CreateMenus().size()); //Find out the padding const int max_length { static_cast<int>( (*std::max_element(v.begin(),v.end(), [](const ProgramType& lhs,const ProgramType& rhs) { return lhs->GetName().size() < rhs->GetName().size(); } ))->GetName().size() ) }; for (const ProgramType& p: v) { const std::string name_no_padding = p->GetName(); const int cur_length = static_cast<int>(name_no_padding.size()); const int n_spaces { max_length - cur_length }; assert(n_spaces >= 0); const std::string name { cur_length == max_length ? name_no_padding : name_no_padding + std::string(n_spaces,' ') }; std::cout << name << '\t' << p->GetTypeName() << '\t' << ProgramStatusToStr(p->GetStatusConsole()) << '\t' << ProgramStatusToStr(p->GetStatusDesktopWindowsOnly()) << '\t' << ProgramStatusToStr(p->GetStatusDesktop()) << '\t' << ProgramStatusToStr(p->GetStatusWebApplication()) << '\n'; } }
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); } }