| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | // Copyright (c) 2017 GitHub, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ATOM_BROWSER_UI_COCOA_ATOM_TOUCH_BAR_H_
 | 
					
						
							|  |  |  | #define ATOM_BROWSER_UI_COCOA_ATOM_TOUCH_BAR_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #import <Cocoa/Cocoa.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <map>
 | 
					
						
							|  |  |  | #include <string>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "atom/browser/native_window.h"
 | 
					
						
							|  |  |  | #include "atom/browser/ui/cocoa/touch_bar_forward_declarations.h"
 | 
					
						
							| 
									
										
										
										
											2017-02-28 16:44:03 -08:00
										 |  |  | #include "base/mac/scoped_nsobject.h"
 | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | #include "native_mate/constructor.h"
 | 
					
						
							|  |  |  | #include "native_mate/persistent_dictionary.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | @interface AtomTouchBar : NSObject <NSScrubberDelegate, | 
					
						
							|  |  |  |                                     NSScrubberDataSource, | 
					
						
							|  |  |  |                                     NSScrubberFlowLayoutDelegate> { | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  |  @protected | 
					
						
							| 
									
										
										
										
											2017-03-01 15:26:10 -08:00
										 |  |  |   std::vector<mate::PersistentDictionary> ordered_settings_; | 
					
						
							| 
									
										
										
										
											2017-02-28 17:12:35 -08:00
										 |  |  |   std::map<std::string, mate::PersistentDictionary> settings_; | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  |   id<NSTouchBarDelegate> delegate_; | 
					
						
							|  |  |  |   atom::NativeWindow* window_; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (id)initWithDelegate:(id<NSTouchBarDelegate>)delegate | 
					
						
							|  |  |  |                 window:(atom::NativeWindow*)window | 
					
						
							|  |  |  |               settings:(const std::vector<mate::PersistentDictionary>&)settings; | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 16:45:26 -07:00
										 |  |  | - (NSTouchBar*)makeTouchBar API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  | - (NSTouchBar*)touchBarFromItemIdentifiers:(NSMutableArray*)items | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSMutableArray*)identifiersFromSettings: | 
					
						
							|  |  |  |     (const std::vector<mate::PersistentDictionary>&)settings; | 
					
						
							|  |  |  | - (void)refreshTouchBarItem:(NSTouchBar*)touchBar | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                          id:(const std::string&)item_id | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (void)addNonDefaultTouchBarItems: | 
					
						
							|  |  |  |     (const std::vector<mate::PersistentDictionary>&)items; | 
					
						
							|  |  |  | - (void)setEscapeTouchBarItem:(const mate::PersistentDictionary&)item | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                   forTouchBar:(NSTouchBar*)touchBar | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2017-03-02 10:23:24 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSString*)idFromIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |                    withPrefix:(NSString*)prefix; | 
					
						
							|  |  |  | - (NSTouchBarItemIdentifier)identifierFromID:(const std::string&)item_id | 
					
						
							|  |  |  |                                         type:(const std::string&)typere; | 
					
						
							| 
									
										
										
										
											2017-02-28 17:12:35 -08:00
										 |  |  | - (bool)hasItemWithID:(const std::string&)item_id; | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | - (NSColor*)colorFromHexColorString:(const std::string&)colorString; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Selector actions
 | 
					
						
							|  |  |  | - (void)buttonAction:(id)sender; | 
					
						
							| 
									
										
										
										
											2018-04-17 16:45:26 -07:00
										 |  |  | - (void)colorPickerAction:(id)sender API_AVAILABLE(macosx(10.12.2)); | 
					
						
							|  |  |  | - (void)sliderAction:(id)sender API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Helpers to create touch bar items
 | 
					
						
							| 
									
										
										
										
											2018-04-17 16:45:26 -07:00
										 |  |  | - (NSTouchBarItem*)makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSTouchBarItem*)makeButtonForID:(NSString*)id | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                     withIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSTouchBarItem*)makeLabelForID:(NSString*)id | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                    withIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSTouchBarItem*)makeColorPickerForID:(NSString*)id | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                          withIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSTouchBarItem*)makeSliderForID:(NSString*)id | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                     withIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSTouchBarItem*)makePopoverForID:(NSString*)id | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                      withIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (NSTouchBarItem*)makeGroupForID:(NSString*)id | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |                    withIdentifier:(NSString*)identifier | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Helpers to update touch bar items
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (void)updateButton:(NSCustomTouchBarItem*)item | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |         withSettings:(const mate::PersistentDictionary&)settings | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (void)updateLabel:(NSCustomTouchBarItem*)item | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |        withSettings:(const mate::PersistentDictionary&)settings | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (void)updateColorPicker:(NSColorPickerTouchBarItem*)item | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |              withSettings:(const mate::PersistentDictionary&)settings | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (void)updateSlider:(NSSliderTouchBarItem*)item | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |         withSettings:(const mate::PersistentDictionary&)settings | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  | - (void)updatePopover:(NSPopoverTouchBarItem*)item | 
					
						
							| 
									
										
										
										
											2018-04-18 15:39:45 +05:30
										 |  |  |          withSettings:(const mate::PersistentDictionary&)settings | 
					
						
							|  |  |  |     API_AVAILABLE(macosx(10.12.2)); | 
					
						
							| 
									
										
										
										
											2017-02-28 12:29:23 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | @end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // ATOM_BROWSER_UI_COCOA_ATOM_TOUCH_BAR_H_
 |