| 
									
										
										
										
											2013-08-09 08:01:20 +08:00
										 |  |  | // Aseprite UI Library
 | 
					
						
							| 
									
										
										
										
											2017-08-15 21:39:06 +08:00
										 |  |  | // Copyright (C) 2001-2017  David Capello
 | 
					
						
							| 
									
										
										
										
											2010-09-28 06:18:17 +08:00
										 |  |  | //
 | 
					
						
							| 
									
										
										
										
											2014-03-30 07:08:05 +08:00
										 |  |  | // This file is released under the terms of the MIT license.
 | 
					
						
							|  |  |  | // Read LICENSE.txt for more information.
 | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-06 08:20:19 +08:00
										 |  |  | #ifdef HAVE_CONFIG_H
 | 
					
						
							| 
									
										
										
										
											2009-07-13 04:29:16 +08:00
										 |  |  | #include "config.h"
 | 
					
						
							| 
									
										
										
										
											2013-08-06 08:20:19 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2009-07-13 04:29:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-18 09:49:58 +08:00
										 |  |  | #include "ui/manager.h"
 | 
					
						
							|  |  |  | #include "ui/theme.h"
 | 
					
						
							|  |  |  | #include "ui/widget.h"
 | 
					
						
							| 
									
										
										
										
											2012-07-09 10:24:42 +08:00
										 |  |  | #include "ui/window.h"
 | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-16 10:37:59 +08:00
										 |  |  | #include <list>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-18 09:02:54 +08:00
										 |  |  | namespace ui { | 
					
						
							| 
									
										
										
										
											2015-09-01 21:18:47 +08:00
										 |  |  | namespace details { | 
					
						
							| 
									
										
										
										
											2012-06-18 09:02:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-16 10:37:59 +08:00
										 |  |  | static std::list<Widget*>* widgets; | 
					
						
							| 
									
										
										
										
											2009-08-05 09:53:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-01 21:18:47 +08:00
										 |  |  | void initWidgets() | 
					
						
							| 
									
										
										
										
											2009-08-05 09:53:02 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-06-16 10:37:59 +08:00
										 |  |  |   widgets = new std::list<Widget*>; | 
					
						
							| 
									
										
										
										
											2009-08-05 09:53:02 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-01 21:18:47 +08:00
										 |  |  | void exitWidgets() | 
					
						
							| 
									
										
										
										
											2009-08-05 09:53:02 +08:00
										 |  |  | { | 
					
						
							|  |  |  |   delete widgets; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-31 00:38:24 +08:00
										 |  |  | void addWidget(Widget* widget) | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-06-16 10:37:59 +08:00
										 |  |  |   widgets->push_back(widget); | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-31 00:38:24 +08:00
										 |  |  | void removeWidget(Widget* widget) | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-09-05 05:10:02 +08:00
										 |  |  |   ASSERT(!Manager::widgetAssociatedToManager(widget)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-06 06:14:33 +08:00
										 |  |  |   auto it = std::find(widgets->begin(), widgets->end(), widget); | 
					
						
							| 
									
										
										
										
											2012-06-16 10:37:59 +08:00
										 |  |  |   if (it != widgets->end()) | 
					
						
							|  |  |  |     widgets->erase(it); | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-31 00:38:24 +08:00
										 |  |  | void reinitThemeForAllWidgets() | 
					
						
							| 
									
										
										
										
											2010-03-09 10:43:28 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-06-16 10:37:59 +08:00
										 |  |  |   // Reinitialize the theme of each widget
 | 
					
						
							| 
									
										
										
										
											2017-08-15 21:39:06 +08:00
										 |  |  |   auto theme = get_theme(); | 
					
						
							|  |  |  |   for (auto widget : *widgets) | 
					
						
							|  |  |  |     widget->setTheme(theme); | 
					
						
							| 
									
										
										
										
											2007-09-19 07:57:02 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2012-06-18 09:02:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-01 21:18:47 +08:00
										 |  |  | } // namespace details
 | 
					
						
							| 
									
										
										
										
											2012-06-18 09:02:54 +08:00
										 |  |  | } // namespace ui
 |