Print diagnostics and fix the path to the ui file in the interpreted printer demo

This commit is contained in:
Simon Hausmann 2021-03-19 18:41:10 +01:00
parent e1f9347aaa
commit 73108ff26f
2 changed files with 28 additions and 11 deletions

View file

@ -17,6 +17,7 @@ endif()
add_executable(printerdemo_interpreted main.cpp) add_executable(printerdemo_interpreted main.cpp)
target_compile_definitions(printerdemo_interpreted PRIVATE target_compile_definitions(printerdemo_interpreted PRIVATE
FONTS_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/../ui/fonts\" FONTS_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/../ui/fonts\"
SOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}\"
) )
if (MSVC) if (MSVC)
target_compile_options(printerdemo_interpreted PRIVATE /bigobj) target_compile_options(printerdemo_interpreted PRIVATE /bigobj)

View file

@ -9,16 +9,16 @@
LICENSE END */ LICENSE END */
#include <sixtyfps_interpreter.h> #include <sixtyfps_interpreter.h>
using sixtyfps::interpreter::Value; using sixtyfps::interpreter::Value;
struct InkLevelModel : sixtyfps::Model<Value> struct InkLevelModel : sixtyfps::Model<Value>
{ {
int row_count() const override { return m_data.size(); } int row_count() const override { return m_data.size(); }
Value row_data(int i) const override { return m_data[i]; } Value row_data(int i) const override { return m_data[i]; }
private: private:
static Value make_inklevel_value(sixtyfps::Color color, float level) { static Value make_inklevel_value(sixtyfps::Color color, float level)
{
sixtyfps::interpreter::Struct s; sixtyfps::interpreter::Struct s;
s.set_field("color", Value(color)); s.set_field("color", Value(color));
s.set_field("level", level); s.set_field("level", level);
@ -26,10 +26,10 @@ private:
} }
std::vector<Value> m_data = { std::vector<Value> m_data = {
make_inklevel_value( sixtyfps::Color::from_rgb_uint8(255, 255, 0), 0.9 ), make_inklevel_value(sixtyfps::Color::from_rgb_uint8(255, 255, 0), 0.9),
make_inklevel_value( sixtyfps::Color::from_rgb_uint8(255, 0, 255), 0.8 ), make_inklevel_value(sixtyfps::Color::from_rgb_uint8(255, 0, 255), 0.8),
make_inklevel_value( sixtyfps::Color::from_rgb_uint8(0, 255, 255), 0.5 ), make_inklevel_value(sixtyfps::Color::from_rgb_uint8(0, 255, 255), 0.5),
make_inklevel_value( sixtyfps::Color::from_rgb_uint8(0, 0, 0), 0.1 ), make_inklevel_value(sixtyfps::Color::from_rgb_uint8(0, 0, 0), 0.1),
}; };
}; };
@ -43,10 +43,23 @@ int main()
} }
sixtyfps::interpreter::ComponentCompiler compiler; sixtyfps::interpreter::ComponentCompiler compiler;
auto definition = compiler.build_from_path(__FILE__ "/../../ui/printerdemo.60"); auto definition = compiler.build_from_path(SOURCE_DIR "/../ui/printerdemo.60");
// FIXME: show diagnostics
for (auto diagnostic : compiler.diagnostics()) {
std::cerr << (diagnostic.level == sixtyfps::interpreter::DiagnosticLevel::Warning
? "warning: "
: "error: ")
<< diagnostic.message << std::endl;
std::cerr << "location: " << diagnostic.source_file;
if (diagnostic.line > 0)
std::cerr << ":" << diagnostic.line;
if (diagnostic.column > 0)
std::cerr << ":" << diagnostic.column;
std::cerr << std::endl;
}
if (!definition) { if (!definition) {
std::cerr << "compilation failure" << std::endl; std::cerr << "compilation failure!" << std::endl;
return EXIT_FAILURE; return EXIT_FAILURE;
} }
auto instance = definition->create(); auto instance = definition->create();
@ -55,6 +68,9 @@ int main()
std::cerr << "Could not set property ink_levels" << std::endl; std::cerr << "Could not set property ink_levels" << std::endl;
return EXIT_FAILURE; return EXIT_FAILURE;
} }
instance->set_callback("quit", [](auto) { std::exit(0); return Value(); }); instance->set_callback("quit", [](auto) {
std::exit(0);
return Value();
});
instance->run(); instance->run();
} }