Skip to content

Commit

Permalink
Developing 0.31.0
Browse files Browse the repository at this point in the history
- notebook: add activated property
- tabbar: add activated property
- improved name manager
	- breaking changes: renamed internal variables
- fixed bug in code-generation in strings with double quote (")
- fixed bug where properties default value were overwritten
  • Loading branch information
besh81 committed Mar 26, 2021
1 parent 315b75c commit 235f2ed
Show file tree
Hide file tree
Showing 43 changed files with 333 additions and 270 deletions.
2 changes: 1 addition & 1 deletion build/vc2019/nana_creator.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(NANALIB)/build/bin;$(NANALIB)/extrlib/vc2019;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>nana_v142_Release_x86.lib;libjpeg.MT.x86.lib;zlib.MT.x86.lib;libpng.MT.x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions) /d2:-AllowCompatibleILVersions</AdditionalOptions>
<SubSystem>Windows</SubSystem>
<LinkTimeCodeGeneration>UseFastLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
Expand Down
2 changes: 1 addition & 1 deletion build/vc2019/test_ctrls.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(NANALIB)/build/bin;$(NANALIB)/extrlib/vc2019;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>nana_v142_Release_x86.lib;libjpeg.MT.x86.lib;zlib.MT.x86.lib;libpng.MT.x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions) /d2:-AllowCompatibleILVersions</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
Expand Down
2 changes: 1 addition & 1 deletion src/codegenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include <string>
#include "tree.h"
#include "codegenerator_data.h"
#include "guimanager.h" //XXX serve per definizione control_obj -> risolvere
#include "ctrls/ctrl.h"



Expand Down
8 changes: 2 additions & 6 deletions src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,8 @@

#define CREATOR_SUPPORTED_IMG "*.bmp;*.png;*.jpg;*.jpe*"
#define CREATOR_SUPPORTED_ICO "*.ico"
#define CITEM_INNER_TKN "\r"
#define CITEM_TKN "\n"
#define CITEM_EMPTY " "
#define CITEM_SEPARATOR "{sep}"
// toolbar separator
#define CITEM_TLB_SEPARATOR CITEM_SEPARATOR CITEM_INNER_TKN CITEM_SEPARATOR

#define INVALID_NAMES_ENDING "place_","panel_","tabbar_","radiogroup_","submenu_"


// UI
Expand Down
2 changes: 1 addition & 1 deletion src/creator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ void creator::_init_ctrls()
sb_set("Ready");


_place.collocate();
place_.collocate();
}


Expand Down
36 changes: 18 additions & 18 deletions src/creator.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*****************************************************
* C++ code generated with Nana Creator (0.30.0)
* C++ code generated with Nana Creator (0.31.0)
* GitHub repo: https://github.com/besh81/nana-creator
*
* PLEASE EDIT ONLY INSIDE THE TAGS:
Expand Down Expand Up @@ -47,14 +47,14 @@ class creator
private:
void init_()
{
_place.bind(*this);
_place.div("vert arrange=[36,variable,24] _field_");
place_.bind(*this);
place_.div("vert arrange=[36,variable,24] _field_");
caption("Nana Creator");
icon(nana::paint::image("icons/creator.ico"));
bgcolor(nana::color(93,107,153));
// _tb
_tb.create(*this);
_place["_field_"] << _tb;
place_["_field_"] << _tb;
_tb.bgcolor(nana::color(204,213,240));
_tb.tools_height(26);
_tb.append(nana::toolbar::tools::button, "New project", nana::paint::image("icons/new_prj.png"));
Expand Down Expand Up @@ -84,41 +84,41 @@ class creator
_tb.append(nana::toolbar::tools::button, "Info", nana::paint::image("icons/info.png"));
// _adi_panel_margin
_adi_panel_margin.create(*this);
_adi_panel_margin_place.bind(_adi_panel_margin);
_adi_panel_margin_place.div("margin=5 gap=2 _field_");
_adi_panel_margin_place_.bind(_adi_panel_margin);
_adi_panel_margin_place_.div("margin=5 gap=2 _field_");
_adi_panel_margin.bgcolor(this->bgcolor());
_place["_field_"] << _adi_panel_margin;
place_["_field_"] << _adi_panel_margin;
// _adi_panel
_adi_panel.create(_adi_panel_margin);
_adi_panel.bgcolor(_adi_panel_margin.bgcolor());
_adi_panel_margin_place["_field_"] << _adi_panel;
_adi_panel_margin_place_["_field_"] << _adi_panel;
// _sb_panel
_sb_panel.create(*this);
_sb_panel_place.bind(_sb_panel);
_sb_panel_place.div("weight=24 margin=3 gap=2 _field_");
_sb_panel_place_.bind(_sb_panel);
_sb_panel_place_.div("weight=24 margin=3 gap=2 _field_");
_sb_panel.bgcolor(nana::color(64,86,141));
_place["_field_"] << _sb_panel;
place_["_field_"] << _sb_panel;
// _sb
_sb.create(_sb_panel);
_sb_panel_place["_field_"] << _sb;
_sb_panel_place_["_field_"] << _sb;
_sb.bgcolor(_sb_panel.bgcolor());
_sb.fgcolor(nana::color(255,255,255));
_sb.caption("");

_place.collocate();
_adi_panel_margin_place.collocate();
_sb_panel_place.collocate();
place_.collocate();
_adi_panel_margin_place_.collocate();
_sb_panel_place_.collocate();
}


protected:
nana::place _place;
nana::place place_;
nana::toolbar _tb;
nana::panel<true> _adi_panel_margin;
nana::place _adi_panel_margin_place;
nana::place _adi_panel_margin_place_;
nana::panel<true> _adi_panel;
nana::panel<true> _sb_panel;
nana::place _sb_panel_place;
nana::place _sb_panel_place_;
nana::label _sb;


Expand Down
2 changes: 1 addition & 1 deletion src/creator.ncp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<nana-creator version="0.30.0">
<nana-creator version="0.31.0">
<form mainclass="true" filename="creator" rel_path="true" work_dir="c:/cppprojects/nana-creator/wdir" type="form" name="creator" enabled="true" caption="Nana Creator" icon="C:\cppprojects\nana-creator\wdir\icons\creator.ico" width="800" height="500" zoom="false" bgcolor="93,107,153" fgcolor="0,0,0" decoration="true" taskbar="true" floating="false" no_activate="false" min="true" max="true" sizable="true" layout="1" margin="0" gap="0">
<toolbar type="toolbar" name="_tb" enabled="true" bgcolor="204,213,240" fgcolor="0,0,0" f_size="9" f_weight="400" f_italic="false" f_underline="false" f_strike_out="false" weight="36" buttons="(Collection)" tools_height="26">
<item type="button" key="n1" owner="" text="New project" image="C:\cppprojects\nana-creator\wdir\icons\new_prj.png" enable="true" textout="false" />
Expand Down
2 changes: 1 addition & 1 deletion src/ctrls/button.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ namespace ctrls
// declaration
cd->decl.push_back("nana::button " + name + ";");
// init
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_string() + "\");");
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_escaped_string() + "\");");
if(!properties.property("icon").as_string().empty())
cd->init.push_back(name + ".icon(nana::paint::image(\"" + g_file_mgr.to_relative(properties.property("icon").as_string()) + "\"));");
if(properties.property("enable_pushed").as_bool())
Expand Down
5 changes: 2 additions & 3 deletions src/ctrls/checkbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,11 @@ namespace ctrls
// declaration
cd->decl.push_back("nana::checkbox " + name + ";");
// init
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_string() + "\");");
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_escaped_string() + "\");");

if(!properties.property("group").as_string().empty())
{
//TODO: il nome del gruppo non dovrebbe essere presente tra i vari controlli
std::string group = "rg_" + properties.property("group").as_string();
std::string group = properties.property("group").as_string() + "_radiogroup_";

// check if the group is been already declared
bool first_time = true;
Expand Down
4 changes: 2 additions & 2 deletions src/ctrls/combox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ namespace ctrls
{
ctrl::update();

//options: I don't think it's usefull to add options here
//options: I don't think it's usefull to set options here

cmb.editable(properties.property("editable").as_bool());
cmb.image_pixels(properties.property("image_pixels").as_uint());
Expand All @@ -72,7 +72,7 @@ namespace ctrls
// options - START
items.for_each([cd, &name](tree_node<ctrls::properties_collection>* node) -> bool
{
cd->init.push_back(name + ".push_back(\"" + node->value.property("text").as_string() + "\");");
cd->init.push_back(name + ".push_back(\"" + node->value.property("text").as_escaped_string() + "\");");

if(!node->value.property("image").as_string().empty())
cd->init.push_back(name + ".image(" + std::to_string(node->pos()) + ", nana::paint::image(\"" + g_file_mgr.to_relative(node->value.property("image").as_string()) + "\"));");
Expand Down
4 changes: 4 additions & 0 deletions src/ctrls/ctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,8 @@ namespace ctrls
}//end namespace ctrls


typedef std::shared_ptr<ctrls::ctrl> control_obj;
typedef std::weak_ptr<ctrls::ctrl> control_obj_ptr;


#endif //NANA_CREATOR_CTRL_H
2 changes: 1 addition & 1 deletion src/ctrls/custom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ namespace ctrls
generatecode_fonts(cd, name);

if(!properties.property("extra_code").as_string().empty())
cd->init.push_back(parse_code(properties.property("extra_code").as_string(), name, ci->create));
cd->init.push_back(parse_code(properties.property("extra_code").as_escaped_string(), name, ci->create));
}


Expand Down
12 changes: 6 additions & 6 deletions src/ctrls/form.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,17 +137,17 @@ namespace ctrls
cd->hpps.add("#include <nana/gui/widgets/panel.hpp>");
cd->hpps.add("#include <nana/gui/place.hpp>");
// declaration
cd->decl.push_back("nana::place _place;");
cd->decl.push_back("nana::place place_;");
// init
if(!ispanel && properties.property("zoom").as_bool())
cd->init.push_back("nana::API::zoom_window(*this, true);");
cd->init.push_back("_place.bind(*this);");
cd->init.push_back("_place.div(\"" + boxmodel.get(DEFAULT_FIELD, true) + "\");");
cd->init.push_back("place_.bind(*this);");
cd->init.push_back("place_.div(\"" + boxmodel.get(DEFAULT_FIELD, true) + "\");");
if(!properties.property("enabled").as_bool())
cd->init.push_back("enabled(false);");
if(!ispanel)
{
cd->init.push_back("caption(\"" + properties.property("caption").as_string() + "\");");
cd->init.push_back("caption(\"" + properties.property("caption").as_escaped_string() + "\");");
if(!properties.property("icon").as_string().empty())
cd->init.push_back("icon(nana::paint::image(\"" + g_file_mgr.to_relative(properties.property("icon").as_string()) + "\"));");
}
Expand All @@ -160,9 +160,9 @@ namespace ctrls
// placement
// ...
// collocate
cd->init_post.push_back("_place.collocate();");
cd->init_post.push_back("place_.collocate();");
// children
ci->place = "_place";
ci->place = "place_";
ci->field = DEFAULT_FIELD;
}

Expand Down
2 changes: 1 addition & 1 deletion src/ctrls/group.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ namespace ctrls
if(children())
cd->init.push_back(name + ".div(\"" + boxmodel.get(DEFAULT_FIELD, true) + "\");");

cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_string() + "\");");
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_escaped_string() + "\");");

if(!properties.property("enabled").as_bool())
cd->init.push_back(name + ".enabled(false);");
Expand Down
2 changes: 1 addition & 1 deletion src/ctrls/label.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ namespace ctrls
// declaration
cd->decl.push_back("nana::label " + name + ";");
// init
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_string() + "\");");
cd->init.push_back(name + ".caption(\"" + properties.property("caption").as_escaped_string() + "\");");
if(properties.property("format").as_bool())
cd->init.push_back(name + ".format(true);");
if(properties.property("transparent").as_bool())
Expand Down
2 changes: 1 addition & 1 deletion src/ctrls/listbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ namespace ctrls
// columns - START
items.for_each([cd, &name](tree_node<ctrls::properties_collection>* node) -> bool
{
std::string str = name + ".append_header(\"" + node->value.property("text").as_string() + "\"";
std::string str = name + ".append_header(\"" + node->value.property("text").as_escaped_string() + "\"";
if(node->value.property("width").as_int() < 0)
str.append(");");
else
Expand Down
9 changes: 4 additions & 5 deletions src/ctrls/menubar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,11 @@ namespace ctrls
//this is a menubar item
if(node->child)
{
//TODO: il nome del menu non dovrebbe essere presente tra i vari controlli
pval->submenu_name = name + "_" + std::to_string(node->pos());
cd->init.push_back("auto* " + pval->submenu_name + " = &" + name + ".push_back(\"" + pval->item->property("text").as_string() + "\");");
pval->submenu_name = name + "_" + std::to_string(node->pos()) + "_submenu_";
cd->init.push_back("auto* " + pval->submenu_name + " = &" + name + ".push_back(\"" + pval->item->property("text").as_escaped_string() + "\");");
}
else
cd->init.push_back(name + ".push_back(\"" + pval->item->property("text").as_string() + "\");");
cd->init.push_back(name + ".push_back(\"" + pval->item->property("text").as_escaped_string() + "\");");
}
else
{
Expand All @@ -149,7 +148,7 @@ namespace ctrls
return true;
}

cd->init.push_back(pval_parent->submenu_name + "->append(\"" + pval->item->property("text").as_string() + "\");");
cd->init.push_back(pval_parent->submenu_name + "->append(\"" + pval->item->property("text").as_escaped_string() + "\");");

if(!pval->item->property("image").as_string().empty())
cd->init.push_back(pval_parent->submenu_name + "->image(" + std::to_string(node->pos()) + ", nana::paint::image(\"" + g_file_mgr.to_relative(pval->item->property("image").as_string()) + "\"));");
Expand Down
43 changes: 24 additions & 19 deletions src/ctrls/notebook.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ namespace ctrls


// common
// ...
properties.append("activated").label("Activated").category(CAT_COMMON).type(pg_type::string_uint) = 0;
// appearance
properties.append("addbtn").label("Add button").category(CAT_APPEARANCE).type(pg_type::check) = false;
properties.append("closebtn").label("Close button").category(CAT_APPEARANCE).type(pg_type::check) = false;
Expand Down Expand Up @@ -257,7 +257,6 @@ namespace ctrls
{
ctrl::update();

// tbb
tbb.bgcolor(pnl.bgcolor());
tbb.fgcolor(pnl.fgcolor());

Expand All @@ -278,6 +277,8 @@ namespace ctrls
i++;
}

//activated: can't be set here or it will change displayed page

tbb.toolbox(nana::drawerbase::tabbar::trigger::kits::add, properties.property("addbtn").as_bool());
tbb.toolbox(nana::drawerbase::tabbar::trigger::kits::close, properties.property("closebtn").as_bool());
tbb.close_fly(properties.property("closefly").as_bool());
Expand Down Expand Up @@ -308,7 +309,6 @@ namespace ctrls

std::string name = properties.property("name").as_string();


// tabs weight
auto tabw = properties.property("tabweight").as_string();
if(tabw.empty())
Expand All @@ -321,38 +321,43 @@ namespace ctrls
cd->hpps.add("#include <nana/gui/widgets/panel.hpp>");
cd->hpps.add("#include <nana/gui/widgets/tabbar.hpp>");
// declaration
cd->decl.push_back("nana::panel<true> " + name + "_pnl;");
cd->decl.push_back("nana::tabbar<size_t> " + name + "_tbb;");
cd->decl.push_back("nana::place " + name + "_plc;");
cd->decl.push_back("nana::panel<true> " + name + "_panel_;");
cd->decl.push_back("nana::tabbar<size_t> " + name + "_tabbar_;");
cd->decl.push_back("nana::place " + name + "_place_;");
// init
cd->init.push_back("// " + name);
cd->init.push_back(name + "_pnl.create(" + ci->create + ");");
cd->init.push_back(name + "_tbb.create(" + name + "_pnl);");
cd->init.push_back(name + "_panel_.create(" + ci->create + ");");
cd->init.push_back(name + "_tabbar_.create(" + name + "_panel_);");

cd->init.push_back(name + "_plc.bind(" + name + "_pnl);");
cd->init.push_back(name + "_plc.div(\"vert margin=1 <vert weight=" + tabw + " tabs><pages>\");");
cd->init.push_back(name + "_plc[\"tabs\"] << " + name + "_tbb;");
cd->init.push_back(name + "_place_.bind(" + name + "_panel_);");
cd->init.push_back(name + "_place_.div(\"vert margin=1 <vert weight=" + tabw + " tabs><pages>\");");
cd->init.push_back(name + "_place_[\"tabs\"] << " + name + "_tabbar_;");

if(properties.property("addbtn").as_bool())
cd->init.push_back(name + "_tbb.toolbox(nana::drawerbase::tabbar::trigger::kits::add, true);");
cd->init.push_back(name + "_tabbar_.toolbox(nana::drawerbase::tabbar::trigger::kits::add, true);");
if(properties.property("closebtn").as_bool())
{
cd->init.push_back(name + "_tbb.toolbox(nana::drawerbase::tabbar::trigger::kits::close, true);");
cd->init.push_back(name + "_tabbar_.toolbox(nana::drawerbase::tabbar::trigger::kits::close, true);");
if(properties.property("closefly").as_bool())
cd->init.push_back(name + "_tbb.close_fly(true);");
cd->init.push_back(name + "_tabbar_.close_fly(true);");
}
if(properties.property("listbtn").as_bool())
cd->init.push_back(name + "_tbb.toolbox(nana::drawerbase::tabbar::trigger::kits::list, true);");
cd->init.push_back(name + "_tabbar_.toolbox(nana::drawerbase::tabbar::trigger::kits::list, true);");
if(!properties.property("scrollbtn").as_bool()) // Only scrolling button is enabled by default
cd->init.push_back(name + "_tbb.toolbox(nana::drawerbase::tabbar::trigger::kits::scroll, false);");
cd->init.push_back(name + "_tabbar_.toolbox(nana::drawerbase::tabbar::trigger::kits::scroll, false);");

// placement
cd->init.push_back(ci->place + "[\"" + ci->field + "\"] << " + name + "_pnl;");
cd->init.push_back(ci->place + "[\"" + ci->field + "\"] << " + name + "_panel_;");
// activated
if(properties.property("activated").as_uint() < pages.size())
cd->init_post.push_back(name + "_tabbar_.activated(" + properties.property("activated").as_string() + ");");
else if(pages.size() > 0)
cd->init_post.push_back(name + "_tabbar_.activated(0);");
// collocate
cd->init_post.push_back(name + "_plc.collocate();");
cd->init_post.push_back(name + "_place_.collocate();");
// children
ci->create = name;
ci->place = name + "_plc";
ci->place = name + "_place_";
ci->field = "pages";
}

Expand Down
Loading

0 comments on commit 235f2ed

Please sign in to comment.