GithubHelp home page GithubHelp logo

besh81 / nana-creator Goto Github PK

View Code? Open in Web Editor NEW
97.0 8.0 14.0 2.93 MB

Nana Creator - a RAD tool for (and built with) Nana C++ Library

License: GNU General Public License v3.0

C++ 99.15% C 0.49% CMake 0.36%
modern-cpp ide cross-platform gui-toolkit designer nana

nana-creator's Introduction

Nana Creator Buy Me A Coffee

⚡ The quickest way to build Nana GUIs ⚡

Nana Creator on Sourceforge

Nana Creator is a RAD tool for (and built with) Nana C++ Library. Is a place-based resource editor that quickly gets you creating professional-looking dialogs for deployment on Windows, Linux or any other supported Nana platform.

Click here to download the:     💻 Win installer      💾 Win portable

Calculator UI ADI place Ctrls UI

Used libraries:

How to Build

To correctly build Nana creator enable PNG & JPG support in Nana. Here the instruction to Configure-Third-Party-Libraries-for-Nana

Tutorials

nana-creator's People

Contributors

besh81 avatar federandink avatar kassane avatar ppetraki avatar trojninalex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nana-creator's Issues

Nana-creator wont compile under linux.

When attempting to compile, I get this error :
|error: ‘class nana::toolbar’ has no member named ‘tools_height’

This error happens in several places, including:
nana-creator/src/creator.h Line 59
nana-creator/src/ctrls/toolbar.cpp Line 66

I suspect it has something to do with the tools_height token defined in the xml file at: nana-creator/src/itemseditorpanel.ncp
Is there some code generator that must be run before compiling nana-creator?

Compile errors

I git clone the latest nana and nana-creator but can not compile. Why is it?

Build started...
1>------ Build started: Project: nana_creator, Configuration: Debug Win32 ------
1>creator.cpp
1>D:\code\c++\nana-creator\src\creator.h(59,7): error C2039: 'tools_height': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(60,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(60,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(60,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(61,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(61,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(61,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(62,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(62,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(62,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(63,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(63,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(63,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(64,7): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(65,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(65,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(65,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(66,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(66,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(66,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(67,7): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(68,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(68,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(68,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(69,7): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(70,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(70,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(70,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(71,7): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(72,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(72,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(72,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(73,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(73,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(73,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(74,46): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(74,53): error C2039: 'dropdown': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(74,1): error C2065: 'dropdown': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(75,1): error C3536: 'ip__tb_14': cannot be used before it is initialized
1>D:\code\c++\nana-creator\src\creator.h(78,7): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(79,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(79,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(79,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(80,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(80,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(80,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(81,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(81,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(81,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(83,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(83,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(83,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.h(84,29): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\creator.h(84,36): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.h(84,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(72,11): error C2039: 'tools_height': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(73,33): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(73,40): error C2039: 'dropdown': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(73,1): error C2065: 'dropdown': undeclared identifier
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(74,11): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(75,33): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(75,40): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(75,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(76,11): error C2039: 'append_separator': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(77,33): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(77,40): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(77,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(78,33): error C3083: 'tools': the symbol to the left of a '::' must be a type
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(78,40): error C2039: 'button': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\itemseditorpanel.h(78,1): error C2065: 'button': undeclared identifier
1>D:\code\c++\nana-creator\src\creator.cpp(348,16): error C2039: 'at': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.cpp(349,4): error C3536: 'ip': cannot be used before it is initialized
1>D:\code\c++\nana-creator\src\creator.cpp(349,71): error C2039: 'item_proxy': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.cpp(352,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\code\c++\nana-creator\src\creator.cpp(349,81): error C2143: syntax error: missing ',' before '&'
1>D:\code\c++\nana-creator\src\creator.cpp(353,70): error C2039: 'item_proxy': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.cpp(356,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\code\c++\nana-creator\src\creator.cpp(353,80): error C2143: syntax error: missing ',' before '&'
1>D:\code\c++\nana-creator\src\creator.cpp(357,71): error C2039: 'item_proxy': is not a member of 'nana::toolbar'
1>D:\code\c++\nana\include\nana\gui\widgets\toolbar.hpp(128): message : see declaration of 'nana::toolbar'
1>D:\code\c++\nana-creator\src\creator.cpp(360,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\code\c++\nana-creator\src\creator.cpp(357,81): error C2143: syntax error: missing ',' before '&'
1>Done building project "nana_creator.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Project Directory freature

Can you please implement Project Directory feature. let by default Nana Creator create it's projects in %UserProfile%NanaCreator\ folder, under (internal use) folder.

Support other platforms with CMake build script.

project(nana-creator)
cmake_minimum_required(VERSION 2.8)
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/src/ctrls)
include_directories(${CMAKE_SOURCE_DIR}/libs)
add_executable(nana-creator src/ctrls/button.cpp src/ctrls/combox.cpp src/ctrls/label.cpp src/ctrls/layout.cpp src/ctrls/panel.cpp src/ctrls/property.cpp src/ctrls/spinbox.cpp src/ctrls/textbox.cpp src/nana_extra/pg_items.cpp src/nana_extra/propgrid.cpp src/assetspanel.cpp src/codegenerator.cpp src/guimanager.cpp src/main.cpp src/namemanager.cpp src/objectspanel.cpp src/propertiespanel.cpp src/resizablecanvas.cpp libs/pugixml/pugiconfig.hpp libs/pugixml/pugixml.cpp libs/pugixml/pugixml.hpp )
set_property(TARGET nana-creator PROPERTY CXX_STANDARD 11)
target_link_libraries(nana-creator nana)

../../src/items_dialog.cpp not found

On build/cmake/CMakeLists.txt

add_executable(${PROJECT_NAME}
    ../../libs/pugixml/pugixml.cpp
    ../../src/filemanager.cpp
    ../../src/nana_extra/propertygrid.cpp
    ../../src/main.cpp
    ../../src/new_project.cpp
    ../../src/ctrls/categorize.cpp
    ../../src/assetspanel.cpp
    ../../src/ctrls/label.cpp
    ../../src/creator.cpp
    ../../src/ctrls/tabbar.cpp
    ../../src/ctrls/ctrl.cpp
    ../../src/propertygrid_helper.cpp
    ../../src/ctrls/toolbar.cpp
    ../../src/info.cpp
    ../../src/scrollablecanvas.cpp
    ../../src/objectspanel.cpp
    ../../src/ctrls/form.cpp
    ../../src/nana_extra/color_helper.cpp
    ../../src/propertiespanel.cpp
    ../../src/ctrls/box_model.cpp
    ../../src/ctrls/progress.cpp
    ../../src/ctrls/menubar.cpp
    ../../src/items_dialog.cpp  <-------------------------------- Not found
    ../../src/nana_extra/adi_place.cpp
    ../../src/ctrls/panel.cpp
    ../../src/ctrls/checkbox.cpp
    ../../src/ctrls/notebook.cpp
    ../../src/ctrls/button.cpp
    ../../src/ctrls/property.cpp
    ../../src/imagemanager.cpp
    ../../src/ctrls/combox.cpp
    ../../src/ctrls/textbox.cpp
    ../../src/codegenerator.cpp
    ../../src/ctrls/field.cpp
    ../../src/pgitems_creator.cpp
    ../../src/ctrls/picture.cpp
    ../../src/nana_extra/pgitems.cpp
    ../../src/ctrls/date_chooser.cpp
    ../../src/ctrls/spinbox.cpp
    ../../src/guimanager.cpp
    ../../src/ctrls/slider.cpp
    ../../src/ctrls/treebox.cpp
    ../../src/ctrls/custom.cpp
    ../../src/namemanager.cpp
    ../../src/ctrls/splitterbar.cpp
    ../../src/ctrls/listbox.cpp
    ../../src/ctrls/group.cpp
    ../../src/inifile.cpp
    ../../src/ctrls/page.cpp
    )```

Does items_dialog.cpp exist? Where it is located?
Cannot build `nana-creator` from command line using `cmake` because of this error

_Please fix it immediately :-(_

undefined reference to nana::adi_place when compiling

I cannot compile nana-creator with nana 1.7.4 and nana 1.7.3 under Ubuntu 20.04. It cannot find reference to adi_place. The errors messages are :
/usr/bin/ld : obj/Release/src/creator.o : dans la fonction « creator::_init_ctrls() » :
creator.cpp:(.text+0x2ee6) : référence indéfinie vers « nana::adi_place::bind(nana::detail::basic_window*) »
/usr/bin/ld : creator.cpp:(.text+0x2f0d) : référence indéfinie vers « nana::adi_place::scheme() »

I am compiling with Code::Blocks and adi_place.cpp is missing from the project.

nana-creator runs on raspberry pi

With two small fixes, Nana creator can run on raspberry pi. It is easy to make a portable program.
Nana Creator

1, Define a guimanager pointer as a global variable.

guimanager *g_gui_mgr;

int main()
{
   g_gui_mgr = new guimanager;

2, in guimanager::clear()

//Check if it is empty
if(_cut_copy_doc)
    _cut_copy_doc.reset();

[suggestion]Add control by objects tree

I am creating much forms. I found it's a bit difficult to move mouse to correct position to add controls if I have many fields.
If I placed a control in wrong position, I can only find it in objects tree, then cut and paste it in correct position.

I have a idea, is it possible to add a menu in objects tree to do this ? If so, we can first select the control in Assets window, then right click on nodes in Objects window to add a child.

SIGSEGV on adding layout

Output from valgrind, with command
valgrind --leak-check=full --log-file=file2.txt ./nanacreator

==10565== Memcheck, a memory error detector
==10565== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==10565== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==10565== Command: ./nanaDesigner
==10565== Parent PID: 8366
==10565== 
==10565== Conditional jump or move depends on uninitialised value(s)
==10565==    at 0x4F957F: propertiespanel::set(ctrls::properties_collection*) (propertiespanel.cpp:97)
==10565==    by 0x4E6B70: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (guimanager.cpp:358)
==10565==    by 0x4EA1BC: std::_Function_handler<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*), guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}>::_M_invoke(std::_Any_data const&, tree_node<std::shared_ptr<ctrls::ctrl_struct> >*&&) (functional:1857)
==10565==    by 0x4ECA22: std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (functional:2267)
==10565==    by 0x4ECA71: tree<std::shared_ptr<ctrls::ctrl_struct> >::_for_each(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*, std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>) (tree.h:253)
==10565==    by 0x4EC539: tree<std::shared_ptr<ctrls::ctrl_struct> >::for_each(std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>) (tree.h:231)
==10565==    by 0x4E6CCC: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (guimanager.cpp:367)
==10565==    by 0x4F2C00: objectspanel::objectspanel(nana::detail::window_handle_impl*, bool)::{lambda(nana::arg_treebox const&)#4}::operator()(nana::arg_treebox const&) const (objectspanel.cpp:77)
==10565==    by 0x4F75E6: std::_Function_handler<void (nana::arg_treebox const&), objectspanel::objectspanel(nana::detail::window_handle_impl*, bool)::{lambda(nana::arg_treebox const&)#4}>::_M_invoke(std::_Any_data const&, nana::arg_treebox const&) (functional:1871)
==10565==    by 0x5602C16: std::function<void (nana::arg_treebox const&)>::operator()(nana::arg_treebox const&) const (functional:2267)
==10565==    by 0x5600899: nana::basic_event<nana::arg_treebox>::emit(nana::arg_treebox const&, nana::detail::window_handle_impl*) (general_events.hpp:192)
==10565==    by 0x55FEBEA: nana::drawerbase::treebox::trigger::basic_implement<nana::drawerbase::treebox::trigger::item_renderer>::set_selected(nana::widgets::detail::tree_node<nana::drawerbase::treebox::trigger::treebox_node_type>*) (treebox.cpp:562)
==10565== 
==10565== Conditional jump or move depends on uninitialised value(s)
==10565==    at 0x547A407: nana::detail::msg_dispatcher::_m_read_queue(unsigned int, nana::detail::msg_packet_tag&, unsigned long) (msg_dispatcher.hpp:294)
==10565==    by 0x5479D9B: nana::detail::msg_dispatcher::dispatch(unsigned long) (msg_dispatcher.hpp:159)
==10565==    by 0x54769DF: nana::detail::platform_spec::msg_dispatch(nana::detail::native_window_handle_impl*) (platform_spec_posix.cpp:983)
==10565==    by 0x5544888: nana::detail::bedrock::pump_event(nana::detail::window_handle_impl*, bool) (bedrock_posix.cpp:1187)
==10565==    by 0x54E18CC: nana::exec() (wvl.cpp:96)
==10565==    by 0x4ED487: main (main.cpp:240)
==10565== 
==10565== Invalid read of size 8
==10565==    at 0x565514A: _ZN9__gnu_cxx13new_allocatorIN4nana7widgets9skeletons11text_editor12text_sectionEE9constructIS5_IRKS5_EEEvPT_DpOT0_ (new_allocator.h:120)
==10565==    by 0x564E7D9: _ZNSt16allocator_traitsISaIN4nana7widgets9skeletons11text_editor12text_sectionEEE9constructIS4_IRKS4_EEEvRS5_PT_DpOT0_ (alloc_traits.h:530)
==10565==    by 0x564E871: void std::vector<nana::widgets::skeletons::text_editor::text_section, std::allocator<nana::widgets::skeletons::text_editor::text_section> >::_M_emplace_back_aux<nana::widgets::skeletons::text_editor::text_section const&>(nana::widgets::skeletons::text_editor::text_section const&) (vector.tcc:416)
==10565==    by 0x564821A: void std::vector<nana::widgets::skeletons::text_editor::text_section, std::allocator<nana::widgets::skeletons::text_editor::text_section> >::emplace_back<nana::widgets::skeletons::text_editor::text_section const&>(nana::widgets::skeletons::text_editor::text_section const&) (vector.tcc:101)
==10565==    by 0x5644C42: nana::widgets::skeletons::text_editor::behavior_normal::line(unsigned long) const (text_editor.cpp:583)
==10565==    by 0x563E083: nana::widgets::skeletons::text_editor::_m_caret_to_coordinate(nana::basic_point<unsigned int>, bool) const (text_editor.cpp:2543)
==10565==    by 0x563A222: nana::widgets::skeletons::text_editor::move_caret(nana::basic_point<unsigned int> const&, bool) (text_editor.cpp:1668)
==10565==    by 0x5639097: nana::widgets::skeletons::text_editor::text_area(nana::rectangle const&) (text_editor.cpp:1276)
==10565==    by 0x55BF2F4: nana::drawerbase::combox::drawer_impl::text_area(nana::size const&) (combox.cpp:191)
==10565==    by 0x55BFD25: nana::drawerbase::combox::drawer_impl::draw() (combox.cpp:369)
==10565==    by 0x55BCA8D: nana::drawerbase::combox::trigger::refresh(nana::paint::graphics&) (combox.cpp:636)
==10565==    by 0x554DEDF: nana::detail::drawer::refresh() (drawer.cpp:300)
==10565==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==10565== 
==10565== 
==10565== Process terminating with default action of signal 11 (SIGSEGV)
==10565==  Access not within mapped region at address 0x0
==10565==    at 0x565514A: _ZN9__gnu_cxx13new_allocatorIN4nana7widgets9skeletons11text_editor12text_sectionEE9constructIS5_IRKS5_EEEvPT_DpOT0_ (new_allocator.h:120)
==10565==    by 0x564E7D9: _ZNSt16allocator_traitsISaIN4nana7widgets9skeletons11text_editor12text_sectionEEE9constructIS4_IRKS4_EEEvRS5_PT_DpOT0_ (alloc_traits.h:530)
==10565==    by 0x564E871: void std::vector<nana::widgets::skeletons::text_editor::text_section, std::allocator<nana::widgets::skeletons::text_editor::text_section> >::_M_emplace_back_aux<nana::widgets::skeletons::text_editor::text_section const&>(nana::widgets::skeletons::text_editor::text_section const&) (vector.tcc:416)
==10565==    by 0x564821A: void std::vector<nana::widgets::skeletons::text_editor::text_section, std::allocator<nana::widgets::skeletons::text_editor::text_section> >::emplace_back<nana::widgets::skeletons::text_editor::text_section const&>(nana::widgets::skeletons::text_editor::text_section const&) (vector.tcc:101)
==10565==    by 0x5644C42: nana::widgets::skeletons::text_editor::behavior_normal::line(unsigned long) const (text_editor.cpp:583)
==10565==    by 0x563E083: nana::widgets::skeletons::text_editor::_m_caret_to_coordinate(nana::basic_point<unsigned int>, bool) const (text_editor.cpp:2543)
==10565==    by 0x563A222: nana::widgets::skeletons::text_editor::move_caret(nana::basic_point<unsigned int> const&, bool) (text_editor.cpp:1668)
==10565==    by 0x5639097: nana::widgets::skeletons::text_editor::text_area(nana::rectangle const&) (text_editor.cpp:1276)
==10565==    by 0x55BF2F4: nana::drawerbase::combox::drawer_impl::text_area(nana::size const&) (combox.cpp:191)
==10565==    by 0x55BFD25: nana::drawerbase::combox::drawer_impl::draw() (combox.cpp:369)
==10565==    by 0x55BCA8D: nana::drawerbase::combox::trigger::refresh(nana::paint::graphics&) (combox.cpp:636)
==10565==    by 0x554DEDF: nana::detail::drawer::refresh() (drawer.cpp:300)
==10565==  If you believe this happened as a result of a stack
==10565==  overflow in your program's main thread (unlikely but
==10565==  possible), you can try to increase the size of the
==10565==  main thread stack using the --main-stacksize= flag.
==10565==  The main thread stack size used in this run was 8388608.
==10565== 
==10565== HEAP SUMMARY:
==10565==     in use at exit: 1,790,888 bytes in 6,858 blocks
==10565==   total heap usage: 22,272 allocs, 15,414 frees, 22,573,144 bytes allocated
==10565== 
==10565== 12 bytes in 1 blocks are definitely lost in loss record 88 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x641B379: XStringListToTextProperty (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==10565==    by 0x5555D70: nana::detail::native_interface::create_window(nana::detail::native_window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (native_window_interface.cpp:323)
==10565==    by 0x5563EE3: nana::detail::window_manager::create_root(nana::detail::basic_window*, bool, nana::rectangle, nana::appearance const&, nana::widget*) (window_manager.cpp:524)
==10565==    by 0x54FCEFA: nana::API::dev::create_window(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&, nana::widget*) (programming_interface.cpp:270)
==10565==    by 0x55C6EA8: nana::widget_object<nana::category::root_tag, nana::drawerbase::form::trigger, nana::detail::events_root_extension, nana::widget_geometrics>::widget_object(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (widget.hpp:338)
==10565==    by 0x55C6735: nana::drawerbase::form::form_base::form_base(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (form.cpp:35)
==10565==    by 0x55C69F3: nana::form::form(nana::rectangle const&, nana::appearance const&) (form.cpp:77)
==10565==    by 0x4ED96A: nana_creator::nana_creator() (main.cpp:37)
==10565==    by 0x4ED473: main (main.cpp:237)
==10565== 
==10565== 12 bytes in 1 blocks are definitely lost in loss record 89 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x6405CD8: XGetWindowProperty (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==10565==    by 0x640627D: XGetTextProperty (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==10565==    by 0x5557FDA: nana::detail::native_interface::window_caption[abi:cxx11](nana::detail::native_window_handle_impl*) (native_window_interface.cpp:1181)
==10565==    by 0x5563FF8: nana::detail::window_manager::create_root(nana::detail::basic_window*, bool, nana::rectangle, nana::appearance const&, nana::widget*) (window_manager.cpp:537)
==10565==    by 0x54FCEFA: nana::API::dev::create_window(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&, nana::widget*) (programming_interface.cpp:270)
==10565==    by 0x55C6EA8: nana::widget_object<nana::category::root_tag, nana::drawerbase::form::trigger, nana::detail::events_root_extension, nana::widget_geometrics>::widget_object(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (widget.hpp:338)
==10565==    by 0x55C6735: nana::drawerbase::form::form_base::form_base(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (form.cpp:35)
==10565==    by 0x55C69F3: nana::form::form(nana::rectangle const&, nana::appearance const&) (form.cpp:77)
==10565==    by 0x4ED96A: nana_creator::nana_creator() (main.cpp:37)
==10565==    by 0x4ED473: main (main.cpp:237)
==10565== 
==10565== 19 bytes in 1 blocks are definitely lost in loss record 267 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x641B379: XStringListToTextProperty (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==10565==    by 0x5557E82: nana::detail::native_interface::window_caption(nana::detail::native_window_handle_impl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (native_window_interface.cpp:1144)
==10565==    by 0x54FCE3B: nana::API::dev::window_caption(nana::detail::window_handle_impl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (programming_interface.cpp:262)
==10565==    by 0x55D7B20: nana::widget::_m_caption(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (widget.cpp:292)
==10565==    by 0x55D70A8: nana::widget::caption(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (widget.cpp:80)
==10565==    by 0x4EDAA9: nana_creator::nana_creator() (main.cpp:39)
==10565==    by 0x4ED473: main (main.cpp:237)
==10565== 
==10565== 20 (8 direct, 12 indirect) bytes in 1 blocks are definitely lost in loss record 269 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x641CAE2: XTextPropertyToStringList (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==10565==    by 0x5557FFA: nana::detail::native_interface::window_caption[abi:cxx11](nana::detail::native_window_handle_impl*) (native_window_interface.cpp:1185)
==10565==    by 0x5563FF8: nana::detail::window_manager::create_root(nana::detail::basic_window*, bool, nana::rectangle, nana::appearance const&, nana::widget*) (window_manager.cpp:537)
==10565==    by 0x54FCEFA: nana::API::dev::create_window(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&, nana::widget*) (programming_interface.cpp:270)
==10565==    by 0x55C6EA8: nana::widget_object<nana::category::root_tag, nana::drawerbase::form::trigger, nana::detail::events_root_extension, nana::widget_geometrics>::widget_object(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (widget.hpp:338)
==10565==    by 0x55C6735: nana::drawerbase::form::form_base::form_base(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (form.cpp:35)
==10565==    by 0x55C69F3: nana::form::form(nana::rectangle const&, nana::appearance const&) (form.cpp:77)
==10565==    by 0x4ED96A: nana_creator::nana_creator() (main.cpp:37)
==10565==    by 0x4ED473: main (main.cpp:237)
==10565== 
==10565== 24 bytes in 1 blocks are definitely lost in loss record 379 of 1,398
==10565==    at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x6F90822: FcPatternCreate (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F8FA95: FcNameParse (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x548D8DB: nana::font_factory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, nana::detail::font_style const&, std::experimental::filesystem::v1::__cxx11::path) (platform_abstraction.cpp:337)
==10565==    by 0x548DAFF: nana::platform_abstraction::make_font(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double, nana::detail::font_style const&) (platform_abstraction.cpp:364)
==10565==    by 0x548D740: nana::platform_abstraction::default_font(std::shared_ptr<nana::font_interface> const&) (platform_abstraction.cpp:267)
==10565==    by 0x5670799: nana::paint::font::font() (graphics.cpp:76)
==10565==    by 0x5675714: nana::paint::graphics::implementation::implementation() (in /usr/local/lib/libnana.so)
==10565==    by 0x5670EEB: nana::paint::graphics::graphics() (graphics.cpp:216)
==10565==    by 0x554D740: nana::detail::drawer::drawer() (drawer.cpp:153)
==10565==    by 0x5549C19: nana::detail::basic_window::basic_window(nana::detail::basic_window*, std::unique_ptr<nana::detail::widget_notifier_interface, std::default_delete<nana::detail::widget_notifier_interface> >&&, nana::category::root_tag**) (basic_window.cpp:256)
==10565==    by 0x5563F34: nana::detail::window_manager::create_root(nana::detail::basic_window*, bool, nana::rectangle, nana::appearance const&, nana::widget*) (window_manager.cpp:527)
==10565== 
==10565== 32 bytes in 1 blocks are definitely lost in loss record 469 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x55D8902: nana::drawerbase::textbox::drawer::attached(nana::widget&, nana::paint::graphics&) (textbox.cpp:73)
==10565==    by 0x554DFB5: nana::detail::drawer::attached(nana::widget&, nana::drawer_trigger&) (drawer.cpp:319)
==10565==    by 0x54FCC54: nana::API::dev::attach_drawer(nana::widget&, nana::drawer_trigger&) (programming_interface.cpp:235)
==10565==    by 0x4C55C2: nana::widget_object<nana::category::widget_tag, nana::drawerbase::textbox::drawer, nana::drawerbase::textbox::textbox_events, nana::widgets::skeletons::text_editor_scheme>::create(nana::detail::window_handle_impl*, nana::rectangle const&, bool) (widget.hpp:206)
==10565==    by 0x4BD668: nana::pg_string::create(nana::detail::window_handle_impl*) (pg_items.cpp:84)
==10565==    by 0x4BDB90: nana::pg_string_int::create(nana::detail::window_handle_impl*) (pg_items.cpp:135)
==10565==    by 0x4CA0EA: nana::drawerbase::propertygrid::cat_proxy::append(std::unique_ptr<nana::drawerbase::propertygrid::pgitem, std::default_delete<nana::drawerbase::propertygrid::pgitem> >) (propgrid.cpp:1328)
==10565==    by 0x4F9D9E: propertiespanel::set(ctrls::properties_collection*) (propertiespanel.cpp:169)
==10565==    by 0x4E6B70: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (guimanager.cpp:358)
==10565==    by 0x4EA1BC: std::_Function_handler<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*), guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}>::_M_invoke(std::_Any_data const&, tree_node<std::shared_ptr<ctrls::ctrl_struct> >*&&) (functional:1857)
==10565== 
==10565== 32 bytes in 1 blocks are definitely lost in loss record 470 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x55D8902: nana::drawerbase::textbox::drawer::attached(nana::widget&, nana::paint::graphics&) (textbox.cpp:73)
==10565==    by 0x554DFB5: nana::detail::drawer::attached(nana::widget&, nana::drawer_trigger&) (drawer.cpp:319)
==10565==    by 0x54FCC54: nana::API::dev::attach_drawer(nana::widget&, nana::drawer_trigger&) (programming_interface.cpp:235)
==10565==    by 0x4C55C2: nana::widget_object<nana::category::widget_tag, nana::drawerbase::textbox::drawer, nana::drawerbase::textbox::textbox_events, nana::widgets::skeletons::text_editor_scheme>::create(nana::detail::window_handle_impl*, nana::rectangle const&, bool) (widget.hpp:206)
==10565==    by 0x4BD668: nana::pg_string::create(nana::detail::window_handle_impl*) (pg_items.cpp:84)
==10565==    by 0x4BDDB0: nana::pg_string_uint::create(nana::detail::window_handle_impl*) (pg_items.cpp:189)
==10565==    by 0x4CA0EA: nana::drawerbase::propertygrid::cat_proxy::append(std::unique_ptr<nana::drawerbase::propertygrid::pgitem, std::default_delete<nana::drawerbase::propertygrid::pgitem> >) (propgrid.cpp:1328)
==10565==    by 0x4F9E7A: propertiespanel::set(ctrls::properties_collection*) (propertiespanel.cpp:173)
==10565==    by 0x4E6B70: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (guimanager.cpp:358)
==10565==    by 0x4EA1BC: std::_Function_handler<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*), guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}>::_M_invoke(std::_Any_data const&, tree_node<std::shared_ptr<ctrls::ctrl_struct> >*&&) (functional:1857)
==10565== 
==10565== 40 bytes in 1 blocks are definitely lost in loss record 501 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x55B416A: nana::drawerbase::checkbox::drawer::drawer() (checkbox.cpp:35)
==10565==    by 0x55B7277: nana::widget_object<nana::category::widget_tag, nana::drawerbase::checkbox::drawer, nana::drawerbase::checkbox::events_type, nana::widget_geometrics>::widget_object() (widget.hpp:181)
==10565==    by 0x55B487B: nana::checkbox::checkbox() (checkbox.cpp:125)
==10565==    by 0x4FBAA4: nana::pg_check::pg_check(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (pg_items.h:127)
==10565==    by 0x4FA147: propertiespanel::set(ctrls::properties_collection*) (propertiespanel.cpp:188)
==10565==    by 0x4E6B70: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (guimanager.cpp:358)
==10565==    by 0x4EA1BC: std::_Function_handler<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*), guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}>::_M_invoke(std::_Any_data const&, tree_node<std::shared_ptr<ctrls::ctrl_struct> >*&&) (functional:1857)
==10565==    by 0x4ECA22: std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (functional:2267)
==10565==    by 0x4ECA71: tree<std::shared_ptr<ctrls::ctrl_struct> >::_for_each(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*, std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>) (tree.h:253)
==10565==    by 0x4EC539: tree<std::shared_ptr<ctrls::ctrl_struct> >::for_each(std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>) (tree.h:231)
==10565== 
==10565== 64 bytes in 2 blocks are definitely lost in loss record 816 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x55D8902: nana::drawerbase::textbox::drawer::attached(nana::widget&, nana::paint::graphics&) (textbox.cpp:73)
==10565==    by 0x554DFB5: nana::detail::drawer::attached(nana::widget&, nana::drawer_trigger&) (drawer.cpp:319)
==10565==    by 0x54FCC54: nana::API::dev::attach_drawer(nana::widget&, nana::drawer_trigger&) (programming_interface.cpp:235)
==10565==    by 0x4C55C2: nana::widget_object<nana::category::widget_tag, nana::drawerbase::textbox::drawer, nana::drawerbase::textbox::textbox_events, nana::widgets::skeletons::text_editor_scheme>::create(nana::detail::window_handle_impl*, nana::rectangle const&, bool) (widget.hpp:206)
==10565==    by 0x4BF5C2: nana::pg_color::create(nana::detail::window_handle_impl*) (pg_items.cpp:418)
==10565==    by 0x4CA0EA: nana::drawerbase::propertygrid::cat_proxy::append(std::unique_ptr<nana::drawerbase::propertygrid::pgitem, std::default_delete<nana::drawerbase::propertygrid::pgitem> >) (propgrid.cpp:1328)
==10565==    by 0x4FA4E8: propertiespanel::set(ctrls::properties_collection*) (propertiespanel.cpp:206)
==10565==    by 0x4E6B70: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (guimanager.cpp:358)
==10565==    by 0x4EA1BC: std::_Function_handler<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*), guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}>::_M_invoke(std::_Any_data const&, tree_node<std::shared_ptr<ctrls::ctrl_struct> >*&&) (functional:1857)
==10565==    by 0x4ECA22: std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (functional:2267)
==10565== 
==10565== 80 bytes in 2 blocks are definitely lost in loss record 870 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x55B416A: nana::drawerbase::checkbox::drawer::drawer() (checkbox.cpp:35)
==10565==    by 0x55B7277: nana::widget_object<nana::category::widget_tag, nana::drawerbase::checkbox::drawer, nana::drawerbase::checkbox::events_type, nana::widget_geometrics>::widget_object() (widget.hpp:181)
==10565==    by 0x55B487B: nana::checkbox::checkbox() (checkbox.cpp:125)
==10565==    by 0x4BEC6B: nana::pg_color::pg_color(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (pg_items.cpp:359)
==10565==    by 0x4FA4B6: propertiespanel::set(ctrls::properties_collection*) (propertiespanel.cpp:206)
==10565==    by 0x4E6B70: guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (guimanager.cpp:358)
==10565==    by 0x4EA1BC: std::_Function_handler<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*), guimanager::clickobjectspanel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)#1}>::_M_invoke(std::_Any_data const&, tree_node<std::shared_ptr<ctrls::ctrl_struct> >*&&) (functional:1857)
==10565==    by 0x4ECA22: std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>::operator()(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*) const (functional:2267)
==10565==    by 0x4ECA71: tree<std::shared_ptr<ctrls::ctrl_struct> >::_for_each(tree_node<std::shared_ptr<ctrls::ctrl_struct> >*, std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>) (tree.h:253)
==10565==    by 0x4EC539: tree<std::shared_ptr<ctrls::ctrl_struct> >::for_each(std::function<bool (tree_node<std::shared_ptr<ctrls::ctrl_struct> >*)>) (tree.h:231)
==10565== 
==10565== 288 bytes in 1 blocks are possibly lost in loss record 1,164 of 1,398
==10565==    at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x40138A4: allocate_dtv (dl-tls.c:322)
==10565==    by 0x40138A4: _dl_allocate_tls (dl-tls.c:539)
==10565==    by 0x693926E: allocate_stack (allocatestack.c:588)
==10565==    by 0x693926E: pthread_create@@GLIBC_2.2.5 (pthread_create.c:539)
==10565==    by 0x57261D2: std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (in /usr/local/lib/libnana.so)
==10565==    by 0x547B94F: std::thread::thread<nana::detail::msg_dispatcher::insert(unsigned long)::{lambda()#1}>(nana::detail::msg_dispatcher::insert(unsigned long)::{lambda()#1}&&) (thread:137)
==10565==    by 0x5479A0F: nana::detail::msg_dispatcher::insert(unsigned long) (msg_dispatcher.hpp:116)
==10565==    by 0x5476977: nana::detail::platform_spec::msg_insert(nana::detail::native_window_handle_impl*) (platform_spec_posix.cpp:973)
==10565==    by 0x555617C: nana::detail::native_interface::create_window(nana::detail::native_window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (native_window_interface.cpp:403)
==10565==    by 0x5563EE3: nana::detail::window_manager::create_root(nana::detail::basic_window*, bool, nana::rectangle, nana::appearance const&, nana::widget*) (window_manager.cpp:524)
==10565==    by 0x54FCEFA: nana::API::dev::create_window(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&, nana::widget*) (programming_interface.cpp:270)
==10565==    by 0x55C6EA8: nana::widget_object<nana::category::root_tag, nana::drawerbase::form::trigger, nana::detail::events_root_extension, nana::widget_geometrics>::widget_object(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (widget.hpp:338)
==10565==    by 0x55C6735: nana::drawerbase::form::form_base::form_base(nana::detail::window_handle_impl*, bool, nana::rectangle const&, nana::appearance const&) (form.cpp:35)
==10565== 
==10565== 288 (256 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record 1,165 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x6F910B9: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F91829: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F92D4A: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F9819B: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x7A7DA7B: ??? (in /lib/x86_64-linux-gnu/libexpat.so.1.6.0)
==10565==    by 0x7A7E38B: ??? (in /lib/x86_64-linux-gnu/libexpat.so.1.6.0)
==10565==    by 0x7A7FCAD: ??? (in /lib/x86_64-linux-gnu/libexpat.so.1.6.0)
==10565==    by 0x7A80404: ??? (in /lib/x86_64-linux-gnu/libexpat.so.1.6.0)
==10565==    by 0x7A8270A: XML_ParseBuffer (in /lib/x86_64-linux-gnu/libexpat.so.1.6.0)
==10565==    by 0x6F9752A: FcConfigParseAndLoad (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F97836: FcConfigParseAndLoad (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565== 
==10565== 322 (256 direct, 66 indirect) bytes in 1 blocks are definitely lost in loss record 1,175 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x6F910B9: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F91829: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F91C21: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F8FAE8: FcNameParse (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x548D8DB: nana::font_factory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, nana::detail::font_style const&, std::experimental::filesystem::v1::__cxx11::path) (platform_abstraction.cpp:337)
==10565==    by 0x548DAFF: nana::platform_abstraction::make_font(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double, nana::detail::font_style const&) (platform_abstraction.cpp:364)
==10565==    by 0x548D740: nana::platform_abstraction::default_font(std::shared_ptr<nana::font_interface> const&) (platform_abstraction.cpp:267)
==10565==    by 0x5670799: nana::paint::font::font() (graphics.cpp:76)
==10565==    by 0x5675714: nana::paint::graphics::implementation::implementation() (in /usr/local/lib/libnana.so)
==10565==    by 0x5670EEB: nana::paint::graphics::graphics() (graphics.cpp:216)
==10565==    by 0x554D740: nana::detail::drawer::drawer() (drawer.cpp:153)
==10565== 
==10565== 416 (256 direct, 160 indirect) bytes in 1 blocks are definitely lost in loss record 1,235 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x6F910B9: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F91829: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F91BEB: FcPatternAddDouble (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6723050: ??? (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x672388C: ??? (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x672325E: ??? (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x67233A4: ??? (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x67237AD: XftDefaultHasRender (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x6723C8F: XftDefaultSubstitute (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x6726344: XftFontMatch (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x548D910: nana::font_factory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, nana::detail::font_style const&, std::experimental::filesystem::v1::__cxx11::path) (platform_abstraction.cpp:339)
==10565== 
==10565== 1,512 bytes in 3 blocks are definitely lost in loss record 1,326 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x4C7F72: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:104)
==10565==    by 0x4C7E16: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) (alloc_traits.h:491)
==10565==    by 0x4C7C09: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>, (__gnu_cxx::_Lock_policy)2> >&) (allocated_ptr.h:102)
==10565==    by 0x4C7AAA: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>>(std::_Sp_make_shared_tag, nana::drawerbase::checkbox::events_type*, std::allocator<nana::drawerbase::checkbox::events_type> const&) (shared_ptr_base.h:615)
==10565==    by 0x4C796F: std::__shared_ptr<nana::drawerbase::checkbox::events_type, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<nana::drawerbase::checkbox::events_type>>(std::_Sp_make_shared_tag, std::allocator<nana::drawerbase::checkbox::events_type> const&) (shared_ptr_base.h:1097)
==10565==    by 0x4C7891: std::shared_ptr<nana::drawerbase::checkbox::events_type>::shared_ptr<std::allocator<nana::drawerbase::checkbox::events_type>>(std::_Sp_make_shared_tag, std::allocator<nana::drawerbase::checkbox::events_type> const&) (shared_ptr.h:319)
==10565==    by 0x4C77AF: std::shared_ptr<nana::drawerbase::checkbox::events_type> std::allocate_shared<nana::drawerbase::checkbox::events_type, std::allocator<nana::drawerbase::checkbox::events_type>>(std::allocator<nana::drawerbase::checkbox::events_type> const&) (shared_ptr.h:620)
==10565==    by 0x4C76B8: std::shared_ptr<nana::drawerbase::checkbox::events_type> std::make_shared<nana::drawerbase::checkbox::events_type>() (shared_ptr.h:636)
==10565==    by 0x4C7624: nana::widget_object<nana::category::widget_tag, nana::drawerbase::checkbox::drawer, nana::drawerbase::checkbox::events_type, nana::widget_geometrics>::_m_notify_destroy() (widget.hpp:249)
==10565==    by 0x55D8162: nana::widget::inner_widget_notifier::destroy() (widget.cpp:41)
==10565== 
==10565== 2,208 bytes in 4 blocks are definitely lost in loss record 1,339 of 1,398
==10565==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x56AC267: operator new(unsigned long) (in /usr/local/lib/libnana.so)
==10565==    by 0x4BC890: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:104)
==10565==    by 0x4BC732: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) (alloc_traits.h:491)
==10565==    by 0x4BC525: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>, (__gnu_cxx::_Lock_policy)2> >&) (allocated_ptr.h:102)
==10565==    by 0x4BC3C6: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>>(std::_Sp_make_shared_tag, nana::drawerbase::textbox::textbox_events*, std::allocator<nana::drawerbase::textbox::textbox_events> const&) (shared_ptr_base.h:615)
==10565==    by 0x4BC28B: std::__shared_ptr<nana::drawerbase::textbox::textbox_events, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<nana::drawerbase::textbox::textbox_events>>(std::_Sp_make_shared_tag, std::allocator<nana::drawerbase::textbox::textbox_events> const&) (shared_ptr_base.h:1097)
==10565==    by 0x4BC1AD: std::shared_ptr<nana::drawerbase::textbox::textbox_events>::shared_ptr<std::allocator<nana::drawerbase::textbox::textbox_events>>(std::_Sp_make_shared_tag, std::allocator<nana::drawerbase::textbox::textbox_events> const&) (shared_ptr.h:319)
==10565==    by 0x4BC0CB: std::shared_ptr<nana::drawerbase::textbox::textbox_events> std::allocate_shared<nana::drawerbase::textbox::textbox_events, std::allocator<nana::drawerbase::textbox::textbox_events>>(std::allocator<nana::drawerbase::textbox::textbox_events> const&) (shared_ptr.h:620)
==10565==    by 0x4BBFC2: std::shared_ptr<nana::drawerbase::textbox::textbox_events> std::make_shared<nana::drawerbase::textbox::textbox_events>() (shared_ptr.h:636)
==10565==    by 0x4BBF2E: nana::widget_object<nana::category::widget_tag, nana::drawerbase::textbox::drawer, nana::drawerbase::textbox::textbox_events, nana::widgets::skeletons::text_editor_scheme>::_m_notify_destroy() (widget.hpp:249)
==10565==    by 0x55D8162: nana::widget::inner_widget_notifier::destroy() (widget.cpp:41)
==10565== 
==10565== 2,567 (768 direct, 1,799 indirect) bytes in 1 blocks are definitely lost in loss record 1,342 of 1,398
==10565==    at 0x4C2FD5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10565==    by 0x6F9100A: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F9169D: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F8E765: FcFontRenderPrepare (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x6F8EA4F: FcFontMatch (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0)
==10565==    by 0x672635A: XftFontMatch (in /usr/lib/x86_64-linux-gnu/libXft.so.2.3.2)
==10565==    by 0x548D910: nana::font_factory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, nana::detail::font_style const&, std::experimental::filesystem::v1::__cxx11::path) (platform_abstraction.cpp:339)
==10565==    by 0x548DAFF: nana::platform_abstraction::make_font(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double, nana::detail::font_style const&) (platform_abstraction.cpp:364)
==10565==    by 0x548D740: nana::platform_abstraction::default_font(std::shared_ptr<nana::font_interface> const&) (platform_abstraction.cpp:267)
==10565==    by 0x5670799: nana::paint::font::font() (graphics.cpp:76)
==10565==    by 0x5675714: nana::paint::graphics::implementation::implementation() (in /usr/local/lib/libnana.so)
==10565==    by 0x5670EEB: nana::paint::graphics::graphics() (graphics.cpp:216)
==10565== 
==10565== LEAK SUMMARY:
==10565==    definitely lost: 5,579 bytes in 23 blocks
==10565==    indirectly lost: 2,069 bytes in 66 blocks
==10565==      possibly lost: 288 bytes in 1 blocks
==10565==    still reachable: 1,782,952 bytes in 6,768 blocks
==10565==         suppressed: 0 bytes in 0 blocks
==10565== Reachable blocks (those to which a pointer was found) are not shown.
==10565== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==10565== 
==10565== For counts of detected and suppressed errors, rerun with: -v
==10565== Use --track-origins=yes to see where uninitialised values come from
==10565== ERROR SUMMARY: 111 errors from 20 contexts (suppressed: 0 from 0)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.