 7e68068c25
			
		
	
	
		7e68068c25
		
	
	
	
	
		
			
			CMakeLists.txt: --------------------------- Until now build with boost::filesystem was completely broken, since cmake exported definitions with wrong name prefixes, and nana always defaulted to internal filesystem implementation. After fixing the boost definitions, a number of errors came up due to incompatibility of boost::filesystem with nana and std filesystems. This commit tries to fix them all. filesystem.cpp, filesystem.hpp, filebox.cpp: -------------------------------------------- boost::filesystem doesn't have a file_time_type, so declared it in the filesystem.hpp header. boost::filesystem::last_write_time has a return type std::time_t unlike the other two implementations of this function in nana and std, so added ifdef to convert the result to file_time_type. fixed build on gcc-4.9, since it doesn't have a std::put_time function, included <nana/stdc++.hpp> in that case. boost::filesystem::file_type types have different names than std::experimental::filesystem::file_type types, fixed it by creating an enum class file_type with the same type names as in std::experimental::filesystem::file_type. This fix requires static_cast from functions results to internal file_type, since boost file_type and std file_type a different enum classes. changed switch to if, bacause old gcc fails on converting enum class members to int. stdc++.hpp: ----------- added ifndef guards to prevent errors on multiple includes of this header. wvl.cpp: -------- added boost/chrono.hpp include for the cases when std::thread is not available. travis: ------- added boost system, thread, chrono libs to install, they are needed for the nana-demo to compile.
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  *	Nana GUI Library Definition
 | |
|  *	Copyright(C) 2003-2017 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/wvl.cpp
 | |
|  *	@description:
 | |
|  *		the file contains the files required for running of Nana.GUI 
 | |
|  */
 | |
| 
 | |
| #include <nana/gui/wvl.hpp>
 | |
| #include <nana/gui/detail/bedrock.hpp>
 | |
| #include <nana/std_thread.hpp>
 | |
| #include <iostream> 
 | |
| 
 | |
| #ifdef STD_THREAD_NOT_SUPPORTED
 | |
| #	include <boost/chrono.hpp>
 | |
| #else
 | |
| #	include <chrono>
 | |
| #endif
 | |
| 
 | |
| //#define NANA_AUTOMATIC_GUI_TESTING
 | |
| namespace nana
 | |
| {
 | |
| 	namespace detail
 | |
| 	{
 | |
| 		void form_loader_private::insert_form(::nana::widget* p)
 | |
| 		{
 | |
| 			bedrock::instance().manage_form_loader(reinterpret_cast<basic_window*>(p->handle()), true);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| #ifdef NANA_AUTOMATIC_GUI_TESTING
 | |
| 
 | |
| 	void click(widget& w)
 | |
| 	{
 | |
| 		std::cout << "Automatically clicking widget "<<w.caption()<<":\n";
 | |
| 		arg_click arg;
 | |
| 		arg.window_handle = w.handle();
 | |
| 		w.events().click.emit(arg, w.handle());
 | |
| 	}
 | |
| 
 | |
| 	/// in seconds
 | |
| 	void Wait(unsigned wait)
 | |
| 	{
 | |
| 		if (!wait) return;
 | |
| 		std::cout << "waiting " << wait << " sec...\n";
 | |
| #	ifdef STD_THREAD_NOT_SUPPORTED
 | |
| 		boost::this_thread::sleep_for(boost::chrono::seconds{ wait });
 | |
| #	else
 | |
| 		std::this_thread::sleep_for(std::chrono::seconds{ wait });
 | |
| #	endif
 | |
| 	}
 | |
| 
 | |
| 	void pump()
 | |
| 	{
 | |
| 		internal_scope_guard lock;
 | |
| 		detail::bedrock::instance().pump_event(nullptr, false);
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	void exec(
 | |
| 		unsigned wait,         // = 1,      ///< for the GUI to be constructed, in seconds  
 | |
| 		unsigned wait_end,     // = 1,      ///< for the GUI to be destructed, in seconds
 | |
| 		std::function<void()>f // = {}      ///< emit events to mimics user actions and may asert results
 | |
| 	)
 | |
| 	{
 | |
| 			
 | |
| 	    std::cout << "Will wait " << wait << " sec...\n";
 | |
| 
 | |
| 	    std::thread t([wait, &f, wait_end]()
 | |
| 			{ 
 | |
| 				Wait( wait );
 | |
| 				std::cout << "running... \n"  ;
 | |
| 				if (f)
 | |
| 				{
 | |
| 					f();
 | |
| 					std::cout << "\nCongratulations, this was not trivial !" << std::endl;
 | |
| 				}else
 | |
| 				{
 | |
| 					std::cout << "\nJust a trivial test." << std::endl;
 | |
| 				}
 | |
| 				std::cout << "Done... \n";
 | |
| 				std::cout << "Now again ";
 | |
| 				Wait(wait_end);
 | |
| 				std::cout << "Done... Now API::exit all ...\n";
 | |
| 				API::exit_all();   
 | |
| 			});		
 | |
| 
 | |
| 		pump();
 | |
| 		if (t.joinable())
 | |
| 			t.join();
 | |
| 	}
 | |
| #else
 | |
| 	void exec()
 | |
| 	{
 | |
| 		internal_scope_guard lock;
 | |
| 		detail::bedrock::instance().pump_event(nullptr, false);
 | |
| 	}
 | |
| #endif
 | |
| }//end namespace nana
 |