Merge branch 'feature-docker-place' into develop

This commit is contained in:
Jinhao 2015-09-27 04:17:21 +08:00
commit 171509f0d6
50 changed files with 3574 additions and 1225 deletions

View File

@ -34,8 +34,13 @@ if(BIICODE)
# we'll use the default config file so we can iliminate the following macro definitions
if(MSVC)
# More MSVC specific compilation flags
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
if(MSVC14)
add_definitions(-DSTD_CODECVT_NOT_SUPPORTED)
else()
add_definitions(-DNOT_IMPLEMENTED_KEYWORD_noexcept)
endif()
endif()
add_biicode_targets()

View File

@ -102,7 +102,6 @@
<Unit filename="../../source/internationalization.cpp" />
<Unit filename="../../source/paint/detail/image_process_provider.cpp" />
<Unit filename="../../source/paint/detail/native_paint_interface.cpp" />
<Unit filename="../../source/paint/gadget.cpp" />
<Unit filename="../../source/paint/graphics.cpp" />
<Unit filename="../../source/paint/image.cpp" />
<Unit filename="../../source/paint/image_process_selector.cpp" />

View File

@ -537,3 +537,633 @@
1399002439 source:d:\privates\nana\release\nana.cpp11\source\gui\detail\element_store.cpp
<nana/gui/detail/element_store.hpp>
1363362719 source:d:\git.repo\nana\source\any.cpp
<nana/any.hpp>
1362509572 source:d:\git.repo\nana\source\audio\detail\audio_device.cpp
<nana/audio/detail/audio_device.hpp>
<nana/system/platform.hpp>
<pthread.h>
<unistd.h>
<sys/time.h>
<errno.h>
1439496157 source:d:\git.repo\nana\source\audio\detail\audio_stream.cpp
<nana/audio/detail/audio_stream.hpp>
<nana/charset.hpp>
1362509721 source:d:\git.repo\nana\source\audio\detail\buffer_preparation.cpp
<nana/audio/detail/buffer_preparation.hpp>
<cstring>
1353253406 source:d:\git.repo\nana\source\audio\player.cpp
<nana/audio/player.hpp>
<nana/audio/detail/audio_stream.hpp>
<nana/audio/detail/audio_device.hpp>
<nana/audio/detail/buffer_preparation.hpp>
<nana/system/platform.hpp>
1439496157 source:d:\git.repo\nana\source\basic_types.cpp
<nana/basic_types.hpp>
<regex>
<vector>
<algorithm>
<stdexcept>
1439496157 source:d:\git.repo\nana\source\charset.cpp
<nana/charset.hpp>
<utility>
<nana/deploy.hpp>
<cwchar>
<clocale>
<codecvt>
<windows.h>
1439496157 source:d:\git.repo\nana\source\datetime.cpp
<nana/config.hpp>
<nana/datetime.hpp>
<windows.h>
<cassert>
1439496157 source:d:\git.repo\nana\source\deploy.cpp
<nana/deploy.hpp>
<cstdlib>
<stdexcept>
<windows.h>
<string.h>
<sstream>
1439496157 source:d:\git.repo\nana\source\detail\platform_spec_selector.cpp
<nana/config.hpp>
"win32/platform_spec.cpp"
"linux_X11/platform_spec.cpp"
1439496157 d:\git.repo\nana\source\detail\win32\platform_spec.cpp
<nana/config.hpp>
<shellapi.h>
<stdexcept>
<VersionHelpers.h>
1439496157 d:\git.repo\nana\source\detail\linux_x11\platform_spec.cpp
<nana/config.hpp>
<X11/Xlocale.h>
<locale>
<map>
<set>
<algorithm>
<nana/paint/graphics.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/basic_window.hpp>
<nana/system/platform.hpp>
<errno.h>
<sstream>
"msg_dispatcher.hpp"
1439496157 d:\git.repo\nana\source\detail\linux_x11\msg_dispatcher.hpp
<nana/detail/linux_X11/msg_packet.hpp>
<nana/system/platform.hpp>
<list>
<set>
<map>
<mutex>
<condition_variable>
<memory>
<thread>
1365203880 source:d:\git.repo\nana\source\exceptions.cpp
<nana/exceptions.hpp>
1365203878 source:d:\git.repo\nana\source\filesystem\file_iterator.cpp
<nana/filesystem/file_iterator.hpp>
1365203878 source:d:\git.repo\nana\source\filesystem\fs_utility.cpp
<nana/filesystem/fs_utility.hpp>
<nana/filesystem/file_iterator.hpp>
<vector>
<windows.h>
<shlobj.h>
<nana/datetime.hpp>
<nana/charset.hpp>
<sys/stat.h>
<sys/types.h>
<dirent.h>
<cstdio>
<cstring>
<errno.h>
<unistd.h>
<stdlib.h>
1439496157 source:d:\git.repo\nana\source\gui\animation.cpp
<nana/gui/animation.hpp>
<nana/gui/drawing.hpp>
<nana/system/timepiece.hpp>
<nana/system/platform.hpp>
<vector>
<list>
<algorithm>
<nana/std_thread.hpp>
<nana/std_mutex.hpp>
<nana/std_condition_variable.hpp>
<mutex>
<condition_variable>
<thread>
1423350892 source:d:\git.repo\nana\source\gui\basis.cpp
<nana/gui/basis.hpp>
1439496157 source:d:\git.repo\nana\source\gui\detail\basic_window.cpp
<nana/gui/detail/basic_window.hpp>
<nana/gui/detail/native_window_interface.hpp>
1439496157 source:d:\git.repo\nana\source\gui\detail\bedrock_pi.cpp
<nana/config.hpp>
<nana/gui/detail/bedrock_pi_data.hpp>
<nana/gui/detail/event_code.hpp>
<nana/system/platform.hpp>
<sstream>
<nana/system/timepiece.hpp>
<nana/gui/wvl.hpp>
<nana/gui/detail/inner_fwd_implement.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/layout_utility.hpp>
<nana/gui/detail/element_store.hpp>
<algorithm>
1439496157 source:d:\git.repo\nana\source\gui\detail\bedrock_selector.cpp
<nana/config.hpp>
"win32/bedrock.cpp"
"linux_X11/bedrock.cpp"
1439496157 d:\git.repo\nana\source\gui\detail\win32\bedrock.cpp
<nana/config.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/bedrock_pi_data.hpp>
<nana/gui/detail/event_code.hpp>
<nana/system/platform.hpp>
<sstream>
<nana/system/timepiece.hpp>
<nana/gui.hpp>
<nana/gui/detail/inner_fwd_implement.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/layout_utility.hpp>
<nana/gui/detail/element_store.hpp>
<nana/gui/detail/color_schemes.hpp>
1439496157 d:\git.repo\nana\source\gui\detail\linux_x11\bedrock.cpp
<nana/config.hpp>
<nana/gui/detail/bedrock_pi_data.hpp>
<nana/gui/detail/event_code.hpp>
<nana/system/platform.hpp>
<nana/gui/detail/inner_fwd_implement.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/layout_utility.hpp>
<nana/gui/detail/element_store.hpp>
<errno.h>
1423350892 source:d:\git.repo\nana\source\gui\detail\color_schemes.cpp
<nana/gui/detail/color_schemes.hpp>
<map>
1439496157 source:d:\git.repo\nana\source\gui\detail\drawer.cpp
<nana/config.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/drawer.hpp>
<nana/gui/detail/dynamic_drawing_object.hpp>
<nana/gui/detail/effects_renderer.hpp>
<nana/gui/detail/basic_window.hpp>
<nana/detail/linux_X11/platform_spec.hpp>
1408986718 source:d:\git.repo\nana\source\gui\detail\element_store.cpp
<nana/gui/detail/element_store.hpp>
1439496157 source:d:\git.repo\nana\source\gui\detail\events_operation.cpp
<nana/gui/detail/events_operation.hpp>
1439828940 source:d:\git.repo\nana\source\gui\detail\native_window_interface.cpp
<nana/config.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/screen.hpp>
<nana/std_mutex.hpp>
<mutex>
<map>
"../../paint/detail/image_ico.hpp"
<nana/system/platform.hpp>
<nana/gui/detail/bedrock.hpp>
1439496158 d:\git.repo\nana\source\paint\detail\image_ico.hpp
<nana/paint/detail/image_impl_interface.hpp>
1439496157 source:d:\git.repo\nana\source\gui\detail\window_layout.cpp
<nana/gui/detail/window_layout.hpp>
<nana/gui/detail/basic_window.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/layout_utility.hpp>
<algorithm>
1439496157 source:d:\git.repo\nana\source\gui\detail\window_manager.cpp
<nana/config.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/handle_manager.hpp>
<nana/gui/detail/window_manager.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/detail/inner_fwd_implement.hpp>
<nana/gui/layout_utility.hpp>
<nana/gui/detail/effects_renderer.hpp>
<stdexcept>
<algorithm>
1439746409 source:d:\git.repo\nana\source\gui\dragger.cpp
<nana/gui/dragger.hpp>
1423350892 source:d:\git.repo\nana\source\gui\drawing.cpp
<nana/gui/drawing.hpp>
<nana/gui/programming_interface.hpp>
<nana/gui/detail/basic_window.hpp>
1439496157 source:d:\git.repo\nana\source\gui\effects.cpp
<nana/gui/effects.hpp>
<nana/gui/programming_interface.hpp>
1439829040 source:d:\git.repo\nana\source\gui\element.cpp
<nana/gui/element.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/element_store.hpp>
<nana/paint/image.hpp>
<map>
<string>
<nana/std_mutex.hpp>
<mutex>
1439496157 source:d:\git.repo\nana\source\gui\filebox.cpp
<nana/gui.hpp>
<nana/gui/filebox.hpp>
<nana/filesystem/fs_utility.hpp>
<windows.h>
<nana/gui/widgets/label.hpp>
<nana/gui/widgets/button.hpp>
<nana/gui/widgets/listbox.hpp>
<nana/gui/widgets/categorize.hpp>
<nana/gui/widgets/textbox.hpp>
<nana/gui/widgets/treebox.hpp>
<nana/gui/widgets/combox.hpp>
<nana/filesystem/file_iterator.hpp>
<nana/gui/place.hpp>
<stdexcept>
<algorithm>
1439496157 source:d:\git.repo\nana\source\gui\layout_utility.cpp
<nana/gui/layout_utility.hpp>
1439496157 source:d:\git.repo\nana\source\gui\msgbox.cpp
<nana/gui.hpp>
<nana/gui/widgets/label.hpp>
<nana/gui/widgets/button.hpp>
<nana/gui/widgets/spinbox.hpp>
<nana/gui/widgets/combox.hpp>
<nana/gui/widgets/textbox.hpp>
<nana/gui/widgets/panel.hpp>
<nana/gui/widgets/picture.hpp>
<nana/gui/place.hpp>
<nana/datetime.hpp>
<nana/internationalization.hpp>
<nana/gui/filebox.hpp>
<functional>
<cstdlib>
<windows.h>
<nana/gui/widgets/picture.hpp>
<nana/paint/pixel_buffer.hpp>
1439496157 source:d:\git.repo\nana\source\gui\notifier.cpp
<nana/deploy.hpp>
<nana/gui/programming_interface.hpp>
<nana/gui/notifier.hpp>
<nana/gui/timer.hpp>
<unordered_map>
<unordered_set>
<nana/std_mutex.hpp>
<mutex>
<nana/detail/win32/platform_spec.hpp>
<nana/system/platform.hpp>
<iostream>
1439746410 source:d:\git.repo\nana\source\gui\programming_interface.cpp
<nana/gui/programming_interface.hpp>
<nana/gui/detail/basic_window.hpp>
<nana/system/platform.hpp>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/widgets/widget.hpp>
1439496158 source:d:\git.repo\nana\source\gui\screen.cpp
<nana/gui/screen.hpp>
<vector>
<memory>
<nana/gui/detail/native_window_interface.hpp>
<nana/gui/programming_interface.hpp>
<windows.h>
1415011766 source:d:\git.repo\nana\source\gui\state_cursor.cpp
<nana/gui/state_cursor.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/basic_window.hpp>
1439496158 source:d:\git.repo\nana\source\gui\timer.cpp
<nana/deploy.hpp>
<nana/gui/timer.hpp>
<map>
<memory>
<nana/std_mutex.hpp>
<mutex>
<windows.h>
<nana/system/platform.hpp>
1439496158 source:d:\git.repo\nana\source\gui\tooltip.cpp
<nana/gui/tooltip.hpp>
<nana/gui/widgets/label.hpp>
<nana/gui/timer.hpp>
<nana/gui/screen.hpp>
<memory>
1439496158 source:d:\git.repo\nana\source\gui\widgets\button.cpp
<nana/gui/widgets/button.hpp>
<nana/paint/text_renderer.hpp>
1439829040 source:d:\git.repo\nana\source\gui\widgets\categorize.cpp
<nana/gui/wvl.hpp>
<nana/gui/widgets/categorize.hpp>
<nana/gui/widgets/float_listbox.hpp>
<nana/gui/element.hpp>
<nana/gui/widgets/detail/tree_cont.hpp>
<stdexcept>
1439829040 source:d:\git.repo\nana\source\gui\widgets\checkbox.cpp
<nana/gui/widgets/checkbox.hpp>
<nana/paint/text_renderer.hpp>
<nana/gui/element.hpp>
<algorithm>
1439496158 source:d:\git.repo\nana\source\gui\widgets\combox.cpp
<nana/gui.hpp>
<nana/gui/widgets/combox.hpp>
<nana/gui/element.hpp>
<nana/system/dataexch.hpp>
<nana/gui/widgets/float_listbox.hpp>
<nana/gui/widgets/skeletons/text_editor.hpp>
<nana/gui/widgets/skeletons/textbase_export_interface.hpp>
<iterator>
1439829040 source:d:\git.repo\nana\source\gui\widgets\date_chooser.cpp
<nana/gui/widgets/date_chooser.hpp>
<nana/gui/element.hpp>
<nana/system/platform.hpp>
<sstream>
1439496158 source:d:\git.repo\nana\source\gui\widgets\float_listbox.cpp
<nana/gui/widgets/float_listbox.hpp>
<nana/gui/widgets/scroll.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\form.cpp
<nana/gui/widgets/form.hpp>
1408985395 source:d:\git.repo\nana\source\gui\widgets\frame.cpp
<nana/gui/widgets/frame.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\group.cpp
<nana/gui/widgets/group.hpp>
<nana/gui/widgets/label.hpp>
<nana/gui/drawing.hpp>
<nana/gui/widgets/checkbox.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\label.cpp
<nana/gui/widgets/label.hpp>
<nana/unicode_bidi.hpp>
<nana/gui/widgets/skeletons/text_token_stream.hpp>
<nana/system/platform.hpp>
<stdexcept>
<sstream>
1439496158 source:d:\git.repo\nana\source\gui\widgets\listbox.cpp
<nana/gui/widgets/listbox.hpp>
<nana/gui/widgets/scroll.hpp>
<nana/gui/widgets/panel.hpp>
<nana/gui/layout_utility.hpp>
<nana/gui/element.hpp>
<list>
<deque>
<stdexcept>
<algorithm>
<nana/system/dataexch.hpp>
<cassert>
1439828820 source:d:\git.repo\nana\source\gui\widgets\menu.cpp
<nana/gui/widgets/menu.hpp>
<nana/system/platform.hpp>
<nana/gui/element.hpp>
<nana/gui/wvl.hpp>
<nana/paint/text_renderer.hpp>
<cctype>
1439496158 source:d:\git.repo\nana\source\gui\widgets\menubar.cpp
<nana/gui/widgets/menubar.hpp>
<stdexcept>
1439496158 source:d:\git.repo\nana\source\gui\widgets\panel.cpp
<nana/gui/widgets/panel.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\picture.cpp
<nana/gui/widgets/picture.hpp>
<nana/gui/layout_utility.hpp>
<nana/paint/image.hpp>
<nana/gui/element.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\progress.cpp
<nana/gui/widgets/progress.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\scroll.cpp
<nana/gui/widgets/scroll.hpp>
<nana/gui/element.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\skeletons\text_editor.cpp
<nana/gui/widgets/skeletons/text_editor.hpp>
<nana/gui/widgets/skeletons/textbase_export_interface.hpp>
<nana/gui/element.hpp>
<nana/system/dataexch.hpp>
<nana/unicode_bidi.hpp>
<numeric>
<cwctype>
<cstring>
<set>
<algorithm>
1439496158 source:d:\git.repo\nana\source\gui\widgets\slider.cpp
<nana/gui/widgets/slider.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\spinbox.cpp
<nana/gui/widgets/spinbox.hpp>
<nana/gui/widgets/skeletons/text_editor.hpp>
<nana/gui/element.hpp>
<nana/gui/timer.hpp>
<algorithm>
1439496158 source:d:\git.repo\nana\source\gui\widgets\textbox.cpp
<nana/gui/widgets/textbox.hpp>
<nana/gui/widgets/skeletons/text_editor.hpp>
<stdexcept>
<sstream>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/inner_fwd_implement.hpp>
1439496158 source:d:\git.repo\nana\source\gui\widgets\toolbar.cpp
<nana/gui/widgets/toolbar.hpp>
<nana/gui/tooltip.hpp>
<vector>
1439496158 source:d:\git.repo\nana\source\gui\widgets\treebox.cpp
<nana/gui/widgets/treebox.hpp>
<nana/gui/widgets/scroll.hpp>
<nana/gui/element.hpp>
<nana/gui/layout_utility.hpp>
<nana/system/platform.hpp>
<stdexcept>
1439746410 source:d:\git.repo\nana\source\gui\widgets\widget.cpp
<nana/gui/widgets/widget.hpp>
<nana/gui/tooltip.hpp>
<nana/gui/detail/widget_notifier_interface.hpp>
1408984042 source:d:\git.repo\nana\source\gui\wvl.cpp
<nana/gui/wvl.hpp>
1425221155 source:d:\git.repo\nana\source\internationalization.cpp
<nana/internationalization.hpp>
<nana/gui/widgets/widget.hpp>
<unordered_map>
<fstream>
<sstream>
<memory>
1423350893 source:d:\git.repo\nana\source\paint\detail\image_process_provider.cpp
<nana/paint/detail/image_process_provider.hpp>
<nana/paint/detail/image_processor.hpp>
1439496158 source:d:\git.repo\nana\source\paint\detail\native_paint_interface.cpp
<nana/config.hpp>
<nana/paint/detail/native_paint_interface.hpp>
<nana/paint/pixel_buffer.hpp>
<nana/gui/layout_utility.hpp>
<windows.h>
<X11/Xlib.h>
1439746289 source:d:\git.repo\nana\source\paint\graphics.cpp
<nana/config.hpp>
<nana/gui/detail/bedrock.hpp>
<nana/paint/graphics.hpp>
<nana/paint/detail/native_paint_interface.hpp>
<nana/paint/pixel_buffer.hpp>
<nana/gui/layout_utility.hpp>
<nana/unicode_bidi.hpp>
<algorithm>
<windows.h>
<X11/Xlib.h>
1439496158 source:d:\git.repo\nana\source\paint\image.cpp
<nana/config.hpp>
<nana/paint/image.hpp>
<algorithm>
<fstream>
<iterator>
<stdexcept>
<nana/paint/detail/image_impl_interface.hpp>
<nana/paint/pixel_buffer.hpp>
"detail/image_png.hpp"
"detail/image_bmp.hpp"
"detail/image_ico.hpp"
1439687843 d:\git.repo\nana\source\paint\detail\image_png.hpp
<nana/paint/detail/image_impl_interface.hpp>
<nana/extrlib/png.h>
<png.h>
<stdio.h>
<nana/paint/pixel_buffer.hpp>
1439496158 d:\git.repo\nana\source\paint\detail\image_bmp.hpp
<nana/paint/detail/image_impl_interface.hpp>
<memory>
1376313789 source:d:\git.repo\nana\source\paint\image_process_selector.cpp
<nana/paint/image_process_selector.hpp>
1439496158 source:d:\git.repo\nana\source\paint\pixel_buffer.cpp
<nana/config.hpp>
<nana/paint/pixel_buffer.hpp>
<nana/gui/layout_utility.hpp>
<nana/paint/detail/native_paint_interface.hpp>
<nana/paint/detail/image_process_provider.hpp>
<stdexcept>
1423350893 source:d:\git.repo\nana\source\paint\text_renderer.cpp
<nana/config.hpp>
<nana/paint/text_renderer.hpp>
<nana/unicode_bidi.hpp>
<nana/paint/detail/native_paint_interface.hpp>
1439496158 source:d:\git.repo\nana\source\system\dataexch.cpp
<nana/system/dataexch.hpp>
<nana/traits.hpp>
<nana/paint/graphics.hpp>
<vector>
<cassert>
<windows.h>
<nana/gui/detail/bedrock.hpp>
<nana/gui/detail/basic_window.hpp>
1387007333 source:d:\git.repo\nana\source\system\platform.cpp
<nana/deploy.hpp>
<windows.h>
<time.h>
<errno.h>
<unistd.h>
<sys/time.h>
<sys/syscall.h>
1365203879 source:d:\git.repo\nana\source\system\shared_wrapper.cpp
<nana/system/shared_wrapper.hpp>
<algorithm>
<iterator>
<dlfcn.h>
<windows.h>
1342280997 source:d:\git.repo\nana\source\system\timepiece.cpp
<nana/system/timepiece.hpp>
<nana/config.hpp>
<windows.h>
<sys/time.h>
1386165989 source:d:\git.repo\nana\source\threads\pool.cpp
<nana/threads/pool.hpp>
<nana/system/platform.hpp>
<time.h>
<deque>
<vector>
<nana/std_condition_variable.hpp>
<nana/std_mutex.hpp>
<condition_variable>
<mutex>
<windows.h>
<process.h>
<pthread.h>
1365203748 source:d:\git.repo\nana\source\traits.cpp
<nana/traits.hpp>
1439496158 source:d:\git.repo\nana\source\unicode_bidi.cpp
<nana/unicode_bidi.hpp>
1439830958 source:d:\git.repo\nana\source\gui\widgets\tabbar.cpp
<nana/gui/widgets/tabbar.hpp>
<nana/gui/widgets/menu.hpp>
<nana/paint/text_renderer.hpp>
<nana/gui/element.hpp>
<stdexcept>
<list>
<forward_list>

View File

@ -1,24 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
<File name="..\..\source\paint\text_renderer.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\source\gui\msgbox.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5894" topLine="205" />
</Cursor>
</File>
<File name="..\..\source\gui\detail\native_window_interface.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4901" topLine="171" />
</Cursor>
</File>
<File name="..\..\source\gui\detail\window_layout.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5198" topLine="161" />
</Cursor>
</File>
<File name="..\..\source\gui\detail\window_manager.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="30124" topLine="1046" />
<Cursor1 position="48249" topLine="407" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\listbox.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@ -26,9 +11,9 @@
<Cursor1 position="12428" topLine="532" />
</Cursor>
</File>
<File name="..\..\source\gui\dragger.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\source\gui\place.cpp" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1316" topLine="59" />
<Cursor1 position="63864" topLine="2449" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\menu.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@ -36,66 +21,26 @@
<Cursor1 position="27717" topLine="1044" />
</Cursor>
</File>
<File name="..\..\source\threads\pool.cpp" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5569" topLine="249" />
</Cursor>
</File>
<File name="..\..\source\gui\element.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20890" topLine="542" />
</Cursor>
</File>
<File name="..\..\source\gui\filebox.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="22934" topLine="871" />
</Cursor>
</File>
<File name="..\..\source\gui\msgbox.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="48249" topLine="407" />
</Cursor>
</File>
<File name="..\..\source\charset.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="412" topLine="15" />
</Cursor>
</File>
<File name="..\..\source\threads\pool.cpp" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5569" topLine="249" />
</Cursor>
</File>
<File name="..\..\source\gui\programming_interface.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5022" topLine="159" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\tabbar.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18615" topLine="760" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\textbox.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11188" topLine="459" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\toolbar.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2244" topLine="84" />
</Cursor>
</File>
<File name="..\..\source\detail\platform_spec_selector.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="587" topLine="2" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\treebox.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="15535" topLine="539" />
</Cursor>
</File>
<File name="..\..\source\audio\detail\buffer_preparation.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1924" topLine="62" />
</Cursor>
</File>
<File name="..\..\source\gui\tooltip.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4739" topLine="194" />
@ -126,29 +71,89 @@
<Cursor1 position="6998" topLine="275" />
</Cursor>
</File>
<File name="..\..\source\audio\detail\audio_device.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6256" topLine="215" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\combox.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="16572" topLine="610" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\tabbar.cpp" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="37420" topLine="1435" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\date_chooser.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="457" topLine="3" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\textbox.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11188" topLine="459" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\toolbar.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2244" topLine="84" />
</Cursor>
</File>
<File name="..\..\source\gui\widgets\treebox.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="15535" topLine="539" />
</Cursor>
</File>
<File name="..\..\source\gui\detail\native_window_interface.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4901" topLine="171" />
</Cursor>
</File>
<File name="..\..\source\gui\detail\window_layout.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5198" topLine="161" />
</Cursor>
</File>
<File name="..\..\source\gui\detail\window_manager.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="30124" topLine="1046" />
</Cursor>
</File>
<File name="..\..\source\paint\graphics.cpp" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="30961" topLine="1020" />
</Cursor>
</File>
<File name="..\..\source\gui\dragger.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1316" topLine="59" />
</Cursor>
</File>
<File name="..\..\source\paint\image.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3714" topLine="168" />
</Cursor>
</File>
<File name="..\..\source\audio\detail\buffer_preparation.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1924" topLine="62" />
</Cursor>
</File>
<File name="..\..\source\gui\element.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20890" topLine="542" />
</Cursor>
</File>
<File name="..\..\source\paint\text_renderer.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5894" topLine="205" />
</Cursor>
</File>
<File name="..\..\source\gui\filebox.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="22934" topLine="871" />
</Cursor>
</File>
<File name="..\..\source\audio\detail\audio_device.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6256" topLine="215" />
</Cursor>
</File>
</CodeBlocks_layout_file>

View File

@ -243,7 +243,6 @@
<ClCompile Include="..\..\source\internationalization.cpp" />
<ClCompile Include="..\..\source\paint\detail\image_process_provider.cpp" />
<ClCompile Include="..\..\source\paint\detail\native_paint_interface.cpp" />
<ClCompile Include="..\..\source\paint\gadget.cpp" />
<ClCompile Include="..\..\source\paint\graphics.cpp" />
<ClCompile Include="..\..\source\paint\image.cpp" />
<ClCompile Include="..\..\source\paint\image_process_selector.cpp" />
@ -277,8 +276,8 @@
<ClInclude Include="..\..\include\nana\extrlib\png.h" />
<ClInclude Include="..\..\include\nana\extrlib\pngconf.h" />
<ClInclude Include="..\..\include\nana\extrlib\pnglibconf.h" />
<ClInclude Include="..\..\include\nana\extrlib\zlib.h" />
<ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp" />
<ClInclude Include="..\..\include\nana\extrlib\zlib.h" />
<ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp" />
<ClInclude Include="..\..\include\nana\filesystem\file_iterator.hpp" />
<ClInclude Include="..\..\include\nana\filesystem\fs_utility.hpp" />
<ClInclude Include="..\..\include\nana\fwd.hpp" />
@ -383,4 +382,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -119,7 +119,7 @@
</ClCompile>
<ClCompile Include="..\..\source\detail\win32\platform_spec.cpp">
<Filter>Source Files\nana\detail\win32</Filter>
</ClCompile>
</ClCompile>
<ClCompile Include="..\..\source\filesystem\filesystem.cpp">
<Filter>Source Files\nana\filesystem</Filter>
</ClCompile>
@ -261,9 +261,6 @@
<ClCompile Include="..\..\source\paint\detail\native_paint_interface.cpp">
<Filter>Source Files\nana\paint\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\gadget.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\graphics.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
@ -645,7 +642,7 @@
</ClInclude>
<ClInclude Include="..\..\include\nana\extrlib\zlib.h">
<Filter>Header Files\extrlib</Filter>
</ClInclude>
</ClInclude>
<ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp">
<Filter>Header Files\filesystem</Filter>
</ClInclude>
@ -719,4 +716,4 @@
<Filter>Header Files\gui\widgets</Filter>
</ClInclude>
</ItemGroup>
</Project>
</Project>

View File

@ -1,9 +1,9 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.22823.1
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nana", "nana.vcxproj", "{25B21068-491B-4A9F-B99F-6C27BF31BAAD}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nana", "nana.vcxproj", "{98091380-2EC4-44B4-82A2-F0A6393BA908}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -13,14 +13,14 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Debug|x64.ActiveCfg = Debug|x64
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Debug|x64.Build.0 = Debug|x64
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Debug|x86.ActiveCfg = Debug|Win32
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Debug|x86.Build.0 = Debug|Win32
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Release|x64.ActiveCfg = Release|x64
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Release|x64.Build.0 = Release|x64
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Release|x86.ActiveCfg = Release|Win32
{25B21068-491B-4A9F-B99F-6C27BF31BAAD}.Release|x86.Build.0 = Release|Win32
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Debug|x64.ActiveCfg = Debug|x64
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Debug|x64.Build.0 = Debug|x64
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Debug|x86.ActiveCfg = Debug|Win32
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Debug|x86.Build.0 = Debug|Win32
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Release|x64.ActiveCfg = Release|x64
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Release|x64.Build.0 = Release|x64
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Release|x86.ActiveCfg = Release|Win32
{98091380-2EC4-44B4-82A2-F0A6393BA908}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -5,24 +5,24 @@
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{25B21068-491B-4A9F-B99F-6C27BF31BAAD}</ProjectGuid>
<ProjectGuid>{98091380-2EC4-44B4-82A2-F0A6393BA908}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>nana</RootNamespace>
<TargetPlatformVersion>8.1</TargetPlatformVersion>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -31,12 +31,6 @@
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@ -44,6 +38,12 @@
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@ -54,46 +54,30 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>../bin/</OutDir>
<IncludePath>..\..\include;$(IncludePath)</IncludePath>
<SourcePath>..\..\source;$(VC_SourcePath);</SourcePath>
<TargetName>$(ProjectName)_$(PlatformToolset)_$(Configuration)_$(PlatformShortName)</TargetName>
<IntDir>..\..\..\temp\$(ProjectName)\$(PlatformToolset)_$(Configuration)_$(PlatformShortName)\</IntDir>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IncludePath>../../include;$(IncludePath)</IncludePath>
<OutDir>..\bin\vc2015\</OutDir>
<TargetName>lib$(ProjectName)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IncludePath>..\..\include;$(IncludePath)</IncludePath>
<SourcePath>..\..\source;$(VC_SourcePath);</SourcePath>
<OutDir>../bin/</OutDir>
<TargetName>$(ProjectName)_$(PlatformToolset)_$(Configuration)_$(PlatformShortName)</TargetName>
<IntDir>..\..\..\temp\$(ProjectName)\$(PlatformToolset)_$(Configuration)_$(PlatformShortName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>../bin/</OutDir>
<IncludePath>..\..\include;$(IncludePath)</IncludePath>
<SourcePath>..\..\source;$(VC_SourcePath);</SourcePath>
<TargetName>$(ProjectName)_$(PlatformToolset)_$(Configuration)_$(PlatformShortName)</TargetName>
<IntDir>..\..\..\temp\$(ProjectName)\$(PlatformToolset)_$(Configuration)_$(PlatformShortName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IncludePath>..\..\include;$(IncludePath)</IncludePath>
<SourcePath>..\..\source;$(VC_SourcePath);</SourcePath>
<OutDir>../bin/</OutDir>
<TargetName>$(ProjectName)_$(PlatformToolset)_$(Configuration)_$(PlatformShortName)</TargetName>
<IntDir>..\..\..\temp\$(ProjectName)\$(PlatformToolset)_$(Configuration)_$(PlatformShortName)\</IntDir>
<IncludePath>../../include;$(IncludePath)</IncludePath>
<OutDir>..\bin\vc2015\</OutDir>
<TargetName>lib$(ProjectName)d</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@ -102,17 +86,11 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Lib>
<OutputFile>$(TargetPath)</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
@ -120,15 +98,14 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Lib>
<OutputFile>$(TargetPath)</OutputFile>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -140,8 +117,6 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@ -149,9 +124,6 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<Lib>
<OutputFile>$(TargetPath)</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
@ -161,8 +133,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@ -171,7 +142,7 @@
<OptimizeReferences>true</OptimizeReferences>
</Link>
<Lib>
<OutputFile>$(TargetPath)</OutputFile>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
@ -244,7 +215,6 @@
<ClCompile Include="..\..\source\internationalization.cpp" />
<ClCompile Include="..\..\source\paint\detail\image_process_provider.cpp" />
<ClCompile Include="..\..\source\paint\detail\native_paint_interface.cpp" />
<ClCompile Include="..\..\source\paint\gadget.cpp" />
<ClCompile Include="..\..\source\paint\graphics.cpp" />
<ClCompile Include="..\..\source\paint\image.cpp" />
<ClCompile Include="..\..\source\paint\image_process_selector.cpp" />
@ -252,7 +222,6 @@
<ClCompile Include="..\..\source\paint\text_renderer.cpp" />
<ClCompile Include="..\..\source\system\dataexch.cpp" />
<ClCompile Include="..\..\source\system\platform.cpp" />
<ClCompile Include="..\..\source\system\shared_wrapper.cpp" />
<ClCompile Include="..\..\source\system\timepiece.cpp" />
<ClCompile Include="..\..\source\threads\pool.cpp" />
<ClCompile Include="..\..\source\traits.cpp" />

View File

@ -13,298 +13,289 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Source Files\nana">
<UniqueIdentifier>{b0bd11b1-bcbb-4e05-885e-44295bc1a7bb}</UniqueIdentifier>
<Filter Include="Source Files\audio">
<UniqueIdentifier>{9630500a-5aca-4625-a11b-1ba83a93895c}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\audio">
<UniqueIdentifier>{aab16aa3-c8d4-4495-8606-1b21ae739ee5}</UniqueIdentifier>
<Filter Include="Source Files\detail">
<UniqueIdentifier>{d43db913-0472-45f6-889e-b147a7b3eb7e}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\audio\detail">
<UniqueIdentifier>{c395f107-7102-415b-a019-54e7cf3575af}</UniqueIdentifier>
<Filter Include="Source Files\filesystem">
<UniqueIdentifier>{4e91af62-8e45-41d5-8bb9-1deb850de937}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\detail">
<UniqueIdentifier>{e2569be2-9e68-477d-8b59-e248595de6c7}</UniqueIdentifier>
<Filter Include="Source Files\gui">
<UniqueIdentifier>{c575e702-d7d3-48d2-a465-30e51ca72f8d}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\detail\win32">
<UniqueIdentifier>{52ed7f8e-fa48-495e-af1f-4df013205a35}</UniqueIdentifier>
<Filter Include="Source Files\paint">
<UniqueIdentifier>{e1fbd69a-2a82-419e-854a-0b5dbd0e0237}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\filesystem">
<UniqueIdentifier>{87d14798-9015-4162-b9ab-72c741cff063}</UniqueIdentifier>
<Filter Include="Source Files\system">
<UniqueIdentifier>{295ba47e-9dc7-4375-82bc-443b767eb87d}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\gui">
<UniqueIdentifier>{4f8e7d23-9fe1-4409-bb03-2bd0809e606b}</UniqueIdentifier>
<Filter Include="Source Files\threads">
<UniqueIdentifier>{b0854b25-60fc-47e2-a9df-5e4f2d28065c}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\gui\detail">
<UniqueIdentifier>{85c9c1bb-d87b-4481-bf3c-7425f680a12d}</UniqueIdentifier>
<Filter Include="Source Files\audio\detail">
<UniqueIdentifier>{b3023f5e-2759-409d-b6e8-5ef2fe6601ae}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\gui\detail\win32">
<UniqueIdentifier>{8058b530-86ec-4d72-890d-345aa30db056}</UniqueIdentifier>
<Filter Include="Source Files\detail\win32">
<UniqueIdentifier>{2ce139f3-ef8e-48b7-a82a-68003eac75da}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\gui\widgets">
<UniqueIdentifier>{87b124cb-408d-460b-a81b-8a788bbae0d9}</UniqueIdentifier>
<Filter Include="Source Files\gui\detail">
<UniqueIdentifier>{b9f9a5a8-fd1a-4b99-b530-d8a4c45e62ec}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\gui\widgets\skeletons">
<UniqueIdentifier>{b10db2f1-0542-421a-9e1d-4357e3be5f68}</UniqueIdentifier>
<Filter Include="Source Files\gui\widgets">
<UniqueIdentifier>{4b04c197-4a1e-41f9-bfa3-d82c18bcad51}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\paint">
<UniqueIdentifier>{59f186c8-f5f8-4499-8e19-f278d4754220}</UniqueIdentifier>
<Filter Include="Source Files\gui\detail\win32">
<UniqueIdentifier>{cd6e7f3f-fe5b-44c6-ae8d-15554f926055}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\paint\detail">
<UniqueIdentifier>{5acf1733-47b2-4872-a105-66c7ad15cd39}</UniqueIdentifier>
<Filter Include="Source Files\gui\widgets\skeletons">
<UniqueIdentifier>{60f588f2-bdb9-4b1d-9e23-40a73f327283}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\system">
<UniqueIdentifier>{a81fa10e-1274-44e0-92a0-434fa28f89ae}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\nana\threads">
<UniqueIdentifier>{e95b4a72-643f-4416-af95-b0bbaf7f0c57}</UniqueIdentifier>
<Filter Include="Source Files\paint\detail">
<UniqueIdentifier>{53feb93f-2b86-4bf5-b2f3-f60ef1bbbf76}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\source\audio\detail\audio_device.cpp">
<Filter>Source Files\nana\audio\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\audio\detail\audio_stream.cpp">
<Filter>Source Files\nana\audio\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\audio\detail\buffer_preparation.cpp">
<Filter>Source Files\nana\audio\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\audio\player.cpp">
<Filter>Source Files\nana\audio</Filter>
</ClCompile>
<ClCompile Include="..\..\source\detail\win32\platform_spec.cpp">
<Filter>Source Files\nana\detail\win32</Filter>
</ClCompile>
<ClCompile Include="..\..\source\filesystem\file_iterator.cpp">
<Filter>Source Files\nana\filesystem</Filter>
</ClCompile>
<ClCompile Include="..\..\source\filesystem\fs_utility.cpp">
<Filter>Source Files\nana\filesystem</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\win32\bedrock.cpp">
<Filter>Source Files\nana\gui\detail\win32</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\basic_window.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\drawer.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\native_window_interface.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\window_manager.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\skeletons\text_editor.cpp">
<Filter>Source Files\nana\gui\widgets\skeletons</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\button.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\categorize.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\checkbox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\combox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\date_chooser.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\float_listbox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\form.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\frame.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\label.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\listbox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\menu.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\menubar.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\panel.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\picture.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\progress.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\scroll.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\slider.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\tabbar.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\textbox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\toolbar.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\treebox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\widget.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\animation.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\basis.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\dragger.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\drawing.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\effects.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\element.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\filebox.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\layout_utility.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\msgbox.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\place.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\programming_interface.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\timer.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\tooltip.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\wvl.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\detail\image_process_provider.cpp">
<Filter>Source Files\nana\paint\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\detail\native_paint_interface.cpp">
<Filter>Source Files\nana\paint\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\gadget.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\graphics.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\image.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\image_process_selector.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\pixel_buffer.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\text_renderer.cpp">
<Filter>Source Files\nana\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\dataexch.cpp">
<Filter>Source Files\nana\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\platform.cpp">
<Filter>Source Files\nana\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\shared_wrapper.cpp">
<Filter>Source Files\nana\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\timepiece.cpp">
<Filter>Source Files\nana\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\threads\pool.cpp">
<Filter>Source Files\nana\threads</Filter>
</ClCompile>
<ClCompile Include="..\..\source\any.cpp">
<Filter>Source Files\nana</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\basic_types.cpp">
<Filter>Source Files\nana</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\charset.cpp">
<Filter>Source Files\nana</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\datetime.cpp">
<Filter>Source Files\nana</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\deploy.cpp">
<Filter>Source Files\nana</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\exceptions.cpp">
<Filter>Source Files\nana</Filter>
</ClCompile>
<ClCompile Include="..\..\source\traits.cpp">
<Filter>Source Files\nana</Filter>
</ClCompile>
<ClCompile Include="..\..\source\unicode_bidi.cpp">
<Filter>Source Files\nana</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\window_layout.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\element_store.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\bedrock_pi.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\events_operation.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\notifier.cpp">
<Filter>Source Files\nana\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\state_cursor.cpp">
<Filter>Source Files\nana\gui</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\internationalization.cpp">
<Filter>Source Files\nana</Filter>
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\color_schemes.cpp">
<Filter>Source Files\nana\gui\detail</Filter>
<ClCompile Include="..\..\source\traits.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\screen.cpp">
<Filter>Source Files\nana\gui</Filter>
<ClCompile Include="..\..\source\unicode_bidi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\spinbox.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
<ClCompile Include="..\..\source\audio\detail\audio_device.cpp">
<Filter>Source Files\audio\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\audio\detail\audio_stream.cpp">
<Filter>Source Files\audio\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\audio\detail\buffer_preparation.cpp">
<Filter>Source Files\audio\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\audio\player.cpp">
<Filter>Source Files\audio</Filter>
</ClCompile>
<ClCompile Include="..\..\source\detail\win32\platform_spec.cpp">
<Filter>Source Files\detail\win32</Filter>
</ClCompile>
<ClCompile Include="..\..\source\filesystem\file_iterator.cpp">
<Filter>Source Files\filesystem</Filter>
</ClCompile>
<ClCompile Include="..\..\source\filesystem\filesystem.cpp">
<Filter>Source Files\nana\filesystem</Filter>
<Filter>Source Files\filesystem</Filter>
</ClCompile>
<ClCompile Include="..\..\source\filesystem\fs_utility.cpp">
<Filter>Source Files\filesystem</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\basic_window.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\bedrock_pi.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\color_schemes.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\drawer.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\element_store.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\events_operation.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\native_window_interface.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\window_layout.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\window_manager.cpp">
<Filter>Source Files\gui\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\detail\win32\bedrock.cpp">
<Filter>Source Files\gui\detail\win32</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\skeletons\text_editor.cpp">
<Filter>Source Files\gui\widgets\skeletons</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\button.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\categorize.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\checkbox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\combox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\date_chooser.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\float_listbox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\form.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\frame.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\group.cpp">
<Filter>Source Files\nana\gui\widgets</Filter>
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\label.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\listbox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\menu.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\menubar.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\panel.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\picture.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\progress.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\scroll.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\slider.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\spinbox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\tabbar.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\textbox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\toolbar.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\treebox.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\widgets\widget.cpp">
<Filter>Source Files\gui\widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\animation.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\basis.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\dragger.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\drawing.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\effects.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\element.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\filebox.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\layout_utility.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\msgbox.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\notifier.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\place.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\programming_interface.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\screen.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\state_cursor.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\timer.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\tooltip.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\gui\wvl.cpp">
<Filter>Source Files\gui</Filter>
</ClCompile>
<ClCompile Include="..\..\source\threads\pool.cpp">
<Filter>Source Files\threads</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\dataexch.cpp">
<Filter>Source Files\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\platform.cpp">
<Filter>Source Files\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\system\timepiece.cpp">
<Filter>Source Files\system</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\detail\image_process_provider.cpp">
<Filter>Source Files\paint\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\detail\native_paint_interface.cpp">
<Filter>Source Files\paint\detail</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\graphics.cpp">
<Filter>Source Files\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\image.cpp">
<Filter>Source Files\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\image_process_selector.cpp">
<Filter>Source Files\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\pixel_buffer.cpp">
<Filter>Source Files\paint</Filter>
</ClCompile>
<ClCompile Include="..\..\source\paint\text_renderer.cpp">
<Filter>Source Files\paint</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1 +0,0 @@
The libpng.a is for MinGW(Not linux), and other .lib files are for VS2013

View File

@ -1 +1,3 @@
The libpng.a is for MinGW(Not linux), and other .lib files are for VS2013
You can download the precompiled external libraries at http://sourceforge.net/projects/nanapro/files/extrlib/

View File

@ -106,6 +106,8 @@ namespace detail
~drawable_impl_type();
void fgcolor(const ::nana::color&); //deprecated
unsigned get_color() const;
unsigned get_text_color() const;
void set_color(const ::nana::color&);
void set_text_color(const ::nana::color&);

View File

@ -146,6 +146,7 @@ namespace detail
void fgcolor(const ::nana::color&); //deprecated
unsigned get_color() const;
unsigned get_text_color() const;
void set_color(const ::nana::color&);
void set_text_color(const ::nana::color&);

View File

@ -161,6 +161,9 @@ namespace detail
std::vector<std::pair<core_window_t*, unsigned long>> shortkeys(core_window_t*, bool with_children);
core_window_t* find_shortkey(native_window_type, unsigned long key);
void set_safe_place(core_window_t* wd, std::function<void()>&& fn);
void call_safe_place(unsigned thread_id);
private:
void _m_disengage(core_window_t*, core_window_t* for_new);
void _m_destroy(core_window_t*);

View File

@ -27,19 +27,35 @@ namespace nana
namespace element
{
namespace detail
{
class element_abstract
{
public:
using graph_reference = ::nana::paint::graphics&;
virtual ~element_abstract() = default;
};
class factory_abstract
{
public:
virtual ~factory_abstract() = default;
virtual void destroy(element_abstract *);
};
}
class element_interface
: public detail::element_abstract
{
public:
using graph_reference = paint::graphics&;
virtual ~element_interface() = default;
virtual bool draw(graph_reference, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle&, element_state) = 0;
};
class crook_interface
: public detail::element_abstract
{
public:
using graph_reference = paint::graphics&;
using state = checkstate;
struct data
@ -47,25 +63,21 @@ namespace nana
state check_state;
bool radio;
};
virtual ~crook_interface() = default;
virtual bool draw(graph_reference, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle&, element_state, const data&) = 0;
};
class border_interface
: public detail::element_abstract
{
public:
using graph_reference = paint::graphics&;
virtual ~border_interface() = default;
virtual bool draw(graph_reference, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle&, element_state, unsigned weight) = 0;
};
class arrow_interface
: public detail::element_abstract
{
public:
using graph_reference = paint::graphics&;
virtual ~arrow_interface() = default;
virtual bool draw(graph_reference, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle&, element_state, direction) = 0;
};
@ -74,10 +86,10 @@ namespace nana
public:
template<typename ElementInterface>
struct factory_interface
: public detail::factory_abstract
{
virtual ~factory_interface(){}
virtual ElementInterface* create() const = 0;
virtual void destroy(ElementInterface*) const = 0;
};
template<typename Element, typename ElementInterface>
@ -85,38 +97,39 @@ namespace nana
: public factory_interface<ElementInterface>
{
public:
typedef factory_interface<ElementInterface> interface_type;
using interface_type = factory_interface<ElementInterface>;
ElementInterface * create() const override
{
return (new Element);
}
void destroy(ElementInterface * p) const override
{
delete p;
}
};
void add_crook(const std::string& name, const pat::cloneable<factory_interface<crook_interface>>&);
crook_interface* const * keeper_crook(const std::string& name);
void add_arrow(const std::string&, const pat::cloneable<factory_interface<arrow_interface>>&);
arrow_interface* const * cite_arrow(const std::string&);
void add_border(const std::string&, const pat::cloneable<factory_interface<border_interface>>&);
border_interface* const * keeper_border(const std::string&);
void add_arrow(const std::string&, const pat::cloneable<factory_interface<arrow_interface>>&);
arrow_interface* const * keeper_arrow(const std::string&);
border_interface* const * cite_border(const std::string&);
void add_button(const std::string&, const pat::cloneable<factory_interface<element_interface>>&);
element_interface* const* keeper_button(const std::string&);
element_interface* const* cite_button(const std::string&);
void add_x_icon(const std::string& name, const pat::cloneable<factory_interface<element_interface>>&);
element_interface* const* cite_x_icon(const std::string&);
void add_crook(const std::string& name, const pat::cloneable<factory_interface<crook_interface>>&);
crook_interface* const * cite_crook(const std::string& name);
void add_cross(const std::string& name, const pat::cloneable<factory_interface<element_interface>>&);
element_interface* const* cite_cross(const std::string&);
};
class crook;
template<typename UserElement>
void add_crook(const std::string& name)
class arrow;
template<typename ArrowElement>
void add_arrow(const std::string& name)
{
using factory_t = provider::factory<UserElement, crook_interface>;
provider().add_crook(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
using factory_t = provider::factory<ArrowElement, arrow_interface>;
provider().add_arrow(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
class border;
@ -127,14 +140,6 @@ namespace nana
provider().add_border(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
class arrow;
template<typename ArrowElement>
void add_arrow(const std::string& name)
{
using factory_t = provider::factory<ArrowElement, arrow_interface>;
provider().add_arrow(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
class button;
template<typename ButtonElement>
void add_button(const std::string& name)
@ -142,6 +147,30 @@ namespace nana
using factory_t = provider::factory<ButtonElement, element_interface>;
provider().add_button(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
class x_icon;
template<typename UserElement>
void add_x_icon(const std::string& name)
{
using factory_t = provider::factory<UserElement, element_interface>;
provider().add_x_icon(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
class crook;
template<typename UserElement>
void add_crook(const std::string& name)
{
using factory_t = provider::factory<UserElement, crook_interface>;
provider().add_crook(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
class cross;
template<typename UserElement>
void add_cross(const std::string& name)
{
using factory_t = provider::factory<UserElement, element_interface>;
provider().add_cross(name, pat::cloneable<typename factory_t::interface_type>(factory_t()));
}
}//end namespace element
template<typename Element> class facade;
@ -169,9 +198,27 @@ namespace nana
bool draw(graph_reference, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle& r, element_state) override;
private:
element::crook_interface::data data_;
element::crook_interface* const * keeper_;
element::crook_interface* const * cite_;
}; //end class facade<element::crook>
template<> class facade<element::cross>
: public element::element_interface
{
public:
facade(const char* name = nullptr);
void switch_to(const char*);
void thickness(unsigned thk);
void size(unsigned size_pixels);
public:
//Implement element_interface
bool draw(graph_reference, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle&, element_state) override;
private:
unsigned thickness_{6};
unsigned size_{ 14 };
element::element_interface* const * cite_;
};
template<>
class facade<element::border>
: public element::element_interface
@ -185,7 +232,7 @@ namespace nana
//Implement element_interface
bool draw(graph_reference, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle&, element_state) override;
private:
element::border_interface* const * keeper_;
element::border_interface* const * cite_;
};//end class facade<element::border>
template<>
@ -207,7 +254,7 @@ namespace nana
//Implement element_interface
bool draw(graph_reference, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle&, element_state) override;
private:
element::arrow_interface* const * keeper_;
element::arrow_interface* const * cite_;
::nana::direction dir_{::nana::direction::north};
};//end class facade<element::arrow>
@ -222,9 +269,22 @@ namespace nana
//Implement element_interface
bool draw(graph_reference, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle&, element_state) override;
private:
element::element_interface* const * keeper_;
element::element_interface* const * cite_;
};//end class facade<element::button>
template<>
class facade<element::x_icon>
: public element::element_interface
{
public:
facade(const char* name = nullptr);
void switch_to(const char*);
public:
//Implement element_interface
bool draw(graph_reference, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle&, element_state) override;
private:
element::element_interface* const * cite_;
};//end class facade<element::button>
namespace element
{

View File

@ -109,9 +109,11 @@ namespace nana
window window_handle() const;
void div(const char* s); ///< Divides the attached widget into fields.
void modify(const char* field_name, const char* div_text); ///< Modifies a specified field.
field_reference field(const char* name);///< Returns a field with the specified name.
void field_visible(const char* filed_name, bool visible); ///<<Shows/Hides an existing field.
void field_visible(const char* field_name, bool visible); ///<<Shows/Hides an existing field.
bool field_visible(const char* field_name) const; ///<Determines whether the specified field is visible.
void field_display(const char* field_name, bool display); ///<Displays/Discards an existing field.
@ -122,6 +124,19 @@ namespace nana
void erase(window handle); ///< Erases a window from field.
field_reference operator[](const char* name); ///< Returns a field with the specified name. Equal to field();
/// Add a panel factory
template<typename Panel, typename ...Args>
place& dock(const std::string& dockname, const std::string& factory_name, Args&& ... args)
{
return dock(dockname, factory_name, std::bind([](window parent, Args & ... args)
{
return std::unique_ptr<widget>(new Panel(parent, std::forward<Args>(args)...));
}, std::placeholders::_1, args...));
}
place& dock(const std::string& dockname, std::string factory_name, std::function<std::unique_ptr<widget>(window)> factory);
place& dock_create(const std::string& factory);
private:
implement * impl_;
};

View File

@ -29,6 +29,13 @@ namespace nana
/// Traits for widget classes
template<typename Widget>
struct widget_traits
{
using event_type = typename Widget::event_type;
using scheme_type = typename Widget::scheme_type;
};
template<>
struct widget_traits<widget>
{
using event_type = ::nana::general_events;
using scheme_type = ::nana::widget_colors;
@ -191,7 +198,7 @@ namespace API
}
point window_position(window);
void move_window(window, int x, int y);
void move_window(window, const point&);
void move_window(window wd, const rectangle&);
void bring_top(window, bool activated);
@ -298,6 +305,8 @@ namespace API
bool ignore_mouse_focus(window, bool ignore); ///< Enables/disables the mouse focus, it returns the previous state
bool ignore_mouse_focus(window); ///< Determines whether the mouse focus is enabled
void at_safe_place(window, std::function<void()>);
}//end namespace API
}//end namespace nana

View File

@ -229,7 +229,8 @@ namespace nana
nana::any * _m_anyobj(std::size_t pos, bool alloc_if_empty) const override;
};
namespace dev
/*
namespace dev //deprecated
{
template<>
struct widget_traits<combox>
@ -238,5 +239,6 @@ namespace nana
using scheme_type = ::nana::widgets::skeletons::text_editor_scheme;
};
}
*/
}
#endif

View File

@ -664,14 +664,16 @@ By \a clicking on one header the list get \a reordered, first up, and then down
void _m_erase_key(nana::detail::key_interface*);
};
/*
namespace dev
{
template<>
struct widget_traits<listbox>
struct widget_traits<listbox> //deprecated
{
using event_type = drawerbase::listbox::listbox_events;
using scheme_type = drawerbase::listbox::scheme;
};
}
*/
}//end namespace nana
#endif

View File

@ -14,7 +14,6 @@
#define NANA_GUI_WIDGET_SCROLL_HPP
#include "widget.hpp"
#include <nana/paint/gadget.hpp>
#include <nana/gui/timer.hpp>
namespace nana
@ -444,7 +443,7 @@ namespace nana
/// @return true if the vlaue is changed.
bool make_page_scroll(bool forward)
{
return this->make_step(forward, range() - 1);
return this->make_step(forward, static_cast<unsigned>(range() - 1));
}
};//end class scroll
}//end namespace nana

View File

@ -110,15 +110,17 @@ namespace nana
void _m_caption(::nana::string&&);
}; //end class spinbox
/*
namespace dev
{
template<>
struct widget_traits<spinbox>
struct widget_traits<spinbox> //deprecated
{
using event_type = drawerbase::spinbox::spinbox_events;
using scheme_type = ::nana::widgets::skeletons::text_editor_scheme;
};
}
*/
}//end namespace nana
#endif //NANA_GUI_WIDGET_SPINBOX_HPP

View File

@ -14,7 +14,6 @@
#ifndef NANA_GUI_WIDGET_TABBAR_HPP
#define NANA_GUI_WIDGET_TABBAR_HPP
#include "widget.hpp"
#include "../../paint/gadget.hpp"
#include <nana/pat/cloneable.hpp>
#include <nana/any.hpp>
@ -30,7 +29,7 @@ namespace nana
T & value;
arg_tabbar(tabbar<T>& wdg, T& v)
: widget{ wdg }, value{ v }
: widget(wdg), value{ v }
{}
};
@ -337,15 +336,19 @@ namespace nana
namespace nana
{
namespace ng
{
{
namespace drawerbase
{
namespace tabbar_lite
{
class model;
struct events
: public general_events
{
basic_event<event_arg> selected;
};
class driver
: public drawer_trigger
{
@ -353,7 +356,7 @@ namespace nana
driver();
~driver();
model* get_model();
model* get_model() const throw();
private:
//Overrides drawer_trigger's method
void attached(widget_reference, graph_reference) override;
@ -367,18 +370,39 @@ namespace nana
}
}//end namespace drawerbase
class tabbar_lite
: public widget_object<category::widget_tag, drawerbase::tabbar_lite::driver>
class tabbar_lite
: public widget_object<category::widget_tag, drawerbase::tabbar_lite::driver, drawerbase::tabbar_lite::events>
{
public:
tabbar_lite() = default;
tabbar_lite(window, bool visible = true, const::nana::rectangle& = {});
public: //capacity
std::size_t length() const;
public: //modifiers
void attach(std::size_t pos, window);
window attach(std::size_t pos) const;
void push_back(std::string text, ::nana::any par = {});
void push_front(std::string text, ::nana::any par = {});
std::size_t selected() const;
void erase(std::size_t pos, bool close_attached = true);
};
/*
namespace dev
{
/// Traits for widget classes
template<>
struct widget_traits<tabbar_lite> //deprecated
{
public:
tabbar_lite() = default;
tabbar_lite(window, bool visible = true, const::nana::rectangle& = {});
void push_back(std::string text, ::nana::any par = {});
void push_front(std::string text, ::nana::any par = {});
using event_type = drawerbase::tabbar_lite::events;
using scheme_type = ::nana::widget_colors;
};
}
*/
}
#endif

View File

@ -195,15 +195,17 @@ namespace nana
void _m_typeface(const paint::font&) override;
};
/*
namespace dev
{
/// Traits for widget classes
template<>
struct widget_traits<textbox>
struct widget_traits<textbox> //deprecated
{
using event_type = drawerbase::textbox::textbox_events;
using scheme_type = ::nana::widgets::skeletons::text_editor_scheme;
};
}
*/
}//end namespace nana
#endif

View File

@ -19,7 +19,6 @@
#define NANA_GUI_WIDGETS_TREEBOX_HPP
#include "widget.hpp"
#include "detail/compset.hpp"
#include <nana/paint/gadget.hpp>
#include "detail/tree_cont.hpp"
#include <nana/gui/timer.hpp>
#include <nana/any.hpp>

View File

@ -134,7 +134,8 @@ namespace nana
protected:
typedef DrawerTrigger drawer_trigger_t;
public:
using scheme_type = Scheme;
using scheme_type = Scheme;
using event_type = Events;
widget_object()
: events_{ std::make_shared<Events>() },
@ -147,7 +148,7 @@ namespace nana
API::close_window(handle_);
}
Events& events() const
event_type& events() const
{
return *events_;
}
@ -228,6 +229,7 @@ namespace nana
typedef DrawerTrigger drawer_trigger_t;
public:
using scheme_type = Scheme;
using event_type = Events;
widget_object()
: events_{ std::make_shared<Events>() }, scheme_{ API::dev::make_scheme<scheme_type>() }
@ -239,7 +241,7 @@ namespace nana
API::close_window(handle_);
}
Events& events() const
event_type& events() const
{
return *events_;
}
@ -297,6 +299,7 @@ namespace nana
typedef DrawerTrigger drawer_trigger_t;
public:
using scheme_type = Scheme;
using event_type = Events;
widget_object()
{
@ -322,7 +325,7 @@ namespace nana
API::close_window(handle_);
}
Events& events() const
event_type& events() const
{
return *events_;
}
@ -451,6 +454,7 @@ namespace nana
typedef int drawer_trigger_t;
public:
using scheme_type = Scheme;
using event_type = Events;
widget_object()
: events_{ std::make_shared<Events>() }, scheme_{ API::dev::make_scheme<scheme_type>() }
@ -462,7 +466,7 @@ namespace nana
API::close_window(handle_);
}
Events& events() const
event_type& events() const
{
return *events_;
}

View File

@ -1,33 +0,0 @@
/*
* Graphics Gadget Implementation
* Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* @file: nana/paint/gadget.hpp
*/
#ifndef NANA_PAINT_GADGET_HPP
#define NANA_PAINT_GADGET_HPP
#include "graphics.hpp"
#include "image.hpp"
#include <nana/basic_types.hpp>
namespace nana
{
namespace paint
{
namespace gadget
{
void close_16_pixels(::nana::paint::graphics&, int x, int y, unsigned style, const color&);
void cross(::nana::paint::graphics&, int x, int y, unsigned size, unsigned thickness, const nana::color&);
}//end namespace gadget
}//end namespace paint
}//end namespace nana
#endif

View File

@ -136,8 +136,11 @@ namespace nana
/// @param file_utf8 A UTF-8 string to a filename
void save_as_file(const char* file_utf8) const throw();
void set_color(const ::nana::color&);
void set_text_color(const ::nana::color&);
void set_color(const ::nana::color&); //deprecated, graphics::palette() instead
void set_text_color(const ::nana::color&); //deprecated, graphics::palette() instead
::nana::color palette(bool for_text) const;
graphics& palette(bool for_text, const ::nana::color&);
unsigned bidi_string(const nana::point&, const char_t *, std::size_t len);
unsigned bidi_string(const point& pos, const char*, std::size_t len);

View File

@ -21,62 +21,50 @@ namespace nana{ namespace pat{
namespace detail
{
template<typename T>
class cloneable_interface
{
public:
typedef T interface_t;
typedef cloneable_interface cloneable_t;
virtual ~cloneable_interface() = default;
virtual interface_t& refer() = 0;
virtual const interface_t& refer() const = 0;
virtual cloneable_t* clone() const = 0;
virtual void * get() = 0;
virtual cloneable_interface* clone() const = 0;
virtual void self_delete() const = 0;
};
struct cloneable_interface_deleter
{
void operator()(cloneable_interface * p)
{
if (p)
p->self_delete();
}
};
template<typename T, typename SuperOfT>
template<typename T>
class cloneable_wrapper
: public cloneable_interface<SuperOfT>
: public cloneable_interface
{
public:
typedef T value_t;
typedef typename cloneable_interface<SuperOfT>::interface_t interface_t;
using value_type = T;
cloneable_wrapper()
cloneable_wrapper() = default;
cloneable_wrapper(const value_type& obj)
:value_obj_(obj)
{}
cloneable_wrapper(const value_t& obj)
:object_(obj)
cloneable_wrapper(value_type&& rv)
:value_obj_(std::move(rv))
{}
cloneable_wrapper(value_t&& rv)
:object_(std::move(rv))
{}
template<typename U>
cloneable_wrapper(const U& u)
: object_(u)
{}
template<typename U>
cloneable_wrapper(U& u)
:object_(u)
{}
virtual interface_t& refer() override
private:
//Implement cloneable_interface
virtual void* get() override
{
return object_;
return &value_obj_;
}
virtual const interface_t& refer() const override
virtual cloneable_interface* clone() const override
{
return object_;
}
virtual cloneable_interface<interface_t>* clone() const override
{
return (new cloneable_wrapper(object_));
return (new cloneable_wrapper{ value_obj_ });
}
virtual void self_delete() const override
@ -84,28 +72,20 @@ namespace nana{ namespace pat{
(delete this);
}
private:
value_t object_;
value_type value_obj_;
};
}//end namespace detail
template<typename Base, bool Mutable = false>
class cloneable
{
using base_t = Base;
using interface_t = detail::cloneable_interface < base_t > ;
using cloneable_interface = detail::cloneable_interface;
using const_base_ptr = typename std::conditional<Mutable, base_t*, const base_t*>::type;
using const_base_ref = typename std::conditional<Mutable, base_t&, const base_t&>::type;
struct deleter
{
void operator()(interface_t * p)
{
if(p)
p->self_delete();
}
};
template<typename OtherBase, bool OtherMutable> friend class cloneable;
struct inner_bool
{
@ -125,16 +105,16 @@ namespace nana{ namespace pat{
template<typename T, typename member_enabled<T>::type* = nullptr>
cloneable(T&& t)
: cwrapper_(new detail::cloneable_wrapper<typename std::remove_cv<typename std::remove_reference<T>::type>::type, base_t>(std::forward<T>(t)), deleter()),
fast_ptr_(&(cwrapper_->refer()))
: cwrapper_(new detail::cloneable_wrapper<typename std::remove_cv<typename std::remove_reference<T>::type>::type>(std::forward<T>(t)), detail::cloneable_interface_deleter()),
fast_ptr_(reinterpret_cast<typename std::remove_cv<typename std::remove_reference<T>::type>::type*>(cwrapper_->get()))
{}
cloneable(const cloneable& r)
{
if(r.cwrapper_)
{
cwrapper_ = std::shared_ptr<interface_t>(r.cwrapper_->clone(), deleter());
fast_ptr_ = &(cwrapper_->refer());
cwrapper_ = std::move(std::shared_ptr<cloneable_interface>(r.cwrapper_->clone(), detail::cloneable_interface_deleter{}));
fast_ptr_ = reinterpret_cast<base_t*>(cwrapper_->get());
}
}
@ -145,12 +125,27 @@ namespace nana{ namespace pat{
r.fast_ptr_ = nullptr;
}
template<typename OtherBase, typename std::enable_if<std::is_base_of<base_t, OtherBase>::value>::type* = nullptr>
cloneable(const cloneable<OtherBase, Mutable>& other)
{
if (other)
{
char* value_ptr = reinterpret_cast<char*>(other.cwrapper_->get());
char* base_ptr = reinterpret_cast<char*>(other.fast_ptr_);
auto ptr_diff = std::distance(base_ptr, value_ptr);
cwrapper_.reset(other.cwrapper_->clone(), detail::cloneable_interface_deleter{});
fast_ptr_ = reinterpret_cast<OtherBase*>(reinterpret_cast<char*>(cwrapper_->get()) - ptr_diff);
}
}
cloneable & operator=(const cloneable& r)
{
if((this != &r) && r.cwrapper_)
{
cwrapper_ = std::shared_ptr<interface_t>(r.cwrapper_->clone(), deleter());
fast_ptr_ = &(cwrapper_->refer());
cwrapper_ = std::shared_ptr<cloneable_interface>(r.cwrapper_->clone(), detail::cloneable_interface_deleter());
fast_ptr_ = reinterpret_cast<base_t*>(cwrapper_->get());
}
return *this;
}
@ -159,10 +154,8 @@ namespace nana{ namespace pat{
{
if(this != &r)
{
cwrapper_ = r.cwrapper_;
cwrapper_ = std::move(r.cwrapper_);
fast_ptr_ = r.fast_ptr_;
r.cwrapper_.reset();
r.fast_ptr_ = nullptr;
}
return *this;
@ -204,12 +197,12 @@ namespace nana{ namespace pat{
return (fast_ptr_ ? &inner_bool::true_stand : nullptr);
}
private:
std::shared_ptr<interface_t> cwrapper_;
std::shared_ptr<cloneable_interface> cwrapper_;
base_t * fast_ptr_{nullptr};
};
template<typename T>
using mutable_cloneable = cloneable < T, true > ;
using mutable_cloneable = cloneable<T, true>;
}//end namespace pat
}//end namespace nana

View File

@ -302,14 +302,24 @@ namespace detail
#endif
}
unsigned drawable_impl_type::get_color() const
{
return color_;
}
unsigned drawable_impl_type::get_text_color() const
{
return text_color_;
}
void drawable_impl_type::set_color(const ::nana::color& clr)
{
color_ = clr.px_color().value;
color_ = (clr.px_color().value & 0xFFFFFF);
}
void drawable_impl_type::set_text_color(const ::nana::color& clr)
{
text_color_ = clr.px_color().value;
text_color_ = (clr.px_color().value & 0xFFFFFF);
update_text_color();
}

View File

@ -63,14 +63,19 @@ namespace detail
return color_;
}
unsigned drawable_impl_type::get_text_color() const
{
return text_color_;
}
void drawable_impl_type::set_color(const ::nana::color& clr)
{
color_ = clr.px_color().value;
color_ = (clr.px_color().value & 0xFFFFFF);
}
void drawable_impl_type::set_text_color(const ::nana::color& clr)
{
auto rgb = clr.px_color().value;
auto rgb = (clr.px_color().value & 0xFFFFFF);
if (text_color_ != rgb)
{
::SetTextColor(context, NANA_RGB(rgb));

View File

@ -1207,8 +1207,11 @@ namespace detail
if(context) context->event_window = pre_event_window;
}
auto thread_id = ::nana::system::this_thread_id()
brock.wd_manager.call_safe_place(thread_id);
if(msgwnd)
brock.wd_manager.remove_trash_handle(::nana::system::this_thread_id());
brock.wd_manager.remove_trash_handle(thread_id);
}
}

View File

@ -542,32 +542,6 @@ namespace nana{
return false;
}
/*
bool native_interface::window_icon(native_window_type wd, const paint::image& big_icon, const paint::image& small_icon) //deprecated
{
#if defined(NANA_WINDOWS)
HICON h_big_icon = paint::image_accessor::icon(big_icon);
HICON h_small_icon = paint::image_accessor::icon(small_icon);
if (h_big_icon || h_small_icon)
{
nana::detail::platform_spec::instance().keep_window_icon(wd, (!big_icon.empty() ? big_icon : small_icon));
if (h_big_icon) {
::SendMessage(reinterpret_cast<HWND>(wd), WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(h_big_icon));
}
if (h_small_icon) {
::SendMessage(reinterpret_cast<HWND>(wd), WM_SETICON, ICON_SMALL, reinterpret_cast<WPARAM>(h_small_icon));
}
return true;
}
#elif defined(NANA_X11)
return window_icon(wd, big_icon);
#endif
return false;
}
*/
void native_interface::activate_owner(native_window_type wd)
{
#if defined(NANA_WINDOWS)

View File

@ -413,6 +413,7 @@ namespace detail
::DispatchMessage(&msg);
}
wd_manager.call_safe_place(tid);
wd_manager.remove_trash_handle(tid);
if (msg.message == WM_DESTROY && msg.hwnd == native_handle)
break;
@ -432,6 +433,7 @@ namespace detail
::DispatchMessage(&msg);
}
wd_manager.call_safe_place(tid);
wd_manager.remove_trash_handle(tid);
}//end while

View File

@ -44,6 +44,8 @@ namespace detail
handle_manager<core_window_t*, window_manager, window_handle_deleter> wd_register;
paint::image default_icon_big;
paint::image default_icon_small;
std::map<core_window_t*, std::vector<std::function<void()>>> safe_place;
};
//end struct wdm_private_impl
@ -1192,6 +1194,36 @@ namespace detail
return nullptr;
}
void window_manager::set_safe_place(core_window_t* wd, std::function<void()>&& fn)
{
if (fn)
{
std::lock_guard<decltype(mutex_)> lock(mutex_);
if (!available(wd))
return;
impl_->safe_place[wd].emplace_back(std::move(fn));
}
}
void window_manager::call_safe_place(unsigned thread_id)
{
std::lock_guard<decltype(mutex_)> lock(mutex_);
for (auto i = impl_->safe_place.begin(); i != impl_->safe_place.end();)
{
if (i->first->thread_id == thread_id)
{
for (auto & fn : i->second)
fn();
i = impl_->safe_place.erase(i);
}
else
++i;
}
}
bool check_tree(basic_window* wd, basic_window* const cond)
{
if (wd == cond) return true;

View File

@ -164,7 +164,7 @@ namespace nana
if (!t.restrict_area.empty())
_m_check_restrict_area(wdps, API::window_size(t.wd), t.restrict_area);
API::move_window(t.wd, wdps.x, wdps.y);
API::move_window(t.wd, wdps);
}
}
}

View File

@ -28,6 +28,14 @@ namespace nana
//Element definitions
namespace element
{
namespace detail
{
void factory_abstract::destroy(element_abstract* ptr)
{
delete ptr;
}
}
class crook
: public crook_interface
{
@ -141,7 +149,7 @@ namespace nana
}
else
{
::nana::color highlighted(static_cast<color_rgb>(0x5eb6f7));
::nana::color highlighted(0x5e, 0xb6, 0xf7);
auto bld_bgcolor = bgcolor;
auto bld_fgcolor = fgcolor;
switch(es)
@ -156,7 +164,7 @@ namespace nana
bld_fgcolor = fgcolor.blend(highlighted, 0.4);
break;
case element_state::disabled:
bld_bgcolor = bld_fgcolor.from_rgb(0xb2, 0xb7, 0xbc);
bld_bgcolor = bld_fgcolor = nana::color(0xb2, 0xb7, 0xbc);
break;
default:
//Leave things as they are
@ -529,14 +537,71 @@ namespace nana
return true;
}
};//end class annex_button
class x_icon
: public element_interface
{
bool draw(graph_reference graph, const ::nana::color&, const ::nana::color& fgcolor, const rectangle& r, element_state estate) override
{
auto clr = fgcolor;
switch (estate)
{
case element_state::hovered:
case element_state::pressed:
clr = clr.blend(colors::black, 0.8);
break;
case element_state::disabled:
clr = colors::dark_gray;
default:
break;
}
graph.set_color(clr);
const int x = r.x + 4;
const int y = r.y + 4;
point p1{ x, y }, p2{ x + 7, y + 7 };
graph.line(p1, p2);
++p1.x;
--p2.y;
graph.line(p1, p2);
p1.x = x;
++p1.y;
p2.x = x + 6;
p2.y = y + 7;
graph.line(p1, p2);
p1.x += 7;
p1.y = y;
p2.x = x;
graph.line(p1, p2);
p1.x = x + 6;
p2.y = y + 6;
graph.line(p1, p2);
++p1.x;
++p1.y;
++p2.x;
++p2.y;
graph.line(p1, p2);
return true;
}
};
}//end namespace element
template<typename ElementInterface>
class element_object
: nana::noncopyable, nana::nonmovable
{
typedef ElementInterface element_t;
typedef pat::cloneable<element::provider::factory_interface<element_t>> factory_interface;
using element_type = ElementInterface;
using factory_interface = pat::cloneable<element::detail::factory_abstract>;
public:
~element_object()
@ -551,7 +616,7 @@ namespace nana
auto keep_e = element_ptr_;
factory_ = rhs;
element_ptr_ = factory_->create();
element_ptr_ = static_cast<element_type*>(static_cast<element::provider::factory_interface<element_type>&>(*factory_).create());
if(nullptr == factory_ || nullptr == element_ptr_)
{
@ -567,14 +632,14 @@ namespace nana
spare_.emplace_back(keep_e, keep_f);
}
element_t * const * keeper() const
element_type * const * cite() const
{
return &element_ptr_;
}
private:
factory_interface factory_; //Keep the factory for destroying the element
element_t * element_ptr_{nullptr};
std::vector<std::pair<element_t*, factory_interface>> spare_;
element_type * element_ptr_{nullptr};
std::vector<std::pair<element_type*, factory_interface>> spare_;
};
class element_manager
@ -613,6 +678,8 @@ namespace nana
element::add_arrow<element::arrow_hollow_triangle>("hollow_triangle");
element::add_button<element::annex_button>(""); //"annex" in default
element::add_x_icon<element::x_icon>("");
}
return obj;
}
@ -624,7 +691,17 @@ namespace nana
element::crook_interface * const * crook(const std::string& name) const
{
return _m_get(name, crook_).keeper();
return _m_get(name, crook_).cite();
}
void cross(const std::string& name, const pat::cloneable<element::provider::factory_interface<element::element_interface>>& factory)
{
_m_add(name, cross_, factory);
}
element::element_interface* const * cross(const std::string& name) const
{
return _m_get(name, cross_).cite();
}
void border(const std::string& name, const pat::cloneable<element::provider::factory_interface<element::border_interface>>& factory)
@ -634,7 +711,7 @@ namespace nana
element::border_interface * const * border(const std::string& name) const
{
return _m_get(name, border_).keeper();
return _m_get(name, border_).cite();
}
void arrow(const std::string& name, const pat::cloneable<element::provider::factory_interface<element::arrow_interface>>& factory)
@ -644,7 +721,7 @@ namespace nana
element::arrow_interface * const * arrow(const std::string& name) const
{
return _m_get((name.empty() ? "arrowhead" : name), arrow_).keeper();
return _m_get((name.empty() ? "arrowhead" : name), arrow_).cite();
}
void button(const std::string& name, const pat::cloneable<element::provider::factory_interface<element::element_interface>>& factory)
@ -654,7 +731,17 @@ namespace nana
element::element_interface * const * button(const std::string& name) const
{
return _m_get((name.empty() ? "annex" : name), button_).keeper();
return _m_get((name.empty() ? "annex" : name), button_).cite();
}
void x_icon(const std::string& name, const pat::cloneable<element::provider::factory_interface<element::element_interface>>& factory)
{
_m_add(name, x_icon_, factory);
}
element::element_interface * const * x_icon(const std::string& name) const
{
return _m_get(name, x_icon_).cite();
}
private:
using lock_guard = std::lock_guard<std::recursive_mutex>;
@ -689,9 +776,11 @@ namespace nana
private:
mutable std::recursive_mutex mutex_;
item<element::crook_interface> crook_;
item<element::element_interface> cross_;
item<element::border_interface> border_;
item<element::arrow_interface> arrow_;
item<element::element_interface> button_;
item<element::element_interface> x_icon_;
};
namespace element
@ -702,17 +791,27 @@ namespace nana
element_manager::instance().crook(name, factory);
}
crook_interface* const * provider::keeper_crook(const std::string& name)
crook_interface* const * provider::cite_crook(const std::string& name)
{
return element_manager::instance().crook(name);
}
void provider::add_cross(const std::string& name, const pat::cloneable<factory_interface<element_interface>>& factory)
{
element_manager::instance().cross(name, factory);
}
element_interface* const* provider::cite_cross(const std::string& name)
{
return element_manager::instance().cross(name);
}
void provider::add_border(const std::string& name, const pat::cloneable<factory_interface<border_interface>>& factory)
{
element_manager::instance().border(name, factory);
}
border_interface* const * provider::keeper_border(const std::string& name)
border_interface* const * provider::cite_border(const std::string& name)
{
return element_manager::instance().border(name);
}
@ -722,7 +821,7 @@ namespace nana
element_manager::instance().arrow(name, factory);
}
arrow_interface* const * provider::keeper_arrow(const std::string& name)
arrow_interface* const * provider::cite_arrow(const std::string& name)
{
return element_manager::instance().arrow(name);
}
@ -732,16 +831,26 @@ namespace nana
element_manager::instance().button(name, factory);
}
element_interface* const* provider::keeper_button(const std::string& name)
element_interface* const* provider::cite_button(const std::string& name)
{
return element_manager::instance().button(name);
}
void provider::add_x_icon(const std::string& name, const pat::cloneable<factory_interface<element_interface>>& factory)
{
element_manager::instance().x_icon(name, factory);
}
element_interface* const* provider::cite_x_icon(const std::string& name)
{
return element_manager::instance().x_icon(name);
}
}//end namespace element
//facades
//template<> class facade<element::crook>
facade<element::crook>::facade(const char* name)
: keeper_(element::provider().keeper_crook(name ? name : ""))
: cite_(element::provider().cite_crook(name ? name : ""))
{
data_.check_state = state::unchecked;
data_.radio = false;
@ -777,40 +886,120 @@ namespace nana
void facade<element::crook>::switch_to(const char* name)
{
keeper_ = element::provider().keeper_crook(name ? name : "");
cite_ = element::provider().cite_crook(name ? name : "");
}
bool facade<element::crook>::draw(graph_reference graph, const ::nana::color& bgcol, const ::nana::color& fgcol, const nana::rectangle& r, element_state es)
{
return (*keeper_)->draw(graph, bgcol, fgcol, r, es, data_);
return (*cite_)->draw(graph, bgcol, fgcol, r, es, data_);
}
//end class facade<element::crook>
//class facade<element::cross>
facade<element::cross>::facade(const char* name)
: cite_(element::provider().cite_cross(name ? name : ""))
{
}
void facade<element::cross>::switch_to(const char* name)
{
cite_ = element::provider().cite_cross(name ? name : "");
}
void facade<element::cross>::thickness(unsigned thk)
{
thickness_ = thk;
}
void facade<element::cross>::size(unsigned size_px)
{
size_ = size_px;
}
//Implement element_interface
bool facade<element::cross>::draw(graph_reference graph, const ::nana::color&, const ::nana::color& fgcolor, const ::nana::rectangle& r, element_state)
{
if (thickness_ + 2 <= size_)
{
int gap = (static_cast<int>(size_) - static_cast<int>(thickness_)) / 2;
nana::point ps[12];
ps[0].x = r.x + gap;
ps[1].x = ps[0].x + static_cast<int>(thickness_) - 1;
ps[1].y = ps[0].y = r.y;
ps[2].x = ps[1].x;
ps[2].y = r.y + gap;
ps[3].x = ps[2].x + gap;
ps[3].y = ps[2].y;
ps[4].x = ps[3].x;
ps[4].y = ps[3].y + static_cast<int>(thickness_)-1;
ps[5].x = ps[1].x;
ps[5].y = ps[4].y;
ps[6].x = ps[5].x;
ps[6].y = ps[5].y + gap;
ps[7].x = r.x + gap;
ps[7].y = ps[6].y;
ps[8].x = ps[7].x;
ps[8].y = ps[4].y;
ps[9].x = r.x;
ps[9].y = ps[4].y;
ps[10].x = r.x;
ps[10].y = r.y + gap;
ps[11].x = r.x + gap;
ps[11].y = r.y + gap;
graph.set_color(fgcolor.blend(colors::black, true));
for (int i = 0; i < 11; ++i)
graph.line(ps[i], ps[i + 1]);
graph.line(ps[11], ps[0]);
graph.set_color(fgcolor);
unsigned thk_minus_2 = thickness_ - 2;
graph.rectangle(rectangle{ ps[10].x + 1, ps[10].y + 1, (gap << 1) + thk_minus_2, thk_minus_2 }, true);
graph.rectangle(rectangle{ ps[0].x + 1, ps[0].y + 1, thk_minus_2, (gap << 1) + thk_minus_2 }, true);
}
return true;
}
//end class facade<element::cross>
//class facade<element::border>
facade<element::border>::facade(const char* name)
: keeper_(element::provider().keeper_border(name ? name : ""))
: cite_(element::provider().cite_border(name ? name : ""))
{}
void facade<element::border>::switch_to(const char* name)
{
keeper_ = element::provider().keeper_border(name ? name : "");
cite_ = element::provider().cite_border(name ? name : "");
}
bool facade<element::border>::draw(graph_reference graph, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle& r, element_state es)
{
return (*keeper_)->draw(graph, bgcolor, fgcolor, r, es, 2);
return (*cite_)->draw(graph, bgcolor, fgcolor, r, es, 2);
}
//end class facade<element::border>
//class facade<element::arrow>
facade<element::arrow>::facade(const char* name)
: keeper_(element::provider().keeper_arrow(name ? name : ""))
: cite_(element::provider().cite_arrow(name ? name : ""))
{
}
void facade<element::arrow>::switch_to(const char* name)
{
keeper_ = element::provider().keeper_arrow(name ? name : "");
cite_ = element::provider().cite_arrow(name ? name : "");
}
void facade<element::arrow>::direction(::nana::direction dir)
@ -822,42 +1011,62 @@ namespace nana
bool facade<element::arrow>::draw(graph_reference graph, const nana::color& bgcolor, const nana::color& fgcolor, const nana::rectangle& r, element_state estate)
{
graph.set_color(fgcolor);
return (*keeper_)->draw(graph, bgcolor, fgcolor, r, estate, dir_);
return (*cite_)->draw(graph, bgcolor, fgcolor, r, estate, dir_);
}
//end class facade<element::arrow>
//class facade<element::button>::
facade<element::button>::facade(const char* name)
: keeper_(element::provider().keeper_button(name ? name : ""))
: cite_(element::provider().cite_button(name ? name : ""))
{}
void facade<element::button>::switch_to(const char* name)
{
keeper_ = element::provider().keeper_button(name ? name : "");
cite_ = element::provider().cite_button(name ? name : "");
}
//Implement element_interface
bool facade<element::button>::draw(graph_reference graph, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle& r, element_state estate)
{
return (*keeper_)->draw(graph, bgcolor, fgcolor, r, estate);
return (*cite_)->draw(graph, bgcolor, fgcolor, r, estate);
}
//end class facade<element::button>
//class facade<element::x_icon>
facade<element::x_icon>::facade(const char* name)
: cite_(element::provider().cite_x_icon(name ? name : ""))
{}
void facade<element::x_icon>::switch_to(const char* name)
{
cite_ = element::provider().cite_x_icon(name ? name : "");
}
//Implement element_interface
bool facade<element::x_icon>::draw(graph_reference graph, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle& r, element_state estate)
{
return (*cite_)->draw(graph, bgcolor, fgcolor, r, estate);
}
//end class facade<element::x_icon>
namespace element
{
using brock = ::nana::detail::bedrock;
void set_bground(const char* name, const pat::cloneable<element_interface>& obj)
{
detail::bedrock::instance().get_element_store().bground(name, obj);
brock::instance().get_element_store().bground(name, obj);
}
void set_bground(const char* name, pat::cloneable<element_interface> && obj)
{
detail::bedrock::instance().get_element_store().bground(name, std::move(obj));
brock::instance().get_element_store().bground(name, std::move(obj));
}
//class cite
cite_bground::cite_bground(const char* name)
: ref_ptr_(detail::bedrock::instance().get_element_store().bground(name))
: ref_ptr_(brock::instance().get_element_store().bground(name))
{
}
@ -871,7 +1080,7 @@ namespace nana
void cite_bground::set(const char* name)
{
holder_.reset();
ref_ptr_ = detail::bedrock::instance().get_element_store().bground(name);
ref_ptr_ = brock::instance().get_element_store().bground(name);
}
bool cite_bground::draw(graph_reference dst, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const nana::rectangle& r, element_state state)

View File

@ -959,7 +959,7 @@ namespace nana
int inputbox::date::month() const
{
if (!impl_->wdg_month.empty())
return impl_->wdg_month.option() + 1;
return static_cast<int>(impl_->wdg_month.option()) + 1;
return impl_->month;
}
@ -1028,7 +1028,7 @@ namespace nana
impl->wdg_day.events().destroy.connect_unignorable([impl]
{
impl->day = impl->wdg_day.to_int();
impl->month = impl->wdg_month.option() + 1;
impl->month = static_cast<int>(impl->wdg_month.option()) + 1;
});
impl->wdg_year.events().destroy.connect_unignorable([impl]
@ -1040,7 +1040,7 @@ namespace nana
{
auto month = impl->wdg_month.option() + 1;
auto year = impl->wdg_year.to_int();
int days = ::nana::date::month_days(year, month);
int days = ::nana::date::month_days(year, static_cast<unsigned>(month));
auto day = impl->wdg_day.to_int();
impl->wdg_day.range(1, days, 1); //It resets the current value of wdg_day

File diff suppressed because it is too large Load Diff

697
source/gui/place_parts.hpp Normal file
View File

@ -0,0 +1,697 @@
/*
* Parts of Class Place
* Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* @file: nana/gui/place_parts.hpp
*/
#ifndef NANA_GUI_PLACE_PARTS_HPP
#define NANA_GUI_PLACE_PARTS_HPP
#include <nana/gui/widgets/form.hpp>
#include <nana/gui/widgets/tabbar.hpp>
#include <nana/gui/element.hpp>
#include <nana/paint/text_renderer.hpp>
#include <stdexcept>
#include <deque>
namespace nana
{
namespace place_parts
{
class splitter_interface
{
public:
virtual ~splitter_interface(){}
};
class splitter_dtrigger
: public drawer_trigger
{
};
template<bool IsLite>
class splitter
: public widget_object <typename std::conditional<IsLite, category::lite_widget_tag, category::widget_tag>::type, splitter_dtrigger>,
public splitter_interface
{
private:
void _m_complete_creation() override
{
this->caption("place-splitter");
widget_object <typename std::conditional<IsLite, category::lite_widget_tag, category::widget_tag>::type, splitter_dtrigger>::_m_complete_creation();
}
};
class dock_notifier_interface
{
public:
virtual ~dock_notifier_interface() = default;
virtual void notify_float() = 0;
virtual void notify_dock() = 0;
virtual void notify_move() = 0;
virtual void notify_move_stopped() = 0;
//a dockarea requests to close the dockpane
virtual void request_close() = 0;
};
class dockcaption_dtrigger
: public drawer_trigger
{
public:
void on_close(std::function<void()>&& fn)
{
close_fn_ = std::move(fn);
}
private:
virtual void attached(widget_reference wdg, graph_reference graph) override
{
window_handle_ = wdg;
text_rd_.reset(new paint::text_renderer(graph));
}
void refresh(graph_reference& graph) override
{
graph.set_color(static_cast<color_rgb>(0x83EB));
graph.set_text_color(colors::white);
graph.rectangle(true);
//draw caption
auto text = API::window_caption(window_handle_);
text_rd_->render({ 3, 1 }, text.data(), text.size(), graph.size().width - 20, true);
//draw x button
auto r = _m_button_area();
if (x_pointed_)
{
color xclr = colors::red;
if(x_state_ == ::nana::mouse_action::pressed)
xclr = xclr.blend(colors::white, 0.8);
graph.rectangle(r, true, xclr);
}
r.x += (r.width - 16) / 2;
r.y = (r.height - 16) / 2;
x_icon_.draw(graph, colors::red, colors::white, r, element_state::normal);
}
void mouse_move(graph_reference graph, const arg_mouse& arg) override
{
x_pointed_ = _m_button_area().is_hit(arg.pos);
refresh(graph);
API::lazy_refresh();
}
void mouse_leave(graph_reference graph, const arg_mouse&) override
{
x_pointed_ = false;
refresh(graph);
API::lazy_refresh();
}
void mouse_down(graph_reference graph, const arg_mouse&) override
{
if (!x_pointed_)
return;
x_state_ = ::nana::mouse_action::pressed;
refresh(graph);
API::lazy_refresh();
}
void mouse_up(graph_reference graph, const arg_mouse&) override
{
if (!x_pointed_)
return;
x_state_ = ::nana::mouse_action::over;
refresh(graph);
API::lazy_refresh();
close_fn_();
}
private:
::nana::rectangle _m_button_area() const
{
::nana::rectangle r{API::window_size(window_handle_)};
r.x = r.right() - 20;
r.width = 20;
return r;
}
public:
window window_handle_;
std::unique_ptr<paint::text_renderer> text_rd_;
bool x_pointed_{ false };
::nana::mouse_action x_state_{ ::nana::mouse_action::normal };
facade<element::x_icon> x_icon_;
std::function<void()> close_fn_;
};
class dockarea_caption
: public widget_object < category::widget_tag, dockcaption_dtrigger >
{
public:
void on_close(std::function<void()> fn)
{
get_drawer_trigger().on_close(std::move(fn));
}
};
class dock_page
: public form
{
public:
dock_page(window host, const rectangle& r, const rectangle & tab_r)
: form(host, r, form::appear::bald<>())
{
tab_form_.reset(new form(handle(), tab_r, form::appear::bald<>()));
}
private:
std::unique_ptr<form> tab_form_;
};
class dockarea
: public widget_object <category::lite_widget_tag, drawer_trigger>
{
using base_type = widget_object<category::lite_widget_tag, drawer_trigger>;
using factory = std::function<std::unique_ptr<widget>(window)>;
struct panel
{
std::unique_ptr<widget> widget_ptr;
};
public:
void set_notifier(place_parts::dock_notifier_interface* notifier)
{
notifier_ = notifier;
}
void create(window parent)
{
host_window_ = parent;
base_type::create(parent, true);
this->caption("dockarea");
caption_.create(*this, true);
caption_.on_close([this]
{
bool destroy_dockarea = true;
if (tabbar_)
{
tabbar_->erase(tabbar_->selected());
destroy_dockarea = (0 == tabbar_->length());
}
if (destroy_dockarea)
notifier_->request_close();
});
this->events().resized([this](const arg_resized& arg)
{
rectangle r{ 0, 0, arg.width, 20 };
caption_.move(r);
if (arg.height > 20)
{
r.y = 20;
if (tabbar_)
{
tabbar_->move({ 0, int(arg.height) - 20, arg.width, 20 });
r.height = arg.height - 40;
}
else
r.height = arg.height - 20;
}
for (auto & pn : panels_)
{
if (pn.widget_ptr)
pn.widget_ptr->move(r);
}
});
caption_.events().mouse_down([this](const arg_mouse& arg)
{
if (::nana::mouse::left_button == arg.button)
{
moves_.started = true;
moves_.start_pos = API::cursor_position();
moves_.start_container_pos = (floating() ? container_->pos() : this->pos());
API::capture_window(caption_, true);
}
});
caption_.events().mouse_move([this](const arg_mouse& arg)
{
if (arg.left_button && moves_.started)
{
auto move_pos = API::cursor_position() - moves_.start_pos;
if (!floating())
{
if (std::abs(move_pos.x) > 4 || std::abs(move_pos.y) > 4)
float_away(move_pos);
}
else
{
move_pos += moves_.start_container_pos;
API::move_window(container_->handle(), move_pos);
notifier_->notify_move();
}
}
});
caption_.events().mouse_up([this](const arg_mouse& arg)
{
if ((::nana::mouse::left_button == arg.button) && moves_.started)
{
moves_.started = false;
API::capture_window(caption_, false);
notifier_->notify_move_stopped();
}
});
}
void add_pane(factory & fn)
{
rectangle r{ point(), this->size()};
//get a rectangle excluding caption
r.y = 20;
if (r.height > 20)
r.height -= 20;
else
r.height = 0;
if (!tabbar_)
{
if (panels_.size() > 0)
{
tabbar_.reset(new tabbar_lite(*this));
tabbar_->events().selected.clear();
tabbar_->events().selected([this]
{
auto handle = tabbar_->attach(tabbar_->selected());
if (handle)
caption_.caption(API::window_caption(handle));
else
caption_.caption(::nana::string());
});
tabbar_->move({ 0, r.bottom() - 20, r.width, 20 });
r.height -= 20;
std::size_t pos = 0;
for (auto & pn : panels_)
{
tabbar_->push_back(::nana::charset(pn.widget_ptr->caption()));
tabbar_->attach(pos++, *pn.widget_ptr);
}
}
}
else
r.height -= 20;
auto wdg = fn(*this);
if (tabbar_)
{
tabbar_->push_back(::nana::charset(wdg->caption()));
tabbar_->attach(panels_.size(), wdg->handle());
}
if (panels_.empty())
{
caption_.caption(wdg->caption());
}
panels_.emplace_back();
panels_.back().widget_ptr.swap(wdg);
for (auto & pn : panels_)
{
if (pn.widget_ptr)
pn.widget_ptr->move(r);
}
}
void float_away(const ::nana::point& move_pos)
{
if (container_)
return;
API::capture_window(caption_, false);
rectangle r{ pos() + move_pos, size() };
container_.reset(new form(host_window_, r.pare_off(-1), form::appear::bald<>()));
drawing dw(container_->handle());
dw.draw([](paint::graphics& graph)
{
graph.rectangle(false, colors::coral);
});
API::set_parent_window(handle(), container_->handle());
this->move({ 1, 1 });
container_->show();
API::capture_window(caption_, true);
notifier_->notify_float();
}
void dock()
{
API::capture_window(caption_, false);
API::set_parent_window(handle(), host_window_);
container_.reset();
notifier_->notify_dock();
}
bool floating() const
{
return (nullptr != container_);
}
private:
window host_window_{nullptr};
place_parts::dock_notifier_interface* notifier_{ nullptr };
std::unique_ptr<form> container_;
dockarea_caption caption_;
std::deque<panel> panels_;
std::unique_ptr<tabbar_lite> tabbar_;
struct moves
{
bool started{ false };
::nana::point start_pos;
::nana::point start_container_pos;
}moves_;
};//class dockarea
//number_t is used for storing a number type variable
//such as integer, real and percent. Essentially, percent is a typo of real.
class number_t
{
public:
enum class kind{ none, integer, real, percent };
number_t()
: kind_(kind::none)
{
value_.integer = 0;
}
void reset()
{
kind_ = kind::none;
value_.integer = 0;
}
bool is_negative() const
{
switch (kind_)
{
case kind::integer:
return (value_.integer < 0);
case kind::real:
case kind::percent:
return (value_.real < 0);
default:
break;
}
return false;
}
bool is_none() const
{
return (kind::none == kind_);
}
bool is_not_none() const
{
return (kind::none != kind_);
}
kind kind_of() const
{
return kind_;
}
double get_value(int ref_percent) const
{
switch (kind_)
{
case kind::integer:
return value_.integer;
case kind::real:
return value_.real;
case kind::percent:
return value_.real * ref_percent;
default:
break;
}
return 0;
}
int integer() const
{
if (kind::integer == kind_)
return value_.integer;
return static_cast<int>(value_.real);
}
double real() const
{
if (kind::integer == kind_)
return value_.integer;
return value_.real;
}
void assign(int i)
{
kind_ = kind::integer;
value_.integer = i;
}
void assign(double d)
{
kind_ = kind::real;
value_.real = d;
}
void assign_percent(double d)
{
kind_ = kind::percent;
value_.real = d / 100;
}
private:
kind kind_;
union valueset
{
int integer;
double real;
}value_;
};//end class number_t
class margin
{
public:
margin& operator=(margin&& rhs)
{
if (this != &rhs)
{
all_edges_ = rhs.all_edges_;
margins_ = std::move(rhs.margins_);
}
return *this;
}
void clear()
{
all_edges_ = true;
margins_.clear();
}
void push(const number_t& v)
{
margins_.emplace_back(v);
}
void set_value(const number_t& v)
{
clear();
margins_.emplace_back(v);
}
void set_array(const std::vector<number_t>& v)
{
all_edges_ = false;
margins_ = v;
}
nana::rectangle area(const ::nana::rectangle& field_area) const
{
if (margins_.empty())
return field_area;
auto r = field_area;
if (all_edges_)
{
auto px = static_cast<int>(margins_.back().get_value(static_cast<int>(r.width)));
const auto dbl_px = static_cast<unsigned>(px << 1);
r.x += px;
r.width = (r.width < dbl_px ? 0 : r.width - dbl_px);
r.y += px;
r.height = (r.height < dbl_px ? 0 : r.height - dbl_px);
}
else
{
int il{ -1 }, ir{ -1 }, it{ -1 }, ib{ -1 }; //index of four corners in margin
switch (margins_.size())
{
case 0: break;
case 1: //top
it = 0;
break;
case 2://top,bottom and left,right
it = ib = 0;
il = ir = 1;
break;
default:
il = 3; //left
case 3: //top, right, bottom
it = 0;
ir = 1;
ib = 2;
}
typedef decltype(r.height) px_type;
auto calc = [](px_type a, px_type b)
{
return (a > b ? a - b : 0);
};
if (0 == it) //top
{
auto px = static_cast<int>(margins_[it].get_value(static_cast<int>(field_area.height)));
r.y += px;
r.height = calc(r.height, static_cast<px_type>(px));
}
if (-1 != ib) //bottom
{
auto px = static_cast<int>(margins_[ib].get_value(static_cast<int>(field_area.height)));
r.height = calc(r.height, static_cast<px_type>(px));
}
if (-1 != il) //left
{
auto px = static_cast<px_type>(margins_[il].get_value(static_cast<int>(field_area.width)));
r.x += px;
r.width = calc(r.width, static_cast<px_type>(px));
}
if (-1 != ir) //right
{
auto px = static_cast<int>(margins_[ir].get_value(static_cast<int>(field_area.width)));
r.width = calc(r.width, static_cast<px_type>(px));
}
}
return r;
}
private:
bool all_edges_ = true;
std::vector<number_t> margins_;
};//end class margin
class repeated_array
{
public:
//A workaround for VC2013, becuase it does not generated an implicit declared move-constructor as defaulted.
repeated_array() = default;
repeated_array(repeated_array && other)
: repeated_{ other.repeated_ },
values_(std::move(other.values_))
{
}
repeated_array& operator=(repeated_array&& other)
{
if (this != &other)
{
repeated_ = other.repeated_;
other.repeated_ = false;
values_ = std::move(other.values_);
}
return *this;
}
void assign(std::vector<number_t>&& c)
{
values_ = std::move(c);
}
bool empty() const
{
return values_.empty();
}
void reset()
{
repeated_ = false;
values_.clear();
}
void repeated()
{
repeated_ = true;
}
void push(const number_t& n)
{
values_.emplace_back(n);
}
number_t at(std::size_t pos) const
{
if (values_.empty())
return{};
if (repeated_)
pos %= values_.size();
else if (pos >= values_.size())
return{};
return values_[pos];
}
private:
bool repeated_ = false;
std::vector<number_t> values_;
};
}//end namespace place_parts
}//end namespace nana
#endif //NANA_GUI_PLACE_PARTS_HPP

View File

@ -538,11 +538,11 @@ namespace API
return nana::point{};
}
void move_window(window wd, int x, int y)
void move_window(window wd, const point& pos)
{
auto iwd = reinterpret_cast<restrict::core_window_t*>(wd);
internal_scope_guard lock;
if(restrict::window_manager.move(iwd, x, y, false))
if(restrict::window_manager.move(iwd, pos.x, pos.y, false))
{
restrict::core_window_t* update_wd = nullptr;
if (iwd->displayed() && iwd->effect.bground)
@ -1314,5 +1314,10 @@ namespace API
internal_scope_guard lock;
return (restrict::window_manager.available(iwd) ? iwd->flags.ignore_mouse_focus : false);
}
void at_safe_place(window wd, std::function<void()> fn)
{
restrict::window_manager.set_safe_place(reinterpret_cast<restrict::core_window_t*>(wd), std::move(fn));
}
}//end namespace API
}//end namespace nana

View File

@ -14,7 +14,6 @@
#include <nana/gui/widgets/categorize.hpp>
#include <nana/gui/widgets/float_listbox.hpp>
#include <nana/gui/element.hpp>
#include <nana/paint/gadget.hpp>
#include <nana/gui/widgets/detail/tree_cont.hpp>
#include <stdexcept>

View File

@ -11,7 +11,6 @@
*/
#include <nana/gui/widgets/checkbox.hpp>
#include <nana/paint/gadget.hpp>
#include <nana/paint/text_renderer.hpp>
#include <nana/gui/element.hpp>
#include <algorithm>

View File

@ -12,7 +12,6 @@
#include <nana/gui/widgets/date_chooser.hpp>
#include <nana/gui/element.hpp>
#include <nana/paint/gadget.hpp>
#include <nana/system/platform.hpp>
#include <sstream>

View File

@ -12,7 +12,6 @@
#include <nana/gui/widgets/menu.hpp>
#include <nana/system/platform.hpp>
#include <nana/paint/gadget.hpp>
#include <nana/gui/element.hpp>
#include <nana/gui/wvl.hpp>
#include <nana/paint/text_renderer.hpp>

View File

@ -2250,7 +2250,7 @@ namespace nana{ namespace widgets
break;
case keyboard::os_end:
if (caret.y != nlines - 1) {
caret.y = nlines - 1;
caret.y = static_cast<decltype(caret.y)>(nlines - 1);
changed = true;
}
break;
@ -2265,7 +2265,7 @@ namespace nana{ namespace widgets
}else {
if (caret.y != 0) {
--caret.y;
caret.x = textbase_.getline(caret.y).size();
caret.x = static_cast<decltype(caret.x)>(textbase_.getline(caret.y).size());
changed = true;
}
}
@ -2309,7 +2309,7 @@ namespace nana{ namespace widgets
break;
case keyboard::os_end:
if (caret.x < lnsz) {
caret.x = lnsz;
caret.x = static_cast<decltype(caret.x)>(lnsz);
changed = true;
}
break;

View File

@ -97,7 +97,7 @@ namespace nana
{
int x = r.x + (static_cast<int>(r.width) - 14) / 2;
int y = r.y + (static_cast<int>(r.height) - 14) / 2;
::nana::color clr;
switch(sta)
@ -112,12 +112,14 @@ namespace nana
clr = { 0xF0, 0xF0, 0xF0 };
}
graph.rectangle(r, true, bgcolor_);
nana::paint::gadget::cross(graph, x, y, 14, 6, clr);
facade<element::cross> cross;
cross.draw(graph, {}, clr, { x, y, 14, 6 }, element_state::normal);
}
virtual void close(graph_reference graph, const nana::rectangle& r, state_t sta)
{
nana::paint::gadget::close_16_pixels(graph, r.x + (r.width - 16) / 2, r.y + (r.height - 16) / 2, 1, colors::black);
facade<element::x_icon> x_icon;
x_icon.draw(graph, {}, colors::black, { r.x + static_cast<int>(r.width - 16) / 2, r.y + static_cast<int>(r.height - 16) / 2, 16, 16 }, element_state::normal);
if(item_renderer::highlight == sta)
graph.rectangle(r, false, {0xa0, 0xa0, 0xa0});
}
@ -140,24 +142,23 @@ namespace nana
else if (!active)
clr = ::nana::color{ 0x92, 0x99, 0xA4 };
gadget::close_16_pixels(graph, r.x - (16 - r.width) / 2, r.y - (16 - r.height) / 2, 1, clr);
facade<element::x_icon> x_icon;
x_icon.draw(graph, {}, colors::black, { r.x + static_cast<int>(r.width - 16) / 2, r.y + static_cast<int>(r.height - 16) / 2, 16, 16 }, element_state::normal);
}
virtual void back(graph_reference graph, const nana::rectangle& r, state_t sta)
{
using namespace nana::paint::gadget;
_m_draw_arrow(graph, r, sta, direction::west);
}
virtual void next(graph_reference graph, const nana::rectangle& r, state_t sta)
{
using namespace nana::paint::gadget;
_m_draw_arrow(graph, r, sta, direction::east);
}
virtual void list(graph_reference graph, const nana::rectangle& r, state_t sta)
{
using namespace nana::paint::gadget;
_m_draw_arrow(graph, r, sta, direction::south);
}
private:
@ -343,7 +344,7 @@ namespace nana
{
if(i < list_.size())
return at_no_bound_check(i);
throw std::out_of_range("Nana.GUI.tabbar::at() is out of range");
throw std::out_of_range("invalid position of tabbar");
}
iterator iterator_at(std::size_t pos)
@ -369,7 +370,7 @@ namespace nana
{
if(pos < list_.size())
return at_no_bound_check(pos);
throw std::out_of_range("Nana.GUI.tabbar::at() const is out of range");
throw std::out_of_range("invalid position of tabbar");
}
const nana::any& at_no_bound_check(std::size_t pos) const
@ -1274,8 +1275,6 @@ namespace nana
#include <forward_list>
namespace nana
{
namespace ng
{
namespace drawerbase
{
namespace tabbar_lite
@ -1285,6 +1284,7 @@ namespace nana
::std::string text;
::nana::any value;
::std::pair<int, int> pos_ends;
::nana::window attached_window{ nullptr };
item(std::string t, ::nana::any v)
: text(std::move(t)), value(std::move(v))
@ -1345,21 +1345,44 @@ namespace nana
using graph_reference = ::nana::paint::graphics&;
static const std::size_t npos = static_cast<std::size_t>(-1);
void set_widget(widget& wdg)
void set_widget(::nana::tabbar_lite& wdg)
{
widget_ = &wdg;
}
::nana::dev::widget_traits<widget>::scheme_type & scheme()
::nana::tabbar_lite* widget_ptr() const
{
return widget_;
}
/*
::nana::dev::widget_traits<widget>::scheme_type & scheme() //deprecated
{
return API::scheme(*widget_);
}
*/
std::forward_list<item>& items()
{
return items_;
}
void show_attached_window()
{
if (indexes_.active_pos != npos)
{
auto i = items_.cbegin();
std::advance(i, indexes_.active_pos);
API::show_window(i->attached_window, true);
std::size_t pos = 0;
for (auto & m : items_)
{
if (pos++ != indexes_.active_pos)
API::show_window(m.attached_window, false);
}
}
}
bool track_pointer(const point& pos)
{
std::size_t item_pos = 0;
@ -1390,7 +1413,7 @@ namespace nana
return indexes_;
}
private:
widget * widget_{ nullptr };
::nana::tabbar_lite * widget_{ nullptr };
std::forward_list<item> items_;
indexes indexes_;
};
@ -1404,7 +1427,7 @@ namespace nana
{
_m_calc_metrics(graph, model.items());
auto & scheme = model.scheme();
auto & scheme = model.widget_ptr()->scheme();
//draw background
graph.rectangle(true, scheme.background);
@ -1475,14 +1498,14 @@ namespace nana
delete model_;
}
model* driver::get_model()
model* driver::get_model() const throw()
{
return model_;
}
void driver::attached(widget_reference wdg, graph_reference)
{
model_->set_widget(wdg);
model_->set_widget(dynamic_cast<nana::tabbar_lite&>(wdg));
}
//Overrides drawer_trigger's method
@ -1513,12 +1536,20 @@ namespace nana
void driver::mouse_down(graph_reference graph, const arg_mouse&)
{
auto & indexes = model_->get_indexes();
if (indexes.hovered_pos == model_->npos)
if ((indexes.hovered_pos == model_->npos) || (indexes.active_pos == indexes.hovered_pos))
return;
indexes.active_pos = indexes.hovered_pos;
refresh(graph);
API::lazy_refresh();
if (indexes.active_pos != indexes.hovered_pos)
{
indexes.active_pos = indexes.hovered_pos;
model_->show_attached_window();
refresh(graph);
API::lazy_refresh();
event_arg arg;
model_->widget_ptr()->events().selected.emit(arg);
}
}
//end class driver
}
@ -1531,6 +1562,47 @@ namespace nana
this->create(parent_wd, r, visible);
}
//capacity
std::size_t tabbar_lite::length() const
{
auto& items = get_drawer_trigger().get_model()->items();
internal_scope_guard lock;
return static_cast<std::size_t>(std::distance(items.cbegin(), items.cend()));
}
//modifiers
void tabbar_lite::attach(std::size_t pos_set, window wd)
{
auto model = get_drawer_trigger().get_model();
internal_scope_guard lock;
for (auto & m : model->items())
{
if (0 == pos_set--)
{
m.attached_window = wd;
model->show_attached_window();
return;
}
}
throw std::out_of_range("invalid position of tabbar_lite");
}
window tabbar_lite::attach(std::size_t pos_set) const
{
auto model = get_drawer_trigger().get_model();
internal_scope_guard lock;
for (auto & m : model->items())
{
if (0 == pos_set--)
return m.attached_window;
}
throw std::out_of_range("invalid position of tabbar_lite");
}
void tabbar_lite::push_back(std::string text, ::nana::any any)
{
auto & items = get_drawer_trigger().get_model()->items();
@ -1559,6 +1631,64 @@ namespace nana
items.emplace_front(std::move(text), std::move(any));
API::refresh_window(handle());
}
std::size_t tabbar_lite::selected() const
{
auto model = get_drawer_trigger().get_model();
internal_scope_guard lock;
return model->get_indexes().active_pos;
}
void tabbar_lite::erase(std::size_t pos, bool close_attached)
{
auto model = get_drawer_trigger().get_model();
internal_scope_guard lock;
const auto len = length();
if (len <= pos)
throw std::out_of_range("invalid position of tabbar_lite");
auto active_pos = model->get_indexes().active_pos;
//selection_changed is used to determine whether the title will be updated
bool selection_changed = true;
if (pos == active_pos)
{
if (active_pos + 1 == len)
{
if (active_pos)
--active_pos;
else
active_pos = npos;
}
}
else if (pos < active_pos)
--active_pos;
else
selection_changed = false;
model->get_indexes().active_pos = active_pos;
auto i = model->items().cbefore_begin();
std::advance(i, pos);
auto attached_wd = std::next(i)->attached_window;
model->items().erase_after(i);
model->show_attached_window();
API::refresh_window(handle());
if (close_attached && attached_wd)
API::close_window(attached_wd);
if (selection_changed && (active_pos != npos))
{
event_arg arg;
events().selected.emit(arg);
}
}
//end class tabbar
}
}//end namespace nana

View File

@ -305,7 +305,7 @@ namespace nana
void widget::_m_move(int x, int y)
{
API::move_window(handle(), x, y);
API::move_window(handle(), { x, y });
}
void widget::_m_move(const rectangle& r)

View File

@ -1,108 +0,0 @@
/*
* Graphics Gadget Implementation
* Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* @file: nana/paint/gadget.cpp
*/
#include <nana/paint/graphics.hpp>
#include <nana/paint/gadget.hpp>
namespace nana
{
namespace paint
{
namespace gadget
{
void close_16_pixels(::nana::paint::graphics& graph, int x, int y, unsigned style, const ::nana::color& clr)
{
graph.set_color(clr);
if(0 == style)
{
x += 3;
y += 3;
graph.line({ x, y }, { x + 9, y + 9 });
graph.line({ x + 1, y }, { x + 9, y + 8 });
graph.line({ x, y + 1 }, { x + 8, y + 9 });
graph.line({ x + 9, y }, { x, y + 9 });
graph.line({ x + 8, y }, { x, y + 8 });
graph.line({ x + 9, y + 1 }, { x + 1, y + 9 });
}
else
{
x += 4;
y += 4;
graph.line({ x, y }, { x + 7, y + 7 });
graph.line({ x + 1, y }, { x + 7, y + 6 });
graph.line({ x, y + 1 }, { x + 6, y + 7 });
graph.line({ x + 7, y }, { x, y + 7 });
graph.line({ x + 6, y }, { x, y + 6 });
graph.line({ x + 7, y + 1 }, { x + 1, y + 7 });
}
}
void cross(graphics& graph, int x, int y, unsigned size, unsigned thickness, const ::nana::color& clr)
{
if (thickness + 2 <= size)
{
int gap = (size - thickness) / 2;
nana::point ps[12];
ps[0].x = x + gap;
ps[1].x = ps[0].x + thickness - 1;
ps[1].y = ps[0].y = y;
ps[2].x = ps[1].x;
ps[2].y = y + gap;
ps[3].x = ps[2].x + gap;
ps[3].y = ps[2].y;
ps[4].x = ps[3].x;
ps[4].y = ps[3].y + thickness - 1;
ps[5].x = ps[1].x;
ps[5].y = ps[4].y;
ps[6].x = ps[5].x;
ps[6].y = ps[5].y + gap;
ps[7].x = x + gap;
ps[7].y = ps[6].y;
ps[8].x = ps[7].x;
ps[8].y = ps[4].y;
ps[9].x = x;
ps[9].y = ps[4].y;
ps[10].x = x;
ps[10].y = y + gap;
ps[11].x = x + gap;
ps[11].y = y + gap;
graph.set_color(clr.blend(colors::black, true));
for (int i = 0; i < 11; ++i)
graph.line(ps[i], ps[i + 1]);
graph.line(ps[11], ps[0]);
graph.set_color(clr);
graph.rectangle(rectangle{ ps[10].x + 1, ps[10].y + 1, (gap << 1) + thickness - 2, thickness - 2 }, true);
graph.rectangle(rectangle{ ps[0].x + 1, ps[0].y + 1, thickness - 2, (gap << 1) + thickness - 2 }, true);
}
}
}//end namespace gadget
}//end namespace paint
}//end namespace nana

View File

@ -845,13 +845,13 @@ namespace paint
BITMAPFILEHEADER bmFileHeader = { 0 };
bmFileHeader.bfType = 0x4d42; //bmp
bmFileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmFileHeader.bfSize = bmFileHeader.bfOffBits + imageBytes;
bmFileHeader.bfSize = bmFileHeader.bfOffBits + static_cast<DWORD>(imageBytes);
HANDLE hFile = ::CreateFileW(static_cast<std::wstring>(::nana::charset(file_utf8, ::nana::unicode::utf8)).data(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwWrite = 0;
::WriteFile(hFile, &bmFileHeader, sizeof(BITMAPFILEHEADER), &dwWrite, nullptr);
::WriteFile(hFile, &bmpInfo.bmiHeader, sizeof(BITMAPINFOHEADER), &dwWrite, nullptr);
::WriteFile(hFile, pData, imageBytes, &dwWrite, nullptr);
::WriteFile(hFile, pData, static_cast<DWORD>(imageBytes), &dwWrite, nullptr);
::CloseHandle(hFile);
::DeleteObject(hBmp);
@ -874,6 +874,27 @@ namespace paint
handle_->set_text_color(col);
}
::nana::color graphics::palette(bool for_text) const
{
if (handle_)
return static_cast<color_rgb>(for_text ? handle_->get_text_color() : handle_->get_color());
return{};
}
graphics& graphics::palette(bool for_text, const ::nana::color& clr)
{
if (handle_)
{
if (for_text)
handle_->set_text_color(clr);
else
handle_->set_color(clr);
}
return *this;
}
unsigned graphics::bidi_string(const nana::point& pos, const char_t * str, std::size_t len)
{
auto moved_pos = pos;

View File

@ -118,11 +118,12 @@ namespace nana
{
graphics & graph;
int x, endpos;
::nana::color fgcolor;
//::nana::color fgcolor; //deprecated
unsigned omitted_pixels;
nana::unicode_bidi bidi;
std::vector<nana::unicode_bidi::entity> reordered;
/* //deprecated
draw_string_omitted(graphics& graph, int x, int endpos, const ::nana::color& fgcolor, bool omitted)
: graph(graph), x(x), endpos(endpos), fgcolor(fgcolor)
{
@ -132,6 +133,7 @@ namespace nana
else
this->endpos = x;
}
*/
draw_string_omitted(graphics& graph, int x, int endpos, bool omitted)
: graph(graph), x(x), endpos(endpos)
@ -169,7 +171,8 @@ namespace nana
nana::paint::graphics dum_graph({ r.width, r.height });
dum_graph.bitblt(r, graph, pos);
dum_graph.set_text_color(fgcolor);
//dum_graph.set_text_color(fgcolor); //deprecated
dum_graph.set_text_color(graph.palette(true));
dum_graph.string({}, i.begin, len);
r.x = pos.x;