Geometrize  1.0
An application for geometrizing images into geometric primitives
Public Member Functions | Private Member Functions | Private Attributes | List of all members
geometrize::dialog::TemplateGrid::TemplateGridImpl Class Reference
Collaboration diagram for geometrize::dialog::TemplateGrid::TemplateGridImpl:
Collaboration graph
[legend]

Public Member Functions

 TemplateGridImpl (TemplateGrid *pQ)
 
void loadTemplates ()
 
void setItemFilter (const QString &filter)
 
TemplateGridImpl operator= (const TemplateGridImpl &)=delete
 
 TemplateGridImpl (const TemplateGridImpl &)=delete
 
 ~TemplateGridImpl ()=default
 
void onLanguageChange ()
 

Private Member Functions

void populateUi ()
 
void addTemplateItem (const QString &templateFolder)
 

Private Attributes

TemplateGridq
 
layout::FlowLayoutm_layout
 
std::unique_ptr< chaiscript::ChaiScript > m_templateLoader
 
std::vector< TemplateButton * > m_buttons
 

Constructor & Destructor Documentation

◆ TemplateGridImpl() [1/2]

geometrize::dialog::TemplateGrid::TemplateGridImpl::TemplateGridImpl ( TemplateGrid pQ)
inline
26  : q{pQ}, m_layout{new layout::FlowLayout(24, 24, 24)}, m_templateLoader{geometrize::script::createDefaultEngine()}
27  {
28  q->setLayout(m_layout);
29  populateUi();
30  }

◆ TemplateGridImpl() [2/2]

geometrize::dialog::TemplateGrid::TemplateGridImpl::TemplateGridImpl ( const TemplateGridImpl )
delete

◆ ~TemplateGridImpl()

geometrize::dialog::TemplateGrid::TemplateGridImpl::~TemplateGridImpl ( )
default

Member Function Documentation

◆ addTemplateItem()

void geometrize::dialog::TemplateGrid::TemplateGridImpl::addTemplateItem ( const QString &  templateFolder)
inlineprivate
98  {
99  TemplateButton* item{new TemplateButton(m_templateLoader.get(), templateFolder)};
100  m_layout->addWidget(item);
101  m_buttons.push_back(item);
102  }
Here is the caller graph for this function:

◆ loadTemplates()

void geometrize::dialog::TemplateGrid::TemplateGridImpl::loadTemplates ( )
inline
33  {
34  // Build the list of templates to load
35  std::vector<std::string> templateFolders;
36 
37  const std::vector<std::string> paths{geometrize::searchpaths::getTemplateSearchPaths()};
38  for(const std::string& path : paths) {
39  const std::vector<std::string> folders{util::getSubdirectoriesForDirectory(path)};
40  templateFolders.insert(templateFolders.end(), folders.begin(), folders.end());
41  }
42 
43  // Put the folders in a sensible order so it doesn't vary based on filesystem implementation/state
44  std::sort(templateFolders.begin(), templateFolders.end());
45 
46  // Add a template item every few ms
47  for(std::size_t i = 0; i < templateFolders.size(); i++) {
48  std::string folder = templateFolders[i];
49  QTimer::singleShot(16 * i, Qt::PreciseTimer, q, [this, folder]() {
50  addTemplateItem(QString::fromStdString(folder));
51  });
52  }
53  }
Here is the call graph for this function:

◆ onLanguageChange()

void geometrize::dialog::TemplateGrid::TemplateGridImpl::onLanguageChange ( )
inline
88  {
89  populateUi();
90  }
Here is the call graph for this function:

◆ operator=()

TemplateGridImpl geometrize::dialog::TemplateGrid::TemplateGridImpl::operator= ( const TemplateGridImpl )
delete

◆ populateUi()

void geometrize::dialog::TemplateGrid::TemplateGridImpl::populateUi ( )
inlineprivate
94  {
95  }
Here is the caller graph for this function:

◆ setItemFilter()

void geometrize::dialog::TemplateGrid::TemplateGridImpl::setItemFilter ( const QString &  filter)
inline
56  {
57  if(filter.isEmpty()) {
58  for(TemplateButton* const button : m_buttons) {
59  button->show();
60  }
61  return;
62  }
63 
64  for(TemplateButton* const button : m_buttons) {
65  const QString name{QString::fromStdString(button->getTemplateManifest().getName())};
66  const std::vector<std::string> tags{button->getTemplateManifest().getTags()};
67 
68  if(name.contains(filter, Qt::CaseInsensitive)) {
69  button->show();
70  } else {
71  button->hide();
72  }
73 
74  for(const std::string& tag : tags) {
75  const QString qTag{QString::fromStdString(tag)};
76  if(qTag.contains(filter, Qt::CaseInsensitive)) {
77  button->show();
78  }
79  }
80  }
81  }

Member Data Documentation

◆ m_buttons

std::vector<TemplateButton*> geometrize::dialog::TemplateGrid::TemplateGridImpl::m_buttons
private

◆ m_layout

layout::FlowLayout* geometrize::dialog::TemplateGrid::TemplateGridImpl::m_layout
private

◆ m_templateLoader

std::unique_ptr<chaiscript::ChaiScript> geometrize::dialog::TemplateGrid::TemplateGridImpl::m_templateLoader
private

◆ q

TemplateGrid* geometrize::dialog::TemplateGrid::TemplateGridImpl::q
private

The documentation for this class was generated from the following file:
geometrize::dialog::TemplateGrid::TemplateGridImpl::populateUi
void populateUi()
Definition: templategrid.cpp:93
geometrize::dialog::TemplateGrid::TemplateGridImpl::m_layout
layout::FlowLayout * m_layout
Definition: templategrid.cpp:105
geometrize::searchpaths::getTemplateSearchPaths
std::vector< std::string > getTemplateSearchPaths()
getTemplateSearchpaths Gets the directory paths that the program will search for project file templat...
Definition: searchpaths.cpp:26
geometrize::dialog::TemplateGrid::TemplateGridImpl::q
TemplateGrid * q
Definition: templategrid.cpp:104
geometrize::dialog::TemplateGrid::TemplateGridImpl::m_templateLoader
std::unique_ptr< chaiscript::ChaiScript > m_templateLoader
Definition: templategrid.cpp:106
geometrize::script::createDefaultEngine
std::unique_ptr< chaiscript::ChaiScript > createDefaultEngine()
createDefaultEngine Creates a default Chaiscript engine object, with the default bindings (Geometrize...
Definition: chaiscriptcreator.cpp:26
geometrize::dialog::TemplateGrid::TemplateGridImpl::m_buttons
std::vector< TemplateButton * > m_buttons
Definition: templategrid.cpp:107
geometrize::dialog::TemplateGrid::TemplateGridImpl::addTemplateItem
void addTemplateItem(const QString &templateFolder)
Definition: templategrid.cpp:97
geometrize::util::getSubdirectoriesForDirectory
std::vector< std::string > getSubdirectoriesForDirectory(const std::string &dirPath)
getSubdirectoriesForDirectory Gets the absolute paths for direct subdirectories of the given director...
Definition: util.cpp:180