From 417fd9e08411a2010280b13489b48766a1b5e790 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 02:14:31 +0100 Subject: [PATCH 01/42] try clang? --- .travis.yml | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 60697f01..fe8d26f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,10 +14,11 @@ matrix: packages: - g++-5 - libjpeg8-dev + - libpng-dev - libasound2-dev - alsa-utils - alsa-oss - sources: &sources + sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise - llvm-toolchain-precise-3.7 @@ -28,10 +29,55 @@ matrix: packages: - g++-4.9 - libjpeg8-dev + - libpng-dev - libasound2-dev - alsa-utils - alsa-oss - sources: *sources + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise + - llvm-toolchain-precise-3.7 + - llvm-toolchain-precise-3.6 + - env: CXX=clang++-3.8 CC=clang-3.8 + addons: + apt: + packages: + - clang-3.8 + - g++-5 + - libjpeg8-dev + - libpng-dev + - libasound2-dev + - alsa-utils + - alsa-oss + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise + - env: CXX=clang++-3.7 CC=clang-3.7 + addons: + apt: + packages: + - clang-3.7 + - libjpeg8-dev + - libpng-dev + - libasound2-dev + - alsa-utils + - alsa-oss + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.7 + - env: CXX=clang++-3.6 CC=clang-3.6 + addons: + apt: + packages: + - clang-3.6 + - libjpeg8-dev + - libpng-dev + - libasound2-dev + - alsa-utils + - alsa-oss + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.6 before_install: - export PATH="$HOME/bin:$PATH" @@ -47,5 +93,6 @@ before_script : - cd bld script: - - cmake -G"Unix Makefiles" .. -DENABLE_JPEG=ON + - cmake -G"Unix Makefiles" .. -DENABLE_JPEG=ON -DENABLE_PNG=OFF + #-DENABLE_JPEG=ON -DENABLE_PNG=ON - make From 782d6f8aa92261cf285c1314f44d868221b559e7 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 02:19:49 +0100 Subject: [PATCH 02/42] static link libstd --- CMakeLists.txt | 12 +++++++++++- README.md | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b30ebcea..74033887 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,16 @@ if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + # enable static linkage + if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG AND NOT MINGW) + #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") + endif () + + if (APPLE AND COMPILER_IS_CLANG) + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++") + endif () + # move this to the end ?? if(BIICODE) # prepare BII_LIB_SRC @@ -48,7 +58,7 @@ add_definitions(-DNANA_IGNORE_CONF) if(WIN32) add_definitions(-DWIN32) - #Global MSVC definitions + #Global MSVC definitions. You may prefer the hand-tuned sln and projects from the nana repository. if(MSVC) option(WIN32_USE_MP "Set to ON to build nana with the /MP option (Visual Studio 2005 and above)." ON) # ?? diff --git a/README.md b/README.md index 240581f8..bcb961ff 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# Nana C++ Library [![BiiCode build status](https://webapi.biicode.com/v1/badges/qiangwu/qiangwu/nana/master)](https://www.biicode.com/qiangwu/nana) [![TravisCI build status](https://travis-ci.org/cnjinhao/nana.svg)](https://travis-ci.org/cnjinhao/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +# Nana C++ Library +[![BiiCode build status](https://webapi.biicode.com/v1/badges/qiangwu/qiangwu/nana/master)](https://www.biicode.com/qiangwu/nana) [![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. From 342061b933b171c99da76bd0b3f1a101119a8a05 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 02:35:27 +0100 Subject: [PATCH 03/42] test demos --- .travis.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index fe8d26f7..237feade 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,9 +20,6 @@ matrix: - alsa-oss sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise - - llvm-toolchain-precise-3.7 - - llvm-toolchain-precise-3.6 - env: CXX=g++-4.9 CC=gcc-4.9 addons: apt: @@ -35,9 +32,6 @@ matrix: - alsa-oss sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise - - llvm-toolchain-precise-3.7 - - llvm-toolchain-precise-3.6 - env: CXX=clang++-3.8 CC=clang-3.8 addons: apt: @@ -80,6 +74,7 @@ matrix: - llvm-toolchain-precise-3.6 before_install: + - git clone --depth=50 --branch=master https://github.com/qPCR4vir/nana-demo.git nana-demo - export PATH="$HOME/bin:$PATH" - mkdir ~/bin - wget --no-check-certificate --no-clobber -O /tmp/tools/cmake https://cmake.org/files/v3.4/cmake-3.4.0-rc3-Linux-x86_64.sh || true @@ -93,6 +88,6 @@ before_script : - cd bld script: - - cmake -G"Unix Makefiles" .. -DENABLE_JPEG=ON -DENABLE_PNG=OFF + - cmake -G"Unix Makefiles" .. -DENABLE_JPEG=ON -DENABLE_PNG=OFF -DBUILD_NANA_DEMOS=ON #-DENABLE_JPEG=ON -DENABLE_PNG=ON - make From ee77b400fff7643335c4e05a853977b8a4d96cfd Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 02:35:44 +0100 Subject: [PATCH 04/42] messages --- CMakeLists.txt | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 74033887..ca43d11b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,20 +19,11 @@ option(CMAKE_VERBOSE_PREPROCESSOR "Show annoying debug messages during compilati option(CMAKE_STOP_VERBOSE_PREPROCESSOR "Stop compilation after showing the annoying debug messages." ON) option(BUILD_NANA_DEMOS "Build all the demos form the nana_demo repository." OFF) -# set compile flags -if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") -endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") +message(" ---> Running cmake .... ") + message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) + message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) + message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) - # enable static linkage - if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG AND NOT MINGW) - #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") - set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") - endif () - - if (APPLE AND COMPILER_IS_CLANG) - set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++") - endif () # move this to the end ?? if(BIICODE) @@ -201,6 +192,8 @@ install(DIRECTORY ${NANA_INCLUDE_DIR}/nana DESTINATION include) set_property( TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14 ) + + if (BUILD_NANA_DEMOS) set (CMAKE_INSTALL_PREFIX ${DEMO_BIN}) set(DEMO_BIN ${NANA_SOURCE_DIR}../nana-demo/bin) @@ -265,3 +258,31 @@ if (BUILD_NANA_DEMOS) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) + +# set compile flags +if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall") + else("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") + endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) + message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) + message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) +endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + + # enable static linkage + if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND NOT MINGW) + #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + set(CMAKE_EXE_LINKER_FLAGS " -stdlib=libstdc++ -static-libgcc -static-libstdc++") + + endif () + + if (APPLE AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++") + endif () + +message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) +message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) +message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) +message ( "CMAKE_COMPILER_IS_GNUCXX= " ${CMAKE_COMPILER_IS_GNUCXX}) From 4776ad25b36d55c91a50e8c65df9cef2905d734c Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Wed, 10 Feb 2016 22:59:35 +0100 Subject: [PATCH 05/42] temporally eliminate outdated biicode --- README.md | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/README.md b/README.md index bcb961ff..6ba6aba5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Nana C++ Library -[![BiiCode build status](https://webapi.biicode.com/v1/badges/qiangwu/qiangwu/nana/master)](https://www.biicode.com/qiangwu/nana) [![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +[![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. @@ -14,21 +14,6 @@ Jinhao, [Ariel Viña Rodríguez]. [Ariel Viña Rodríguez]: http://qpcr4vir.github.io/ -## Biicode -Nana is available in biicode, download biicode and try the nana example: - -``` -> mkdir try-nana -> cd try-nana -> bii init -> bii open qiangwu/nana-example -> bii find -> bii build -> cd bin -``` - -Run it! All dependencies will be resovled automatically by biicode! Amazing, isn't it? - ## Support The best way to get help with Nana library is by visiting http://nanapro.org/help.htm From 9bfead25356a39023e2b2738884bdada7239b26e Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Wed, 10 Feb 2016 23:18:29 +0100 Subject: [PATCH 06/42] left only one clang version and allow_failures: --- .travis.yml | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/.travis.yml b/.travis.yml index 237feade..7111b440 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,6 +32,7 @@ matrix: - alsa-oss sources: - ubuntu-toolchain-r-test + allow_failures: - env: CXX=clang++-3.8 CC=clang-3.8 addons: apt: @@ -46,32 +47,6 @@ matrix: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise - - env: CXX=clang++-3.7 CC=clang-3.7 - addons: - apt: - packages: - - clang-3.7 - - libjpeg8-dev - - libpng-dev - - libasound2-dev - - alsa-utils - - alsa-oss - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.7 - - env: CXX=clang++-3.6 CC=clang-3.6 - addons: - apt: - packages: - - clang-3.6 - - libjpeg8-dev - - libpng-dev - - libasound2-dev - - alsa-utils - - alsa-oss - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.6 before_install: - git clone --depth=50 --branch=master https://github.com/qPCR4vir/nana-demo.git nana-demo From 05e3162969554956e438ee47a179d419e76887da Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Wed, 10 Feb 2016 23:29:32 +0100 Subject: [PATCH 07/42] allow_failures: --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7111b440..2652914b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,8 @@ matrix: - alsa-oss sources: - ubuntu-toolchain-r-test - allow_failures: + + allow_failures: - env: CXX=clang++-3.8 CC=clang-3.8 addons: apt: From b2ca5d7544552cfb29e1a7b12f435d2433e96b67 Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Wed, 10 Feb 2016 23:54:37 +0100 Subject: [PATCH 08/42] temporally eliminate outdated biicode from cmake --- CMakeLists.txt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ca43d11b..4f5b6e03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,17 +24,6 @@ message(" ---> Running cmake .... ") message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) - -# move this to the end ?? -if(BIICODE) - # prepare BII_LIB_SRC - set(LIB_SRC ${BII_LIB_SRC}) - - add_biicode_targets() - - return() -endif(BIICODE) - project(nana) cmake_minimum_required(VERSION 2.8) From 40115f043dec1f9dcd7c2b124b2f8885bcec6cc2 Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Thu, 11 Feb 2016 00:00:14 +0100 Subject: [PATCH 09/42] Build FreeMe only on Windows --- CMakeLists.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f5b6e03..3eb78781 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ add_definitions(-DNANA_IGNORE_CONF) if(WIN32) add_definitions(-DWIN32) - + option(BUILD_FreeMe "Build FreeMe only on Windows." ON) #Global MSVC definitions. You may prefer the hand-tuned sln and projects from the nana repository. if(MSVC) option(WIN32_USE_MP "Set to ON to build nana with the /MP option (Visual Studio 2005 and above)." ON) @@ -197,10 +197,12 @@ if (BUILD_NANA_DEMOS) target_link_libraries(calculator ${PROJECT_NAME}) install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN}) - add_executable(FreeMe ../nana-demo/FreeMe.cpp) - set_property( TARGET FreeMe PROPERTY CXX_STANDARD 14 ) - target_link_libraries(FreeMe ${PROJECT_NAME}) - install(TARGETS FreeMe RUNTIME DESTINATION &{DEMO_BIN}) + if (BUILD_FreeMe) + add_executable(FreeMe ../nana-demo/FreeMe.cpp) + set_property( TARGET FreeMe PROPERTY CXX_STANDARD 14 ) + target_link_libraries(FreeMe ${PROJECT_NAME}) + install(TARGETS FreeMe RUNTIME DESTINATION &{DEMO_BIN}) + endif (BUILD_FreeMe) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) From b03e1f6e69b23cea7b7bd1ffcc49734f05a8e96e Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Thu, 11 Feb 2016 00:12:20 +0100 Subject: [PATCH 10/42] =?UTF-8?q?FIX=20g++-5:=20error:=20unrecognized=20co?= =?UTF-8?q?mmand=20line=20option=20=E2=80=98-stdlib=3Dlibstdc++=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3eb78781..1b9c9cc0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -265,7 +265,7 @@ endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") # enable static linkage if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND NOT MINGW) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") - set(CMAKE_EXE_LINKER_FLAGS " -stdlib=libstdc++ -static-libgcc -static-libstdc++") + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") endif () From c8235b59ec1370dce37f1e854c3c2a66495d52ca Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Thu, 11 Feb 2016 15:37:47 +0100 Subject: [PATCH 11/42] add trivial appveyor.yml --- appveyor.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..4305ba46 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,4 @@ +version: 1.0.{build} +build: + project: build\vc2015\nana.sln + verbosity: minimal \ No newline at end of file From a844348c9a8d27165a2cf9f690cb9dad9667394f Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Thu, 11 Feb 2016 15:30:02 +0100 Subject: [PATCH 12/42] AppVeyor CI on Windows (cherry picked from commit 4ffbaae) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ba6aba5..fc710cec 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Nana C++ Library -[![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +[Linux ![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [Windows ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h/branch/master?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana/branch/master) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. From 8a4ba7587f06240c59e6ba47a0c9b2c71831b348 Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Thu, 11 Feb 2016 15:51:15 +0100 Subject: [PATCH 13/42] local badge AppVeyor, not master brench --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fc710cec..0caeac3f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Nana C++ Library -[Linux ![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [Windows ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h/branch/master?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana/branch/master) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +[Linux ![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [Windows ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. From a6785e15cbec2b8563ad84d180e4fda1836005ce Mon Sep 17 00:00:00 2001 From: nabijaczleweli-vm Date: Thu, 11 Feb 2016 16:51:36 +0100 Subject: [PATCH 14/42] Install X11 --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2652914b..7125186c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ matrix: - libasound2-dev - alsa-utils - alsa-oss + - libx11-dev sources: - ubuntu-toolchain-r-test - env: CXX=g++-4.9 CC=gcc-4.9 @@ -30,6 +31,7 @@ matrix: - libasound2-dev - alsa-utils - alsa-oss + - libx11-dev sources: - ubuntu-toolchain-r-test @@ -39,12 +41,12 @@ matrix: apt: packages: - clang-3.8 - - g++-5 - libjpeg8-dev - libpng-dev - libasound2-dev - alsa-utils - alsa-oss + - libx11-dev sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise From 9bbc72b8769af15b44406e02df6db07831d536c2 Mon Sep 17 00:00:00 2001 From: nabijaczleweli-vm Date: Thu, 11 Feb 2016 17:10:44 +0100 Subject: [PATCH 15/42] Link to X11 --- CMakeLists.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b9c9cc0..3568bfe8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,52 +189,52 @@ if (BUILD_NANA_DEMOS) set(CMAKE_INSTALL_PREFIX ) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME}) + target_link_libraries(file_explorer ${PROJECT_NAME} X11) install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) add_executable(calculator ../nana-demo/calculator.cpp) set_property( TARGET calculator PROPERTY CXX_STANDARD 14 ) - target_link_libraries(calculator ${PROJECT_NAME}) + target_link_libraries(calculator ${PROJECT_NAME} X11) install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN}) if (BUILD_FreeMe) add_executable(FreeMe ../nana-demo/FreeMe.cpp) set_property( TARGET FreeMe PROPERTY CXX_STANDARD 14 ) - target_link_libraries(FreeMe ${PROJECT_NAME}) + target_link_libraries(FreeMe ${PROJECT_NAME} X11) install(TARGETS FreeMe RUNTIME DESTINATION &{DEMO_BIN}) endif (BUILD_FreeMe) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) - target_link_libraries(notepad ${PROJECT_NAME}) + target_link_libraries(notepad ${PROJECT_NAME} X11) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show ${PROJECT_NAME}) + target_link_libraries(widget_show ${PROJECT_NAME} X11) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME}) + target_link_libraries(widget_show2 ${PROJECT_NAME} X11) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) - target_link_libraries(a_group_impl ${PROJECT_NAME}) + target_link_libraries(a_group_impl ${PROJECT_NAME} X11) add_executable(animate-bmp ../nana-demo/Examples/animate-bmp.cpp) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) - target_link_libraries(animate-bmp ${PROJECT_NAME}) + target_link_libraries(animate-bmp ${PROJECT_NAME} X11) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) - target_link_libraries(audio_player ${PROJECT_NAME}) + target_link_libraries(audio_player ${PROJECT_NAME} X11) #add_executable(nana_test test.cpp) #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME}) + #target_link_libraries(nana_test ${PROJECT_NAME} X11) #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) @@ -245,7 +245,7 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME}) + # target_link_libraries(${demoname} ${PROJECT_NAME} X11) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) From 48a9edc61d5c97bc8c564f898a010d744abad8d9 Mon Sep 17 00:00:00 2001 From: nabijaczleweli-vm Date: Thu, 11 Feb 2016 18:09:50 +0100 Subject: [PATCH 16/42] Xft --- .travis.yml | 3 +++ CMakeLists.txt | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7125186c..f1995a39 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ matrix: - alsa-utils - alsa-oss - libx11-dev + - libxft-dev sources: - ubuntu-toolchain-r-test - env: CXX=g++-4.9 CC=gcc-4.9 @@ -32,6 +33,7 @@ matrix: - alsa-utils - alsa-oss - libx11-dev + - libxft-dev sources: - ubuntu-toolchain-r-test @@ -47,6 +49,7 @@ matrix: - alsa-utils - alsa-oss - libx11-dev + - libxft-dev sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise diff --git a/CMakeLists.txt b/CMakeLists.txt index 3568bfe8..dbce8493 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,52 +189,52 @@ if (BUILD_NANA_DEMOS) set(CMAKE_INSTALL_PREFIX ) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME} X11) + target_link_libraries(file_explorer ${PROJECT_NAME} X11 Xft) install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) add_executable(calculator ../nana-demo/calculator.cpp) set_property( TARGET calculator PROPERTY CXX_STANDARD 14 ) - target_link_libraries(calculator ${PROJECT_NAME} X11) + target_link_libraries(calculator ${PROJECT_NAME} X11 Xft) install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN}) if (BUILD_FreeMe) add_executable(FreeMe ../nana-demo/FreeMe.cpp) set_property( TARGET FreeMe PROPERTY CXX_STANDARD 14 ) - target_link_libraries(FreeMe ${PROJECT_NAME} X11) + target_link_libraries(FreeMe ${PROJECT_NAME} X11 Xft) install(TARGETS FreeMe RUNTIME DESTINATION &{DEMO_BIN}) endif (BUILD_FreeMe) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) - target_link_libraries(notepad ${PROJECT_NAME} X11) + target_link_libraries(notepad ${PROJECT_NAME} X11 Xft) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show ${PROJECT_NAME} X11) + target_link_libraries(widget_show ${PROJECT_NAME} X11 Xft) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME} X11) + target_link_libraries(widget_show2 ${PROJECT_NAME} X11 Xft) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) - target_link_libraries(a_group_impl ${PROJECT_NAME} X11) + target_link_libraries(a_group_impl ${PROJECT_NAME} X11 Xft) add_executable(animate-bmp ../nana-demo/Examples/animate-bmp.cpp) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) - target_link_libraries(animate-bmp ${PROJECT_NAME} X11) + target_link_libraries(animate-bmp ${PROJECT_NAME} X11 Xft) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) - target_link_libraries(audio_player ${PROJECT_NAME} X11) + target_link_libraries(audio_player ${PROJECT_NAME} X11 Xft) #add_executable(nana_test test.cpp) #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME} X11) + #target_link_libraries(nana_test ${PROJECT_NAME} X11 Xft) #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) @@ -245,7 +245,7 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME} X11) + # target_link_libraries(${demoname} ${PROJECT_NAME} X11 Xft) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) From ea4bac6e9cc4083d501f1779948b0c003b9ad687 Mon Sep 17 00:00:00 2001 From: nabijaczleweli-vm Date: Thu, 11 Feb 2016 18:20:50 +0100 Subject: [PATCH 17/42] Link to libjpeg and libpng when appropriate --- CMakeLists.txt | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dbce8493..46672aa3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,6 +74,7 @@ endif(UNIX) #Find PNG if(ENABLE_PNG) add_definitions(-DNANA_ENABLE_PNG) + set(NANA_PNG_LIB "png") if(LIBPNG_FROM_OS) find_package(PNG) if (PNG_FOUND) @@ -81,11 +82,14 @@ if(ENABLE_PNG) add_definitions(-DUSE_LIBPNG_FROM_OS) endif(PNG_FOUND) endif(LIBPNG_FROM_OS) +else(ENABLE_PNG) + set(NANA_PNG_LIB "") endif(ENABLE_PNG) #Find JPEG if(ENABLE_JPEG) add_definitions(-DNANA_ENABLE_JPEG) + set(NANA_JPEG_LIB "jpeg") if(LIBJPEG_FROM_OS) find_package(JPEG) if (JPEG_FOUND) @@ -93,6 +97,8 @@ if(ENABLE_JPEG) add_definitions(-DUSE_LIBJPEG_FROM_OS) endif(JPEG_FOUND) endif(LIBJPEG_FROM_OS) +else(ENABLE_JPEG) + set(NANA_JPEG_LIB "") endif(ENABLE_JPEG) if(ENABLE_AUDIO) @@ -189,52 +195,52 @@ if (BUILD_NANA_DEMOS) set(CMAKE_INSTALL_PREFIX ) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME} X11 Xft) + target_link_libraries(file_explorer ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) add_executable(calculator ../nana-demo/calculator.cpp) set_property( TARGET calculator PROPERTY CXX_STANDARD 14 ) - target_link_libraries(calculator ${PROJECT_NAME} X11 Xft) + target_link_libraries(calculator ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN}) if (BUILD_FreeMe) add_executable(FreeMe ../nana-demo/FreeMe.cpp) set_property( TARGET FreeMe PROPERTY CXX_STANDARD 14 ) - target_link_libraries(FreeMe ${PROJECT_NAME} X11 Xft) + target_link_libraries(FreeMe ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS FreeMe RUNTIME DESTINATION &{DEMO_BIN}) endif (BUILD_FreeMe) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) - target_link_libraries(notepad ${PROJECT_NAME} X11 Xft) + target_link_libraries(notepad ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show ${PROJECT_NAME} X11 Xft) + target_link_libraries(widget_show ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME} X11 Xft) + target_link_libraries(widget_show2 ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) - target_link_libraries(a_group_impl ${PROJECT_NAME} X11 Xft) + target_link_libraries(a_group_impl ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) add_executable(animate-bmp ../nana-demo/Examples/animate-bmp.cpp) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) - target_link_libraries(animate-bmp ${PROJECT_NAME} X11 Xft) + target_link_libraries(animate-bmp ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) - target_link_libraries(audio_player ${PROJECT_NAME} X11 Xft) + target_link_libraries(audio_player ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #add_executable(nana_test test.cpp) #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME} X11 Xft) + #target_link_libraries(nana_test ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) @@ -245,7 +251,7 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME} X11 Xft) + # target_link_libraries(${demoname} ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) From 52510b265a88ec42cadcb5f2eaad44461a33101f Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 02:48:56 +0100 Subject: [PATCH 18/42] pthread --- CMakeLists.txt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 46672aa3..a0671e66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ add_definitions(-DNANA_IGNORE_CONF) if(WIN32) add_definitions(-DWIN32) - option(BUILD_FreeMe "Build FreeMe only on Windows." ON) + set(BUILD_FreeMe ON) #"Build FreeMe only on Windows." #Global MSVC definitions. You may prefer the hand-tuned sln and projects from the nana repository. if(MSVC) option(WIN32_USE_MP "Set to ON to build nana with the /MP option (Visual Studio 2005 and above)." ON) @@ -52,14 +52,16 @@ if(WIN32) add_definitions(-DNANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ) endif(ENABLE_MINGW_STD_THREADS_WITH_MEGANZ) endif(MINGW) +elseif(WIN32) + set(BUILD_FreeMe OFF) endif(WIN32) - if(APPLE) add_definitions(-DAPPLE) include_directories(/opt/X11/include/) elseif(UNIX) add_definitions(-Dlinux) + message("added -D linux") endif(APPLE) @@ -263,16 +265,14 @@ if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") else("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) - message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) - message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) + endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") # enable static linkage if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND NOT MINGW) #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") - set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") - + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -pthread") + endif () if (APPLE AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") @@ -283,3 +283,4 @@ message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) message ( "CMAKE_COMPILER_IS_GNUCXX= " ${CMAKE_COMPILER_IS_GNUCXX}) +message ( "CMAKE_EXE_LINKER_FLAGS= " ${CMAKE_EXE_LINKER_FLAGS}) \ No newline at end of file From 568feb16c6bcda20f49e0c6c36bac268cacaa4ec Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 00:13:47 +0100 Subject: [PATCH 19/42] NANA_LINKS --- CMakeLists.txt | 51 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0671e66..040b3d89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,9 @@ message(" ---> Running cmake .... ") message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) + +set(NANA_LINKS) +set(NANA_SOURCES) project(nana) cmake_minimum_required(VERSION 2.8) @@ -59,6 +62,7 @@ endif(WIN32) if(APPLE) add_definitions(-DAPPLE) include_directories(/opt/X11/include/) + list(APPEND NANA_LINKS -L/opt/X11/lib/ -liconv) elseif(UNIX) add_definitions(-Dlinux) message("added -D linux") @@ -67,16 +71,19 @@ endif(APPLE) if(UNIX) + list(APPEND NANA_LINKS -lX11 ) find_package(Freetype) if (FREETYPE_FOUND) include_directories( ${FREETYPE_INCLUDE_DIRS}) + list(APPEND NANA_LINKS -lXft ) endif(FREETYPE_FOUND) endif(UNIX) #Find PNG if(ENABLE_PNG) add_definitions(-DNANA_ENABLE_PNG) - set(NANA_PNG_LIB "png") + #set(NANA_PNG_LIB "png") + list(APPEND NANA_LINKS -lpng ) if(LIBPNG_FROM_OS) find_package(PNG) if (PNG_FOUND) @@ -84,14 +91,15 @@ if(ENABLE_PNG) add_definitions(-DUSE_LIBPNG_FROM_OS) endif(PNG_FOUND) endif(LIBPNG_FROM_OS) -else(ENABLE_PNG) - set(NANA_PNG_LIB "") +#else(ENABLE_PNG) + # set(NANA_PNG_LIB "") endif(ENABLE_PNG) #Find JPEG if(ENABLE_JPEG) add_definitions(-DNANA_ENABLE_JPEG) - set(NANA_JPEG_LIB "jpeg") + #set(NANA_JPEG_LIB "jpeg") + list(APPEND NANA_LINKS -ljpeg ) if(LIBJPEG_FROM_OS) find_package(JPEG) if (JPEG_FOUND) @@ -99,8 +107,8 @@ if(ENABLE_JPEG) add_definitions(-DUSE_LIBJPEG_FROM_OS) endif(JPEG_FOUND) endif(LIBJPEG_FROM_OS) -else(ENABLE_JPEG) - set(NANA_JPEG_LIB "") +#else(ENABLE_JPEG) +# set(NANA_JPEG_LIB "") endif(ENABLE_JPEG) if(ENABLE_AUDIO) @@ -109,6 +117,7 @@ if(ENABLE_AUDIO) find_package(asound) if (ASOUND_FOUND) include_directories( ${ASOUND_INCLUDE_DIRS}) + list(APPEND NANA_LINKS -lasound ) else(ASOUND_FOUND) message(FATAL_ERROR "libasound is not found") endif(ASOUND_FOUND) @@ -175,11 +184,12 @@ add_library(${PROJECT_NAME} ${NANA_SOURCE} ${NANA_PAINT_DETAIL_SOURCE} ${NANA_SYSTEM_SOURCE} ${NANA_THREADS_SOURCE}) +endif(APPLE) + #Headers: use INCLUDE_DIRECTORIES # Libraries: use FIND_LIBRARY and link with the result of it (try to avoid LINK_DIRECTORIES - target_link_libraries(${PROJECT_NAME} -L/opt/X11/lib/ -lX11 -lXft -lpng -liconv) + target_link_libraries(${PROJECT_NAME} ${NANA_LINKS}) -endif(APPLE) install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib @@ -197,52 +207,52 @@ if (BUILD_NANA_DEMOS) set(CMAKE_INSTALL_PREFIX ) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(file_explorer ${PROJECT_NAME} ) #X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB} install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) add_executable(calculator ../nana-demo/calculator.cpp) set_property( TARGET calculator PROPERTY CXX_STANDARD 14 ) - target_link_libraries(calculator ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(calculator ${PROJECT_NAME} ) install(TARGETS calculator RUNTIME DESTINATION &{DEMO_BIN}) if (BUILD_FreeMe) add_executable(FreeMe ../nana-demo/FreeMe.cpp) set_property( TARGET FreeMe PROPERTY CXX_STANDARD 14 ) - target_link_libraries(FreeMe ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(FreeMe ${PROJECT_NAME} ) install(TARGETS FreeMe RUNTIME DESTINATION &{DEMO_BIN}) endif (BUILD_FreeMe) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) - target_link_libraries(notepad ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(notepad ${PROJECT_NAME} #) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(widget_show ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(widget_show2 ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) - target_link_libraries(a_group_impl ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(a_group_impl ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) add_executable(animate-bmp ../nana-demo/Examples/animate-bmp.cpp) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) - target_link_libraries(animate-bmp ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(animate-bmp ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) - target_link_libraries(audio_player ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(audio_player ${PROJECT_NAME} #) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #add_executable(nana_test test.cpp) #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + #target_link_libraries(nana_test ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) @@ -253,7 +263,7 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME} X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + # target_link_libraries(${demoname} ${PROJECT_NAME} #) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) @@ -283,4 +293,5 @@ message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) message ( "CMAKE_COMPILER_IS_GNUCXX= " ${CMAKE_COMPILER_IS_GNUCXX}) -message ( "CMAKE_EXE_LINKER_FLAGS= " ${CMAKE_EXE_LINKER_FLAGS}) \ No newline at end of file +message ( "CMAKE_EXE_LINKER_FLAGS= " ${CMAKE_EXE_LINKER_FLAGS}) +message ( "NANA_LINKS= " ${NANA_LINKS}) From 5aec3d4b74a278e0baf18608171574c0c0497301 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 02:54:40 +0100 Subject: [PATCH 20/42] fix --- .travis.yml | 4 ++-- CMakeLists.txt | 39 +++++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index f1995a39..02ceda02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -69,6 +69,6 @@ before_script : - cd bld script: - - cmake -G"Unix Makefiles" .. -DENABLE_JPEG=ON -DENABLE_PNG=OFF -DBUILD_NANA_DEMOS=ON - #-DENABLE_JPEG=ON -DENABLE_PNG=ON + - cmake -G"Unix Makefiles" .. -DENABLE_JPEG=ON -DENABLE_PNG=OFF -DBUILD_NANA_DEMOS=ON -DENABLE_AUDIO=OFF + - make diff --git a/CMakeLists.txt b/CMakeLists.txt index 040b3d89..e9394b86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,7 +114,7 @@ endif(ENABLE_JPEG) if(ENABLE_AUDIO) add_definitions(-DNANA_ENABLE_AUDIO) if(UNIX) - find_package(asound) + find_package(ASOUND) if (ASOUND_FOUND) include_directories( ${ASOUND_INCLUDE_DIRS}) list(APPEND NANA_LINKS -lasound ) @@ -207,7 +207,8 @@ if (BUILD_NANA_DEMOS) set(CMAKE_INSTALL_PREFIX ) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME} ) #X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB} + target_link_libraries(file_explorer ${PROJECT_NAME} ) + #X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB} install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) add_executable(calculator ../nana-demo/calculator.cpp) @@ -224,35 +225,36 @@ if (BUILD_NANA_DEMOS) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) - target_link_libraries(notepad ${PROJECT_NAME} #) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(notepad ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(widget_show ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(widget_show2 ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) - target_link_libraries(a_group_impl ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(a_group_impl ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) add_executable(animate-bmp ../nana-demo/Examples/animate-bmp.cpp) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) - target_link_libraries(animate-bmp ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) - - add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) - set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) - target_link_libraries(audio_player ${PROJECT_NAME} #) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(animate-bmp ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + if (ENABLE_AUDIO) + add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) + set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) + target_link_libraries(audio_player ${PROJECT_NAME} ) + endif(ENABLE_AUDIO) #add_executable(nana_test test.cpp) #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME}#) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + #target_link_libraries(nana_test ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) @@ -263,7 +265,7 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME} #) X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + # target_link_libraries(${demoname} ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) @@ -289,9 +291,10 @@ endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++") endif () -message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) -message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) -message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) +message ( "CMAKE_CXX_COMPILER_ID = " ${CMAKE_CXX_COMPILER_ID}) +message ( "COMPILER_IS_CLANG = " ${COMPILER_IS_CLANG}) +message ( "CMAKE_CXX_FLAGS = " ${CMAKE_CXX_FLAGS}) message ( "CMAKE_COMPILER_IS_GNUCXX= " ${CMAKE_COMPILER_IS_GNUCXX}) -message ( "CMAKE_EXE_LINKER_FLAGS= " ${CMAKE_EXE_LINKER_FLAGS}) -message ( "NANA_LINKS= " ${NANA_LINKS}) +message ( "CMAKE_EXE_LINKER_FLAGS = " ${CMAKE_EXE_LINKER_FLAGS}) +message ( "NANA_LINKS = " ${NANA_LINKS}) +message ( "ENABLE_AUDIO = " ${ENABLE_AUDIO}) From 95bde7bc51b0b6e90b46b239b2f4705911854d28 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 01:23:42 +0100 Subject: [PATCH 21/42] temporally exclude file_explorer --- CMakeLists.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e9394b86..12c349d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -205,11 +205,13 @@ if (BUILD_NANA_DEMOS) set (CMAKE_INSTALL_PREFIX ${DEMO_BIN}) set(DEMO_BIN ${NANA_SOURCE_DIR}../nana-demo/bin) set(CMAKE_INSTALL_PREFIX ) - add_executable(file_explorer ../nana-demo/file_explorer.cpp) - set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME} ) - #X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB} - install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) + + if (OFF) + add_executable(file_explorer ../nana-demo/file_explorer.cpp) + set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) + target_link_libraries(file_explorer ${PROJECT_NAME} ) + install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) + endif(OFF) add_executable(calculator ../nana-demo/calculator.cpp) set_property( TARGET calculator PROPERTY CXX_STANDARD 14 ) From bd80c0852a33685b8aff1689430fe4af4e8454cd Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 01:28:44 +0100 Subject: [PATCH 22/42] temporally exclude widget_show depending on filesystem --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 12c349d3..8bf06697 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -230,10 +230,12 @@ if (BUILD_NANA_DEMOS) target_link_libraries(notepad ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) + if (OFF) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) + endif(OFF) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) From bf58672c11c3db4af39e64730d0ad5dd1cb992fc Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 01:33:06 +0100 Subject: [PATCH 23/42] temporally exclude widget_show2 depending on filesystem --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8bf06697..598c4c1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,13 +235,13 @@ if (BUILD_NANA_DEMOS) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) - endif(OFF) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show2 ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) - + endif(OFF) + add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) target_link_libraries(a_group_impl ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) From b7e4be30c3e82ffb41fc5de0aa956df5e2a6d9fc Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Fri, 12 Feb 2016 03:10:06 +0100 Subject: [PATCH 24/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0caeac3f..d1d3f0f7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Nana C++ Library -[Linux ![TravisCI build status](https://travis-ci.org/qPCR4vir/nana.svg)](https://travis-ci.org/qPCR4vir/nana) [Windows ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +[Linux ![TravisCI build status](https://travis-ci.org/cnjinhao/nana.svg)](https://travis-ci.org/cnjinhao/nana) [Windows ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. From 442747a9c681a5cd40ae1e3c46dfb69da55a2d4a Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 03:29:37 +0100 Subject: [PATCH 25/42] clean --- CMakeLists.txt | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 598c4c1f..f740dae9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,8 +91,6 @@ if(ENABLE_PNG) add_definitions(-DUSE_LIBPNG_FROM_OS) endif(PNG_FOUND) endif(LIBPNG_FROM_OS) -#else(ENABLE_PNG) - # set(NANA_PNG_LIB "") endif(ENABLE_PNG) #Find JPEG @@ -107,8 +105,6 @@ if(ENABLE_JPEG) add_definitions(-DUSE_LIBJPEG_FROM_OS) endif(JPEG_FOUND) endif(LIBJPEG_FROM_OS) -#else(ENABLE_JPEG) -# set(NANA_JPEG_LIB "") endif(ENABLE_JPEG) if(ENABLE_AUDIO) @@ -227,28 +223,28 @@ if (BUILD_NANA_DEMOS) add_executable(notepad ../nana-demo/notepad.cpp) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) - target_link_libraries(notepad ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(notepad ${PROJECT_NAME} ) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) if (OFF) add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(widget_show ${PROJECT_NAME}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) add_executable(widget_show2 ../nana-demo/widget_show2.cpp) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(widget_show2 ${PROJECT_NAME}) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) endif(OFF) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) set_property( TARGET a_group_impl PROPERTY CXX_STANDARD 14 ) - target_link_libraries(a_group_impl ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(a_group_impl ${PROJECT_NAME}) add_executable(animate-bmp ../nana-demo/Examples/animate-bmp.cpp) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) - target_link_libraries(animate-bmp ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + target_link_libraries(animate-bmp ${PROJECT_NAME}) if (ENABLE_AUDIO) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) @@ -258,7 +254,7 @@ if (BUILD_NANA_DEMOS) #add_executable(nana_test test.cpp) #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME})# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + #target_link_libraries(nana_test ${PROJECT_NAME}) #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) @@ -269,7 +265,7 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) + # target_link_libraries(${demoname} ${PROJECT_NAME} ) #endforeach( demofile ${DEMO_SOURCES} ) endif(BUILD_NANA_DEMOS) From 6c62c20ae11794d0f60c40ea2670504580c77388 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 12:57:40 +0100 Subject: [PATCH 26/42] more examples and cleanup --- CMakeLists.txt | 82 ++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f740dae9..977ce873 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,13 +19,8 @@ option(CMAKE_VERBOSE_PREPROCESSOR "Show annoying debug messages during compilati option(CMAKE_STOP_VERBOSE_PREPROCESSOR "Stop compilation after showing the annoying debug messages." ON) option(BUILD_NANA_DEMOS "Build all the demos form the nana_demo repository." OFF) -message(" ---> Running cmake .... ") - message ( "CMAKE_CXX_COMPILER_ID= " ${CMAKE_CXX_COMPILER_ID}) - message ( "COMPILER_IS_CLANG= " ${COMPILER_IS_CLANG}) - message ( "CMAKE_CXX_FLAGS= " ${CMAKE_CXX_FLAGS}) - + set(NANA_LINKS) -set(NANA_SOURCES) project(nana) cmake_minimum_required(VERSION 2.8) @@ -63,6 +58,7 @@ if(APPLE) add_definitions(-DAPPLE) include_directories(/opt/X11/include/) list(APPEND NANA_LINKS -L/opt/X11/lib/ -liconv) + set(ENABLE_AUDIO OFF) elseif(UNIX) add_definitions(-Dlinux) message("added -D linux") @@ -133,10 +129,6 @@ include_directories(${NANA_INCLUDE_DIR}) aux_source_directory(${NANA_SOURCE_DIR} NANA_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/detail NANA_DETAIL_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/filesystem NANA_FILESYSTEM_SOURCE) -if(NOT APPLE) -aux_source_directory(${NANA_SOURCE_DIR}/audio NANA_AUDIO_SOURCE) -aux_source_directory(${NANA_SOURCE_DIR}/audio/detail NANA_AUDIO_DETAIL_SOURCE) -endif() aux_source_directory(${NANA_SOURCE_DIR}/gui NANA_GUI_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/gui/detail NANA_GUI_DETAIL_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/gui/widgets NANA_GUI_WIDGETS_SOURCE) @@ -145,11 +137,14 @@ aux_source_directory(${NANA_SOURCE_DIR}/paint NANA_PAINT_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/paint/detail NANA_PAINT_DETAIL_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/system NANA_SYSTEM_SOURCE) aux_source_directory(${NANA_SOURCE_DIR}/threads NANA_THREADS_SOURCE) +if(ENABLE_AUDIO) + aux_source_directory(${NANA_SOURCE_DIR}/audio NANA_AUDIO_SOURCE) + aux_source_directory(${NANA_SOURCE_DIR}/audio/detail NANA_AUDIO_DETAIL_SOURCE) +endif() #To show .h files in Visual Studio, add them to the list of sources in add_executable / add_library #and Use SOURCE_GROUP if all your sources are in the same directory -if(NOT APPLE) add_library(${PROJECT_NAME} ${NANA_SOURCE} ${NANA_DETAIL_SOURCE} ${NANA_FILESYSTEM_SOURCE} @@ -163,25 +158,7 @@ add_library(${PROJECT_NAME} ${NANA_SOURCE} ${NANA_PAINT_DETAIL_SOURCE} ${NANA_SYSTEM_SOURCE} ${NANA_THREADS_SOURCE}) -endif (NOT APPLE) - -if(APPLE) -add_library(${PROJECT_NAME} ${NANA_SOURCE} - ${NANA_DETAIL_SOURCE} - ${NANA_FILESYSTEM_SOURCE} - ${NANA_AUDIO_SOURCE} - ${NANA_AUDIO_DETAIL_SOURCE} - ${NANA_GUI_SOURCE} - ${NANA_GUI_DETAIL_SOURCE} - ${NANA_GUI_WIDGETS_SOURCE} - ${NANA_GUI_WIDGETS_SKELETONS_SOURCE} - ${NANA_PAINT_SOURCE} - ${NANA_PAINT_DETAIL_SOURCE} - ${NANA_SYSTEM_SOURCE} - ${NANA_THREADS_SOURCE}) -endif(APPLE) - #Headers: use INCLUDE_DIRECTORIES # Libraries: use FIND_LIBRARY and link with the result of it (try to avoid LINK_DIRECTORIES target_link_libraries(${PROJECT_NAME} ${NANA_LINKS}) @@ -196,19 +173,13 @@ install(DIRECTORY ${NANA_INCLUDE_DIR}/nana DESTINATION include) set_property( TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14 ) +# TODO: move this nana-demo section to the nana demo repository, and here only include that cmake file if (BUILD_NANA_DEMOS) set (CMAKE_INSTALL_PREFIX ${DEMO_BIN}) set(DEMO_BIN ${NANA_SOURCE_DIR}../nana-demo/bin) set(CMAKE_INSTALL_PREFIX ) - if (OFF) - add_executable(file_explorer ../nana-demo/file_explorer.cpp) - set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) - target_link_libraries(file_explorer ${PROJECT_NAME} ) - install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) - endif(OFF) - add_executable(calculator ../nana-demo/calculator.cpp) set_property( TARGET calculator PROPERTY CXX_STANDARD 14 ) target_link_libraries(calculator ${PROJECT_NAME} ) @@ -226,7 +197,8 @@ if (BUILD_NANA_DEMOS) target_link_libraries(notepad ${PROJECT_NAME} ) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) - if (OFF) + if (OFF) # temporal: we need to adapt the use of filesystem to nana v1.03 (no file iterator) + add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show ${PROJECT_NAME}) @@ -236,6 +208,12 @@ if (BUILD_NANA_DEMOS) set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show2 ${PROJECT_NAME}) install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) + + add_executable(file_explorer ../nana-demo/file_explorer.cpp) + set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) + target_link_libraries(file_explorer ${PROJECT_NAME} ) + install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) + endif(OFF) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) @@ -246,16 +224,33 @@ if (BUILD_NANA_DEMOS) set_property( TARGET animate-bmp PROPERTY CXX_STANDARD 14 ) target_link_libraries(animate-bmp ${PROJECT_NAME}) - if (ENABLE_AUDIO) + add_executable(background-effects ../nana-demo/Examples/background-effects.cpp) + set_property( TARGET background-effects PROPERTY CXX_STANDARD 14 ) + target_link_libraries(background-effects ${PROJECT_NAME}) + + add_executable(categ ../nana-demo/Examples/categ.cpp) + set_property( TARGET categ PROPERTY CXX_STANDARD 14 ) + target_link_libraries(categ ${PROJECT_NAME}) + + add_executable(clicked ../nana-demo/Examples/clicked.cpp) + set_property( TARGET clicked PROPERTY CXX_STANDARD 14 ) + target_link_libraries(clicked ${PROJECT_NAME}) + + add_executable(decore ../nana-demo/Examples/decore.cpp) + set_property( TARGET decore PROPERTY CXX_STANDARD 14 ) + target_link_libraries(decore ${PROJECT_NAME}) + + add_executable(dock ../nana-demo/Examples/dock.cpp) + set_property( TARGET dock PROPERTY CXX_STANDARD 14 ) + target_link_libraries(dock ${PROJECT_NAME}) + + if (ENABLE_AUDIO) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) target_link_libraries(audio_player ${PROJECT_NAME} ) endif(ENABLE_AUDIO) - #add_executable(nana_test test.cpp) - #set_property( TARGET nana_test PROPERTY CXX_STANDARD 14 ) - #target_link_libraries(nana_test ${PROJECT_NAME}) - + # TODO: make it automatic to select each demo and example and build each. #set(NANA_DEMOS_DIR ${CMAKE_SOURCE_DIR}/../nana-demo) #set(NANA_EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/../Examples/nana-demo/) # https://cmake.org/cmake/help/v3.3/command/file.html?highlight=glob#file @@ -265,8 +260,9 @@ if (BUILD_NANA_DEMOS) # string( REPLACE ".cpp" "" demoname ${demofile} ) # add_executable( ${demoname} ${demofile} ) # set_property( TARGET ${demoname} PROPERTY CXX_STANDARD 14 ) - # target_link_libraries(${demoname} ${PROJECT_NAME} ) + # target_link_libraries(${demoname} ${PROJECT_NAME} )# X11 Xft ${NANA_JPEG_LIB} ${NANA_PNG_LIB}) #endforeach( demofile ${DEMO_SOURCES} ) + endif(BUILD_NANA_DEMOS) From 32924a09048ea10d081ba0695ec5ac10a07ba1de Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Fri, 12 Feb 2016 16:58:13 +0100 Subject: [PATCH 27/42] more examples --- CMakeLists.txt | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 977ce873..4555bd96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -244,6 +244,78 @@ if (BUILD_NANA_DEMOS) set_property( TARGET dock PROPERTY CXX_STANDARD 14 ) target_link_libraries(dock ${PROJECT_NAME}) + add_executable(drag-button ../nana-demo/Examples/drag-button.cpp) + set_property( TARGET drag-button PROPERTY CXX_STANDARD 14 ) + target_link_libraries(drag-button ${PROJECT_NAME}) + + add_executable(draw ../nana-demo/Examples/draw.cpp) + set_property( TARGET draw PROPERTY CXX_STANDARD 14 ) + target_link_libraries(draw ${PROJECT_NAME}) + + add_executable(example_combox ../nana-demo/Examples/example_combox.cpp) + set_property( TARGET example_combox PROPERTY CXX_STANDARD 14 ) + target_link_libraries(example_combox ${PROJECT_NAME}) + + add_executable(example_listbox ../nana-demo/Examples/example_listbox.cpp) + set_property( TARGET example_listbox PROPERTY CXX_STANDARD 14 ) + target_link_libraries(example_listbox ${PROJECT_NAME}) + + add_executable(example_menu ../nana-demo/Examples/example_menu.cpp) + set_property( TARGET example_menu PROPERTY CXX_STANDARD 14 ) + target_link_libraries(example_menu ${PROJECT_NAME}) + + add_executable(filebox-txt ../nana-demo/Examples/filebox-txt.cpp) + set_property( TARGET filebox-txt PROPERTY CXX_STANDARD 14 ) + target_link_libraries(filebox-txt ${PROJECT_NAME}) + + add_executable(folder_tree ../nana-demo/Examples/folder_tree.cpp) + set_property( TARGET folder_tree PROPERTY CXX_STANDARD 14 ) + target_link_libraries(folder_tree ${PROJECT_NAME}) + + add_executable(folder_tree_nana ../nana-demo/Examples/folder_tree_nana.cpp) + set_property( TARGET folder_tree_nana PROPERTY CXX_STANDARD 14 ) + target_link_libraries(folder_tree_nana ${PROJECT_NAME}) + + add_executable(folder_tree_std ../nana-demo/Examples/folder_tree_std.cpp) + set_property( TARGET folder_tree_std PROPERTY CXX_STANDARD 14 ) + target_link_libraries(folder_tree_std ${PROJECT_NAME}) + + add_executable(listbox_Resolver ../nana-demo/Examples/listbox_Resolver.cpp) + set_property( TARGET listbox_Resolver PROPERTY CXX_STANDARD 14 ) + target_link_libraries(listbox_Resolver ${PROJECT_NAME}) + + add_executable(framework_design_2 ../nana-demo/Examples/framework_design_2.cpp) + set_property( TARGET framework_design_2 PROPERTY CXX_STANDARD 14 ) + target_link_libraries(framework_design_2 ${PROJECT_NAME}) + + add_executable(framework_design_3 ../nana-demo/Examples/framework_design_3.cpp) + set_property( TARGET framework_design_3 PROPERTY CXX_STANDARD 14 ) + target_link_libraries(framework_design_3 ${PROJECT_NAME}) + + add_executable(group ../nana-demo/Examples/group.cpp) + set_property( TARGET group PROPERTY CXX_STANDARD 14 ) + target_link_libraries(group ${PROJECT_NAME}) + + add_executable(HelloWord ../nana-demo/Examples/HelloWord.cpp) + set_property( TARGET HelloWord PROPERTY CXX_STANDARD 14 ) + target_link_libraries(HelloWord ${PROJECT_NAME}) + + add_executable(listbox_inline_widget ../nana-demo/Examples/listbox_inline_widget.cpp) + set_property( TARGET listbox_inline_widget PROPERTY CXX_STANDARD 14 ) + target_link_libraries(listbox_inline_widget ${PROJECT_NAME}) + + add_executable(inputbox ../nana-demo/Examples/inputbox.cpp) + set_property( TARGET inputbox PROPERTY CXX_STANDARD 14 ) + target_link_libraries(inputbox ${PROJECT_NAME}) + + add_executable(label_listener ../nana-demo/Examples/label_listener.cpp) + set_property( TARGET label_listener PROPERTY CXX_STANDARD 14 ) + target_link_libraries(label_listener ${PROJECT_NAME}) + + add_executable(lambda_event.Cpp11 ../nana-demo/Examples/lambda_event.Cpp11.cpp) + set_property( TARGET lambda_event.Cpp11 PROPERTY CXX_STANDARD 14 ) + target_link_libraries(lambda_event.Cpp11 ${PROJECT_NAME}) + if (ENABLE_AUDIO) add_executable(audio_player ../nana-demo/Examples/audio_player.cpp) set_property( TARGET audio_player PROPERTY CXX_STANDARD 14 ) From 4117f3c7b267ecb1a8c4be9622baca304095a5b3 Mon Sep 17 00:00:00 2001 From: Ariel Vina-Rodriguez Date: Fri, 12 Feb 2016 22:29:53 +0100 Subject: [PATCH 28/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d1d3f0f7..ca1f1321 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Nana C++ Library -[Linux ![TravisCI build status](https://travis-ci.org/cnjinhao/nana.svg)](https://travis-ci.org/cnjinhao/nana) [Windows ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +[Linux (gcc 5, including demos) ![TravisCI build status](https://travis-ci.org/cnjinhao/nana.svg)](https://travis-ci.org/cnjinhao/nana) [Windows (VC2015) ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. From c29eced9045a01e471922926b77a505b44491804 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sat, 13 Feb 2016 01:06:27 +0100 Subject: [PATCH 29/42] NANA_ENABLE_AUDIO --- include/nana/config.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/nana/config.hpp b/include/nana/config.hpp index 194f0b9a..f27e1763 100644 --- a/include/nana/config.hpp +++ b/include/nana/config.hpp @@ -14,6 +14,7 @@ * External libraries: * - NANA_LIBPNG, USE_LIBPNG_FROM_OS * - NANA_LIBJPEG, USE_LIBJPEG_FROM_OS + * - NANA_ENABLE_AUDIO * * messages: * - VERBOSE_PREPROCESSOR, STOP_VERBOSE_PREPROCESSOR @@ -41,7 +42,7 @@ /////////////////// //Support of PCM playback // -//#define NANA_ENABLE_AUDIO +#define NANA_ENABLE_AUDIO /////////////////// //Support for PNG From 3f8aab22cfaf49d5e462696adaba67bd15d87d07 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sun, 14 Feb 2016 04:49:22 +0100 Subject: [PATCH 30/42] filesystem inline v1 + generic_string --- include/nana/filesystem/filesystem.hpp | 19 ++++++++++++++----- source/filesystem/filesystem.cpp | 21 ++++++++++++++++++++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/include/nana/filesystem/filesystem.hpp b/include/nana/filesystem/filesystem.hpp index dc86d1e0..5a308e9c 100644 --- a/include/nana/filesystem/filesystem.hpp +++ b/include/nana/filesystem/filesystem.hpp @@ -36,12 +36,13 @@ #include #include #include +#include #include // namespace std { namespace experimental { namespace filesystem { inline namespace v1 { -namespace nana { namespace experimental +namespace nana { namespace experimental { inline namespace v1 { namespace filesystem { @@ -149,6 +150,14 @@ namespace filesystem std::string string() const; std::wstring wstring() const; std::string u8string() const; + // std::u16string u16string() const; + // std::u32string u32string() const; + + std::string generic_string() const ; + std::wstring generic_wstring() const; + std::string generic_u8string() const; + // std::u16string generic_u16string() const; + // std::u32string generic_u32string() const; //appends path& operator/=(const path& other); @@ -359,11 +368,11 @@ namespace filesystem return index ? path.substr(0, index + 1) : std::basic_string(); } - -}//end namespace filesystem +} //end namespace v1 +} //end namespace filesystem } //end namespace experimental - namespace filesystem = experimental::filesystem; -}//end namespace nana + //namespace filesystem = experimental::filesystem; +} //end namespace nana #endif diff --git a/source/filesystem/filesystem.cpp b/source/filesystem/filesystem.cpp index 59c848cf..b79b9000 100644 --- a/source/filesystem/filesystem.cpp +++ b/source/filesystem/filesystem.cpp @@ -38,6 +38,7 @@ namespace nana { namespace experimental { + inline namespace v1 { namespace filesystem { //class filesystem_error @@ -249,7 +250,24 @@ namespace nana { namespace experimental { { return to_utf8(pathstr_); } - + std::string path::generic_string() const + { + auto str = string(); + std::replace(str.begin(), str.end(), '\\', '/'); + return str; + } + std::wstring path::generic_wstring() const + { + auto str = wstring(); + std::replace(str.begin(), str.end(), L'\\', L'/'); + return str; + } + std::string path::generic_u8string() const // uppss ... + { + auto str = pathstr_; + std::replace(str.begin(), str.end(), '\\', '/'); // uppss ... revise this !!!!! + return to_utf8(str); + } path & path::operator/=(const path& p) { if (p.empty()) @@ -852,6 +870,7 @@ namespace nana { namespace experimental { ::chdir(p.c_str()); #endif } + } //end namespace v1 }//end namespace filesystem } //end namespace experimental }//end namespace nana From 4621504115d05be13c676c9e92a903547e3ad5f3 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sun, 14 Feb 2016 04:50:10 +0100 Subject: [PATCH 31/42] STD_FILESYSTEM_NOT_SUPPORTED --- include/nana/c++defines.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/nana/c++defines.hpp b/include/nana/c++defines.hpp index a2cf5e0e..18b15f26 100644 --- a/include/nana/c++defines.hpp +++ b/include/nana/c++defines.hpp @@ -38,9 +38,10 @@ #ifndef NANA_CXX_DEFINES_INCLUDED #define NANA_CXX_DEFINES_INCLUDED - +#define STD_FILESYSTEM_NOT_SUPPORTED //C++ language #if defined(_MSC_VER) +# undef STD_FILESYSTEM_NOT_SUPPORTED # if (_MSC_VER < 1900) # //Nana defines some macros for lack of support of keywords # define _ALLOW_KEYWORD_MACROS @@ -130,6 +131,10 @@ #endif #endif + #if ((__GNUC__ > 5) || ((__GNUC__ == 5) && (__GNUC_MINOR__ >= 3 ) ) ) + #undef STD_FILESYSTEM_NOT_SUPPORTED + #endif + #if (__GNUC__ == 4) #if ((__GNUC_MINOR__ < 8) || (__GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ < 1)) #define STD_THREAD_NOT_SUPPORTED From 3bd48efbbd4d1d83a64e8c649dcbf2f287753100 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sun, 14 Feb 2016 04:51:24 +0100 Subject: [PATCH 32/42] Feature-testing recommendations --- include/nana/c++defines.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/nana/c++defines.hpp b/include/nana/c++defines.hpp index 18b15f26..7f1f8898 100644 --- a/include/nana/c++defines.hpp +++ b/include/nana/c++defines.hpp @@ -173,4 +173,17 @@ #endif #endif +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0061r0.html + +# if __cpp_lib_experimental_filesystem +# undef STD_FILESYSTEM_NOT_SUPPORTED +# endif + + +#ifdef __has_include +# if __has_include() +# undef STD_FILESYSTEM_NOT_SUPPORTED +# endif +#endif + #endif // NANA_CXX_DEFINES_INCLUDED From 32875bdf4ce7a34209d93865732cf9ae6d094182 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sun, 14 Feb 2016 05:09:43 +0100 Subject: [PATCH 33/42] allow widget show --- CMakeLists.txt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4555bd96..d486bc67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -196,24 +196,27 @@ if (BUILD_NANA_DEMOS) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) target_link_libraries(notepad ${PROJECT_NAME} ) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) - - if (OFF) # temporal: we need to adapt the use of filesystem to nana v1.03 (no file iterator) + add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show ${PROJECT_NAME}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) + + if (OFF) # temporal: we need to adapt the use of filesystem to nana v1.03 (no file iterator) - add_executable(widget_show2 ../nana-demo/widget_show2.cpp) - set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME}) - install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) target_link_libraries(file_explorer ${PROJECT_NAME} ) install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) + add_executable(widget_show2 ../nana-demo/widget_show2.cpp) + set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) + target_link_libraries(widget_show2 ${PROJECT_NAME}) + install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) + + endif(OFF) add_executable(a_group_impl ../nana-demo/Examples/a_group_impl.cpp) From 9f3060f912090c4453aeba735c4e2749d99e5897 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sun, 14 Feb 2016 05:23:18 +0100 Subject: [PATCH 34/42] nana::experimental::filesystem --- source/filesystem/filesystem.cpp | 2 +- source/gui/filebox.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/filesystem/filesystem.cpp b/source/filesystem/filesystem.cpp index b79b9000..42691b6a 100644 --- a/source/filesystem/filesystem.cpp +++ b/source/filesystem/filesystem.cpp @@ -652,7 +652,7 @@ namespace nana { namespace experimental { auto stat = status(p, err); if (err != std::error_code()) - throw filesystem_error("nana::filesystem::status", p, err); + throw filesystem_error("nana::experimental::filesystem::status", p, err); return stat; } diff --git a/source/gui/filebox.cpp b/source/gui/filebox.cpp index b9772d23..5f8f1311 100644 --- a/source/gui/filebox.cpp +++ b/source/gui/filebox.cpp @@ -142,7 +142,7 @@ namespace nana auto path = path_.caption(); auto root = path.substr(0, path.find('/')); if(root == "HOME") - path.replace(0, 4, nana::filesystem::path_user().native()); + path.replace(0, 4, nana::experimental::filesystem::path_user().native()); else if(root == "FILESYSTEM") path.erase(0, 10); else @@ -344,7 +344,7 @@ namespace nana else dir = saved_selected_path; - _m_load_cat_path(dir.size() ? dir : nana::filesystem::path_user().native()); + _m_load_cat_path(dir.size() ? dir : nana::experimental::filesystem::path_user().native()); tb_file_.caption(file_with_path_removed); } @@ -474,7 +474,7 @@ namespace nana { auto begstr = path.substr(0, pos); if(begstr == "FS.HOME") - path.replace(0, 7, nana::filesystem::path_user().native()); + path.replace(0, 7, nana::experimental::filesystem::path_user().native()); else path.erase(0, pos); return begstr; @@ -508,13 +508,13 @@ namespace nana { m.bytes = fs::file_size(path + m.name); m.directory = fs::is_directory(fattr); - ::nana::filesystem::modified_file_time(path + m.name, m.modified_time); + ::nana::experimental::filesystem::modified_file_time(path + m.name, m.modified_time); } else { m.bytes = 0; m.directory = fs::is_directory(*i); - ::nana::filesystem::modified_file_time(path + i->path().filename().native(), m.modified_time); + ::nana::experimental::filesystem::modified_file_time(path + i->path().filename().native(), m.modified_time); } file_container_.push_back(m); @@ -534,7 +534,7 @@ namespace nana while(!beg_node.empty() && (beg_node != nodes_.home) && (beg_node != nodes_.filesystem)) beg_node = beg_node.owner(); - auto head = nana::filesystem::path_user().native(); + auto head = nana::experimental::filesystem::path_user().native(); if(path.size() >= head.size() && (path.substr(0, head.size()) == head)) {//This is HOME path_.caption("HOME"); From 9fe058c0cb56741b265043084277d4278cddae68 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Sun, 14 Feb 2016 05:50:46 +0100 Subject: [PATCH 35/42] minor --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ca1f1321..5b985907 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Nana C++ Library -[Linux (gcc 5, including demos) ![TravisCI build status](https://travis-ci.org/cnjinhao/nana.svg)](https://travis-ci.org/cnjinhao/nana) [Windows (VC2015) ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) [![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) +[Linux (gcc 5, including demos) ![TravisCI build status](https://travis-ci.org/cnjinhao/nana.svg)](https://travis-ci.org/cnjinhao/nana) + +[Windows (VC2015) ![AppVeyor uild status](https://ci.appveyor.com/api/projects/status/5j79p9fi887usv7h?svg=true)](https://ci.appveyor.com/project/qPCR4vir/nana) + +[![Licence](https://img.shields.io/badge/license-BSL-blue.svg?style=flat)](LICENSE_1_0.txt) Nana is a C++ library designed to allow developers to easily create cross-platform GUI applications with modern C++11 style, currently it can work on Linux(X11) and Windows. The nana repository contains the entire source of library, you can browse the source code and submit your pull request for contributing. From 09eaea0fade2a14894d806ce0107cefb526a10ee Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Mon, 15 Feb 2016 00:42:51 +0100 Subject: [PATCH 36/42] modernize widget_show2 to nana v1.3.0 --- CMakeLists.txt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d486bc67..c5e9862d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -196,25 +196,24 @@ if (BUILD_NANA_DEMOS) set_property( TARGET notepad PROPERTY CXX_STANDARD 14 ) target_link_libraries(notepad ${PROJECT_NAME} ) install(TARGETS notepad RUNTIME DESTINATION &{DEMO_BIN}) - add_executable(widget_show ../nana-demo/widget_show.cpp) set_property( TARGET widget_show PROPERTY CXX_STANDARD 14 ) target_link_libraries(widget_show ${PROJECT_NAME}) install(TARGETS widget_show RUNTIME DESTINATION &{DEMO_BIN}) - - if (OFF) # temporal: we need to adapt the use of filesystem to nana v1.03 (no file iterator) + add_executable(widget_show2 ../nana-demo/widget_show2.cpp) + set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) + target_link_libraries(widget_show2 ${PROJECT_NAME}) + install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) + + if (OFF) # temporal: we need to adapt the use of filesystem to nana v1.03 (no file iterator) add_executable(file_explorer ../nana-demo/file_explorer.cpp) set_property( TARGET file_explorer PROPERTY CXX_STANDARD 14 ) target_link_libraries(file_explorer ${PROJECT_NAME} ) install(TARGETS file_explorer RUNTIME DESTINATION &{DEMO_BIN}) - add_executable(widget_show2 ../nana-demo/widget_show2.cpp) - set_property( TARGET widget_show2 PROPERTY CXX_STANDARD 14 ) - target_link_libraries(widget_show2 ${PROJECT_NAME}) - install(TARGETS widget_show2 RUNTIME DESTINATION &{DEMO_BIN}) endif(OFF) From 48db4528d67fba1f82e3fc54131309d84b8dad61 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Mon, 15 Feb 2016 11:30:16 +0100 Subject: [PATCH 37/42] fixing: tabbar append error in gcc linux - travis see: https://travis-ci.org/cnjinhao/nana/jobs/109245565 --- .gitignore | 2 +- include/nana/gui/widgets/tabbar.hpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 71a1545a..ef6de4d4 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,4 @@ CMakeFiles/ .idea/ cmake_install.cmake *.DS_Store -.idea/ + diff --git a/include/nana/gui/widgets/tabbar.hpp b/include/nana/gui/widgets/tabbar.hpp index 79ed46f2..4fbb6fe7 100644 --- a/include/nana/gui/widgets/tabbar.hpp +++ b/include/nana/gui/widgets/tabbar.hpp @@ -263,13 +263,13 @@ namespace nana tabbar& append(std::string text, window attach_wd, value_type value = {}) { - return this->append(static_cast(nana::charset(text, nana::unicode::utf8)), attach_wd); + return this->append( std::wstring((nana::charset(std::move(text), nana::unicode::utf8))), attach_wd, std::move(value)); } tabbar& append(std::wstring text, window attach_wd, value_type value = {}) { if (attach_wd && API::empty_window(attach_wd)) - throw std::invalid_argument("tabbar.attach: invalid window handle"); + throw std::invalid_argument("Appening a tab to a tabbar - error: tabbar.attach: invalid window handle"); this->get_drawer_trigger().insert(::nana::npos, std::move(text), std::move(value)); if (attach_wd) @@ -299,7 +299,7 @@ namespace nana if (pos > length()) throw std::out_of_range("tabbar::insert invalid position"); - this->get_drawer_trigger().insert(pos, to_nstring(text), std::move(value)); + this->get_drawer_trigger().insert(pos, to_nstring(std::move(text)), std::move(value)); API::update_window(*this); } From 87a0fd3a49b3d6680bf899ae1b020818fb0715a2 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Mon, 15 Feb 2016 14:10:13 +0100 Subject: [PATCH 38/42] fixing 2: tabbar append error in gcc linux - travis see: https://travis-ci.org/cnjinhao/nana/jobs/109245565 --- include/nana/gui/widgets/tabbar.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/nana/gui/widgets/tabbar.hpp b/include/nana/gui/widgets/tabbar.hpp index 4fbb6fe7..2a8d9692 100644 --- a/include/nana/gui/widgets/tabbar.hpp +++ b/include/nana/gui/widgets/tabbar.hpp @@ -263,7 +263,7 @@ namespace nana tabbar& append(std::string text, window attach_wd, value_type value = {}) { - return this->append( std::wstring((nana::charset(std::move(text), nana::unicode::utf8))), attach_wd, std::move(value)); + return this->append( static_cast(nana::charset(std::move(text), nana::unicode::utf8)), attach_wd, std::move(value)); } tabbar& append(std::wstring text, window attach_wd, value_type value = {}) From 1c05efcb8165fe0cc8172cb3233b119ccc9d413e Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Mon, 15 Feb 2016 16:52:41 +0100 Subject: [PATCH 39/42] fixing with C++14: tabbar append error in gcc linux - travis --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5e9862d..55ab1c01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -345,7 +345,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall") else("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall") endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") endif(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") From 799b1206a1b55a1e233bfffedf49ddf14a98d73f Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Mon, 15 Feb 2016 18:29:40 +0100 Subject: [PATCH 40/42] group convenient return a reference to checkbox option see widget_show2 for an example of convenience --- include/nana/gui/widgets/group.hpp | 3 ++- source/gui/widgets/group.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/nana/gui/widgets/group.hpp b/include/nana/gui/widgets/group.hpp index 79162f06..2e264289 100644 --- a/include/nana/gui/widgets/group.hpp +++ b/include/nana/gui/widgets/group.hpp @@ -19,6 +19,7 @@ #include #include +#include namespace nana{ class group @@ -49,7 +50,7 @@ namespace nana{ ~group(); /// Adds an option for user selection - group& add_option(::std::string); + checkbox& add_option(::std::string); /// Enables/disables the radio mode which is single selection group& radio_mode(bool); diff --git a/source/gui/widgets/group.cpp b/source/gui/widgets/group.cpp index aa4d3346..91b1bd9a 100644 --- a/source/gui/widgets/group.cpp +++ b/source/gui/widgets/group.cpp @@ -103,7 +103,7 @@ namespace nana{ delete impl_->radio_logic; } - group& group::add_option(std::string text) + checkbox& group::add_option(std::string text) { _THROW_IF_EMPTY() @@ -118,7 +118,7 @@ namespace nana{ if (impl_->radio_logic) impl_->radio_logic->add(*opt); - return *this; + return *impl_->options.back(); } group& group::radio_mode(bool enable) From 186be4a99b08bfd3d4b7abde7b581f743834d6e4 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Tue, 16 Feb 2016 11:53:27 +0100 Subject: [PATCH 41/42] CMAKE_BOOST_FILESYSTEM_AVAILABLE --- CMakeLists.txt | 29 ++++++++++++++++++++++++++++- include/nana/config.hpp | 37 ++++++++++++++++++++++++++----------- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 55ab1c01..f4b6ec4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,10 +18,37 @@ option(ENABLE_AUDIO "Enable class audio::play for PCM playback." OFF) option(CMAKE_VERBOSE_PREPROCESSOR "Show annoying debug messages during compilation." OFF) option(CMAKE_STOP_VERBOSE_PREPROCESSOR "Stop compilation after showing the annoying debug messages." ON) option(BUILD_NANA_DEMOS "Build all the demos form the nana_demo repository." OFF) - +# The ISO C++ File System Technical Specification is optional. +# http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf +# This is not a workaround, but an user option. +# The library maybe available in the std library in use or from Boost (almost compatible) +# http://www.boost.org/doc/libs/1_60_0/libs/filesystem/doc/index.htm +# or you can choose to use the (partial, but functional) implementation provided by nana. +# If you include the file +# The selected option will be set by nana into std::experimental::filesystem +# By default Nana will use the ISO TS if available, or nana if not. +# Boost will be use only if you change one of the following: +option(CMAKE_BOOST_FILESYSTEM_AVAILABLE "Is Boost filesystem available?" OFF) +option(NANA_BOOST_FILESYSTEM_PREFERRED "Is Boost filesystem preferred over nana?" OFF) +option(CMAKE_BOOST_FILESYSTEM_FORCE "Force use of Boost filesystem if available (over ISO)?" OFF) +option(CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT "Where to find ?" "../") +option(CMAKE_BOOST_FILESYSTEM_LIB "Flag for the compiler to link: " "-lboost/fs") set(NANA_LINKS) +if (CMAKE_BOOST_FILESYSTEM_AVAILABLE) + if (CMAKE_BOOST_FILESYSTEM_PREFERED OR CMAKE_BOOST_FILESYSTEM_FORCE) + add_definitions(-DNANA_BOOST_FILESYSTEM_AVAILABLE) + if (CMAKE_BOOST_FILESYSTEM_FORCE) + add_definitions(-DNANA_BOOST_FILESYSTEM_FORCE) + else() + add_definitions(-DNANA_BOOST_FILESYSTEM_PREFERED) + endif() + include_directories("${CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT}") + list(APPEND NANA_LINKS "${CMAKE_BOOST_FILESYSTEM_LIB}") + endif (CMAKE_BOOST_FILESYSTEM_PREFERED OR CMAKE_BOOST_FILESYSTEM_FORCE) +endif (CMAKE_BOOST_FILESYSTEM_AVAILABLE) + project(nana) cmake_minimum_required(VERSION 2.8) diff --git a/include/nana/config.hpp b/include/nana/config.hpp index f27e1763..6335f2e2 100644 --- a/include/nana/config.hpp +++ b/include/nana/config.hpp @@ -31,22 +31,37 @@ // Here defines some flags that tell Nana what features will be supported. - -//Support of std::thread -//Boost.Thread is preferred. -//NANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ is only available on MinGW when STD_THREAD_NOT_SUPPORTED is defined. -//if NANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ is enabled, Boost.Thread will be replaced with meganz's mingw-std-threads. -//https://github.com/meganz/mingw-std-threads +/////////////////////////// +// Support of std::thread +// Boost.Thread is preferred. +// NANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ is only available on MinGW when STD_THREAD_NOT_SUPPORTED is defined. +// if NANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ is enabled, Boost.Thread will be replaced with meganz's mingw-std-threads. +// https://github.com/meganz/mingw-std-threads //#define NANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ +//////////////////////////// +// The ISO C++ File System Technical Specification is optional. +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf +// This is not a workaround, but an user option. +// The library maybe available in the std library in use or from Boost (almost compatible) +// http://www.boost.org/doc/libs/1_60_0/libs/filesystem/doc/index.htm +// or you can choose to use the (partial, but functional) implementation provided by nana. +// If you include the file +// The selected option will be set by nana into std::experimental::filesystem +// By default Nana will use the ISO TS if available, or nana if not. +// Boost will be use only if you change one of the following (set the includes and link correspondly): +//#define NANA_BOOST_FILESYSTEM_AVAILABLE // "Is Boost filesystem available?" +//#define NANA_BOOST_FILESYSTEM_PREFERRED // "Is Boost filesystem preferred over nana?" +//#define NANA_BOOST_FILESYSTEM_FORCE // "Force use of Boost filesystem if available (over ISO)? + /////////////////// -//Support of PCM playback +// Support of PCM playback // #define NANA_ENABLE_AUDIO /////////////////// -//Support for PNG -// Define the NANA_ENABLE_PNG to enable the support of PNG. +// Support for PNG +// Define the NANA_ENABLE_PNG to enable the support of PNG. // //#define NANA_ENABLE_PNG //! //#define USE_LIBPNG_FROM_OS // Un-Comment it to use libpng from operating system. @@ -57,8 +72,8 @@ #endif /////////////////// -//Support for JPEG -// Define the NANA_ENABLE_JPEG to enable the support of JPEG. +// Support for JPEG +// Define the NANA_ENABLE_JPEG to enable the support of JPEG. // //#define NANA_ENABLE_JPEG //! //#define USE_LIBJPEG_FROM_OS // Un-Comment it to use libjpeg from operating system. From b9b749832efb23e4960e2f6c338a500a541ae308 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Tue, 16 Feb 2016 12:58:35 +0100 Subject: [PATCH 42/42] fix: to_nstring in tabbar --- include/nana/gui/widgets/tabbar.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/nana/gui/widgets/tabbar.hpp b/include/nana/gui/widgets/tabbar.hpp index 2a8d9692..b7a88789 100644 --- a/include/nana/gui/widgets/tabbar.hpp +++ b/include/nana/gui/widgets/tabbar.hpp @@ -261,7 +261,8 @@ namespace nana return this->get_drawer_trigger().length(); } - tabbar& append(std::string text, window attach_wd, value_type value = {}) + /// Append a new tab + tabbar& append(std::string text, window attach_wd, value_type value = {}) // 2x text convertion. maybe better to duplicate code? { return this->append( static_cast(nana::charset(std::move(text), nana::unicode::utf8)), attach_wd, std::move(value)); } @@ -271,7 +272,7 @@ namespace nana if (attach_wd && API::empty_window(attach_wd)) throw std::invalid_argument("Appening a tab to a tabbar - error: tabbar.attach: invalid window handle"); - this->get_drawer_trigger().insert(::nana::npos, std::move(text), std::move(value)); + this->get_drawer_trigger().insert(::nana::npos, to_nstring(std::move(text)), std::move(value)); if (attach_wd) this->attach(this->get_drawer_trigger().length() - 1, attach_wd);