#include <iostream>
#pragma warning(push)
#pragma warning(disable : 4127)
#include <QApplication>
#include <QVBoxLayout>
#include <QTextEdit>
#pragma warning(pop)
#include <cvb/ui/property_grid.hpp>
#include <cvb/device_factory.hpp>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
path += CVB_LIT("drivers/GenICam.vin");
if (argc > 1)
{
std::string inputPath(argv[1]);
path =
Cvb::String(inputPath.begin(), inputPath.end());
}
try
{
}
catch (const std::exception& error)
{
std::cout << "Failed to open the device: " << error.what() << std::endl;
return 1;
}
try
{
auto mainWindow = new QWidget;
mainWindow->setWindowIcon(QIcon(":/qttutorial.png"));
auto layout = new QVBoxLayout;
auto nodemaps = dev->NodeMaps();
auto cbNodeMaps = new QComboBox;
for (std::map<Cvb::String, Cvb::NodeMapPtr>::iterator it = nodemaps.begin(); it != nodemaps.end(); ++it)
layout->addWidget(cbNodeMaps);
auto cbVisibility = new QComboBox;
cbVisibility->addItem("Beginner");
cbVisibility->addItem("Expert");
cbVisibility->addItem("Guru");
layout->addWidget(cbVisibility);
grid->SetVisibility(Cvb::Visibility::Beginner);
layout->addWidget(grid);
auto propertyInfo = new QTextEdit;
propertyInfo->setReadOnly(true);
layout->addWidget(propertyInfo);
grid->SetSearchResultBackgroundColor(QColor(255, 255, 150));
auto searchLayout = new QHBoxLayout;
searchLayout->addWidget(new QLabel("Search:"));
auto search = new QLineEdit;
search->setPlaceholderText("Search property...");
searchLayout->addWidget(search);
layout->addLayout(searchLayout);
auto updateButton = new QPushButton("Update");
layout->addWidget(updateButton);
auto startAutoUpdate = new QPushButton("AutoUpdate START");
layout->addWidget(startAutoUpdate);
auto stopAutoUpdate = new QPushButton("AutoUpdate STOP");
layout->addWidget(stopAutoUpdate);
auto autoUpdateButtonLayout = new QHBoxLayout;
autoUpdateButtonLayout->addWidget(startAutoUpdate);
autoUpdateButtonLayout->addWidget(stopAutoUpdate);
layout->addLayout(autoUpdateButtonLayout);
QObject::connect(cbNodeMaps, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int )
{
search->setText("");
grid->ResetSearch();
});
QObject::connect(cbVisibility, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index)
{
switch (index)
{
case 0: grid->SetVisibility(Cvb::Visibility::Beginner); break;
case 1: grid->SetVisibility(Cvb::Visibility::Expert); break;
case 2: grid->SetVisibility(Cvb::Visibility::Guru); break;
}
});
QObject::connect(grid, &Cvb::UI::PropertyGrid::clicked, [=](const QModelIndex & index)
{
propertyInfo->setText(grid->HtmlFormattedDescription(index));
});
QObject::connect(search, &QLineEdit::returnPressed, [=]()
{
if (search->text().isEmpty())
{
grid->ResetSearch();
return;
}
auto found = grid->Search(search->text());
grid->ExpandSearchResult(found);
});
QObject::connect(updateButton, &QPushButton::clicked, [=]()
{
grid->update();
});
QObject::connect(startAutoUpdate, &QPushButton::clicked, [=]()
{
grid->StartAutoUpdate(5000);
});
QObject::connect(stopAutoUpdate, &QPushButton::clicked, [=]()
{
grid->StopAutoUpdate();
});
mainWindow->setLayout(layout);
mainWindow->setAttribute(Qt::WA_DeleteOnClose);
mainWindow->show();
return app.exec();
}
catch (const std::exception& error)
{
std::cout << error.what() << std::endl;
return 1;
}
}
static std::shared_ptr< T > Open(const String &provider, AcquisitionStack acquisitionStack=AcquisitionStack::PreferVin)
Cvb::String QtToCvb(const QString text) noexcept
QString CvbToQt(const Cvb::String &text) noexcept
String ExpandPath(const String &path)
std::shared_ptr< Device > DevicePtr