diff --git a/data/layout.xml b/data/layout.xml index c777d3c..f4a91d0 100644 --- a/data/layout.xml +++ b/data/layout.xml @@ -61,17 +61,21 @@ - + - + - + + + + + - + - + diff --git a/src/app_dialogs.cpp b/src/app_dialogs.cpp index de23d3b..f293a0c 100644 --- a/src/app_dialogs.cpp +++ b/src/app_dialogs.cpp @@ -610,7 +610,12 @@ void App::dialog_ppbr_export() App::I->pick_file_save({ "ppbr" }, [this, dialog] (std::string path) { std::thread([this, path, dialog] { BT_SetTerminate(); - presets->export_ppbr(path, dialog->m_header_image); + NodePanelBrushPreset::PPBRInfo info; + info.author = dialog->txt_author->m_text; + info.url = dialog->txt_url->m_text; + info.email = dialog->txt_email->m_text; + info.descr = dialog->txt_descr->m_text; + presets->export_ppbr(path, info); dialog->destroy(); App::I->message_box("Export PPBR", "Brushes exported to:\n" + path); }).detach(); diff --git a/src/node_dialog_export_ppbr.cpp b/src/node_dialog_export_ppbr.cpp index 6546c4a..4771fa8 100644 --- a/src/node_dialog_export_ppbr.cpp +++ b/src/node_dialog_export_ppbr.cpp @@ -48,6 +48,10 @@ void NodeDialogExportPPBR::init_controls() }; img_header = find("header-tex"); txt_header_descr = find("header-descr"); + txt_author = find("info-author"); + txt_email = find("info-email"); + txt_url = find("info-url"); + txt_descr = find("info-descr"); } void NodeDialogExportPPBR::open_header() diff --git a/src/node_dialog_export_ppbr.h b/src/node_dialog_export_ppbr.h index c81fb1e..11b2f11 100644 --- a/src/node_dialog_export_ppbr.h +++ b/src/node_dialog_export_ppbr.h @@ -16,6 +16,10 @@ public: NodeImageTexture* img_header; Image m_header_image; NodeText* txt_header_descr; + NodeText* txt_author; + NodeText* txt_descr; + NodeText* txt_url; + NodeText* txt_email; virtual Node* clone_instantiate() const override; virtual void clone_finalize(Node* dest) const override; virtual void init() override; diff --git a/src/node_panel_brush.cpp b/src/node_panel_brush.cpp index ce132ea..d94ea2c 100644 --- a/src/node_panel_brush.cpp +++ b/src/node_panel_brush.cpp @@ -684,7 +684,7 @@ void NodePanelBrushPreset::add_brush(std::shared_ptr brush) m_notification->SetVisibility(m_container->m_children.size() == 0); } -bool NodePanelBrushPreset::export_ppbr(const std::string& path, const Image& header_image) +bool NodePanelBrushPreset::export_ppbr(const std::string& path, const PPBRInfo& info_data) { std::regex r(R"((.*)[\\/]([^\\/]+)\.(\w+)$)"); std::smatch m; @@ -724,8 +724,12 @@ bool NodePanelBrushPreset::export_ppbr(const std::string& path, const Image& hea info.class_id = "ppbr_info"; info.name = L"info header"; - bool has_header_image = header_image.m_data != nullptr; + bool has_header_image = info_data.header_image.m_data != nullptr; + info.props["author"] = std::make_shared(info_data.author); + info.props["email"] = std::make_shared(info_data.email); + info.props["url"] = std::make_shared(info_data.url); + info.props["descr"] = std::make_shared(info_data.descr); info.props["has_header_image"] = std::make_shared(has_header_image); info.props["num_brush_tips"] = std::make_shared(img_brushes.size()); info.props["num_brush_patt"] = std::make_shared(img_patterns.size()); @@ -739,8 +743,8 @@ bool NodePanelBrushPreset::export_ppbr(const std::string& path, const Image& hea // header image if (has_header_image) { - sw << header_image; - header_image.save_jpg(out_path + "/header.jpg", 75); + sw << info_data.header_image; + info_data.header_image.save_jpg(out_path + "/header.jpg", 75); } pb->increment(); diff --git a/src/node_panel_brush.h b/src/node_panel_brush.h index 84713af..11aca4f 100644 --- a/src/node_panel_brush.h +++ b/src/node_panel_brush.h @@ -88,20 +88,32 @@ class NodePanelBrushPreset : public Node NodeButton* m_btn_download; Node* m_notification; public: + struct PPBRInfo + { + std::string author; + std::string email; + std::string url; + std::string descr; + Image header_image; + }; + Node* m_container; std::function& brush)> on_brush_changed; std::function on_popup_close; + NodePanelBrushPreset(); ~NodePanelBrushPreset(); + virtual Node* clone_instantiate() const override; virtual void init() override; virtual kEventResult handle_event(Event* e) override; virtual void added(Node* parent) override; + void handle_click(Node* target); bool save(); bool restore(); void add_brush(std::shared_ptr brush); - bool export_ppbr(const std::string& path, const Image& header_image); + bool export_ppbr(const std::string& path, const PPBRInfo& info); bool import_ppbr(const std::string& path); bool import_abr(const std::string& path); bool import_brush(const std::string& path); diff --git a/src/serializer.h b/src/serializer.h index 5e97219..0f386e7 100644 --- a/src/serializer.h +++ b/src/serializer.h @@ -744,7 +744,7 @@ public: } else { - LOG("Error image with %ld channels\n", channels.size()); + LOG("Error image with %zd channels\n", channels.size()); } return {}; }