summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2014-04-18 18:30:52 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2014-04-18 18:30:52 +0200
commitd834eba65c2c65c1540d13c9c39ced51bd87cf83 (patch)
tree68c0533b668545cbfb0b0d556ac7ebf9bf8d3e97 /main.cpp
parent0969e7a24c0ae2a0cc9c5bd4be0d18c29bfe7f30 (diff)
downloadgeneric-gui-d834eba65c2c65c1540d13c9c39ced51bd87cf83.tar.gz
generic-gui-d834eba65c2c65c1540d13c9c39ced51bd87cf83.tar.bz2
generic-gui-d834eba65c2c65c1540d13c9c39ced51bd87cf83.zip
First working prototype
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index fc047f7..1ca2350 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,5 +1,80 @@
+#include "fusion_model.hpp"
+#include "qt_adapter.hpp"
+#include "gui_item_delegate.hpp"
+
+#include <boost/fusion/adapted.hpp>
+
+#include <iostream>
+
+#include <QMainWindow>
+#include <QApplication>
+
+struct Data {
+ std::string name;
+ uint32_t number;
+ float ratio;
+ bool lolwut;
+};
+
+BOOST_FUSION_ADAPT_STRUCT(
+ Data,
+ (std::string, name)
+ (uint32_t, number)
+ (float, ratio)
+ (bool, lolwut)
+)
+
+struct DataModel : public fusion_model<std::vector<Data>> {
+
+ void add_data(Data d) {
+ data.push_back(d);
+ }
+};
+
int main()
{
+ DataModel model;
+
+ model.add_data({"Pietje", 2, 3.333f, true});
+ model.add_data({"Jantje", 3, 1.5f, false});
+ model.add_data({"Sjaakje", 1, 0.1337f, false});
+
+ auto adapter = make_qt_adapter(model);
+
+ int argc = 0;
+ QApplication qapp(argc, nullptr);
+
+ QMainWindow w;
+
+ decltype(adapter)::element_type::view view;
+
+ view.setModel(adapter.get());
+
+ GuiItemDelegate delegate;
+ view.setItemDelegate(&delegate);
+
+ view.show();
+
+ qapp.exec();
+
+ for(int column = 0; column < model.column_count(); ++column)
+ {
+ std::cout << model.horizontal_header_data(column) << "\t";
+ }
+ std::cout << std::endl;
+
+ for(int row = 0; row < model.row_count(); ++row)
+ {
+ for(int column = 0; column < model.column_count(); ++column) {
+ if(column == 0) {
+ std::cout << boost::any_cast<std::string>(model.get_cell(row, column)) << "\t";
+ } else {
+ std::cout << boost::any_cast<uint32_t>(model.get_cell(row, column)) << "\t";
+ }
+ }
+ std::cout << std::endl;
+ }
+
return 0;
}