@@ -9,6 +9,14 @@ +(void)acessibilitySettings:(nullable id)sender {
99 AXIsProcessTrustedWithOptions ((CFDictionaryRef)options);
1010}
1111
12+ +(void )popUpAction : (nonnull NSPopUpButton *)popUp {
13+ NSMenuItem * selectedItem = [popUp selectedItem ];
14+ if (selectedItem == nil )
15+ return ;
16+ NSString * title = [selectedItem title ];
17+ [[NSUserDefaults standardUserDefaults ] setObject: title forKey: UseSafariMenuItemSetting];
18+ }
19+
1220+(void )toggleBrowser : (nonnull NSButton *)sender {
1321 NSInteger tag = [sender tag ];
1422 BOOL useSafariTechnologyPreview = tag == 1 ;
@@ -26,38 +34,54 @@ +(nonnull NSWindow*)window {
2634 NSView * contentView = [window contentView ];
2735
2836 NSMutableArray <NSLayoutConstraint *>* constraints = [NSMutableArray array ];
29- [constraints addObject: [[contentView widthAnchor ] constraintEqualToConstant: 600.0 ]];
3037
3138 NSString * windowType = [JJApplicationName isEqualToString: @" PrivateWindow" ] ? @" private" : @" non-private" ;
3239 NSString * intro = [NSString stringWithFormat: @" %@ opens URLs in a %@ window in your selected web browser and then quits.\n You can set %@ as your default web brower in System Settings > Desktop & Dock." , JJApplicationName, windowType, JJApplicationName];
3340 NSTextField * label = [NSTextField wrappingLabelWithString: intro];
41+ [label setContentCompressionResistancePriority: NSLayoutPriorityDefaultHigh forOrientation: NSLayoutConstraintOrientationHorizontal];
3442 [label setTranslatesAutoresizingMaskIntoConstraints: NO ];
3543 [contentView addSubview: label];
3644 [constraints addObject: [[label topAnchor ] constraintEqualToAnchor: [contentView topAnchor ] constant: JJMainWindowMargin]];
3745 [constraints addObject: [[label leadingAnchor ] constraintEqualToAnchor: [contentView leadingAnchor ] constant: JJMainWindowMargin]];
46+ [constraints addObject: [[contentView trailingAnchor ] constraintEqualToAnchor: [label trailingAnchor ] constant: JJMainWindowMargin]];
47+
48+ NSFont * font = [label font ];
3849
3950 NSLayoutYAxisAnchor * bottomAnchor = [label bottomAnchor ];
4051
52+ if (!AXIsProcessTrusted ()) {
53+ NSString * trustString = [NSString stringWithFormat: @" You need to enable %@ in System Settings > Privacy & Security > Accessibility." , JJApplicationName];
54+ NSTextField * trustLabel = [NSTextField labelWithString: trustString];
55+ [trustLabel setTranslatesAutoresizingMaskIntoConstraints: NO ];
56+ [contentView addSubview: trustLabel];
57+ [constraints addObject: [[trustLabel topAnchor ] constraintEqualToAnchor: bottomAnchor constant: JJMainWindowMargin]];
58+ [constraints addObject: [[trustLabel leadingAnchor ] constraintEqualToAnchor: [label leadingAnchor ]]];
59+
60+ NSButton * trustButton = [[NSButton alloc ] init ];
61+ [trustButton setButtonType: NSButtonTypeMomentaryLight];
62+ [trustButton setBezelStyle: NSBezelStyleRounded];
63+ [trustButton setTitle: NSLocalizedString(@" Open Accessibility Settings" , nil )];
64+ [trustButton setAction: @selector (acessibilitySettings: )];
65+ [trustButton setTarget: self ];
66+ [trustButton setTranslatesAutoresizingMaskIntoConstraints: NO ];
67+ [contentView addSubview: trustButton];
68+ [constraints addObject: [[trustButton topAnchor ] constraintEqualToAnchor: [trustLabel bottomAnchor ] constant: 5.0 ]];
69+ [constraints addObject: [[trustButton leadingAnchor ] constraintEqualToAnchor: [trustLabel leadingAnchor ]]];
70+ [window setDefaultButtonCell: [trustButton cell ]];
71+ [window setInitialFirstResponder: trustButton];
72+ bottomAnchor = [trustButton bottomAnchor ];
73+ }
74+
4175 BOOL useSafariTechnologyPreview = [[NSUserDefaults standardUserDefaults ] boolForKey: UseSafariTechnologyPreviewSetting];
4276 if (useSafariTechnologyPreview || [[NSWorkspace sharedWorkspace ] URLForApplicationWithBundleIdentifier: SafariTechnologyPreviewBundleID] != nil ) {
43- NSTextField * browserLabel = [[NSTextField alloc ] init ];
44- [browserLabel setBezeled: NO ];
45- [browserLabel setBordered: NO ];
46- [browserLabel setDrawsBackground: NO ];
47- [browserLabel setEditable: NO ];
48- [browserLabel setLineBreakMode: NSLineBreakByClipping];
49- [browserLabel setSelectable: NO ];
50- [browserLabel setStringValue: @" Web Browser:" ];
51- [browserLabel setUsesSingleLineMode: YES ];
77+ NSTextField * browserLabel = [NSTextField labelWithString: @" Web Browser:" ];
5278 [browserLabel setTranslatesAutoresizingMaskIntoConstraints: NO ];
5379 [contentView addSubview: browserLabel];
54- [constraints addObject: [[browserLabel topAnchor ] constraintEqualToAnchor: [label bottomAnchor ] constant: JJMainWindowMargin]];
80+ [constraints addObject: [[browserLabel topAnchor ] constraintEqualToAnchor: bottomAnchor constant: JJMainWindowMargin * 2.0 ]];
5581 [constraints addObject: [[browserLabel leadingAnchor ] constraintEqualToAnchor: [label leadingAnchor ]]];
5682
5783 bottomAnchor = [browserLabel bottomAnchor ];
5884
59- NSFont * font = [browserLabel font ];
60-
6185 NSButton * safariButton = [NSButton radioButtonWithTitle: @" Safari" target: self action: @selector (toggleBrowser: )];
6286 [safariButton setTag: 0 ];
6387 [safariButton setFont: font];
@@ -82,30 +106,48 @@ +(nonnull NSWindow*)window {
82106 [safariButton setState: NSControlStateValueOn ];
83107 }
84108 }
109+
110+ NSTextField * popUpLabel = [NSTextField labelWithString: @" Safari File menu item:" ];
111+ [popUpLabel setTranslatesAutoresizingMaskIntoConstraints: NO ];
112+ [contentView addSubview: popUpLabel];
113+ [constraints addObject: [[popUpLabel topAnchor ] constraintEqualToAnchor: bottomAnchor constant: JJMainWindowMargin * 2.0 ]];
114+ [constraints addObject: [[popUpLabel leadingAnchor ] constraintEqualToAnchor: [label leadingAnchor ]]];
85115
86- if (!AXIsProcessTrusted ()) {
87- NSString * trustString = [NSString stringWithFormat: @" You need to enable %@ in System Settings > Privacy & Security > Accessibility." , JJApplicationName];
88- NSTextField * trustLabel = [NSTextField labelWithString: trustString];
89- [trustLabel setTranslatesAutoresizingMaskIntoConstraints: NO ];
90- [contentView addSubview: trustLabel];
91- [constraints addObject: [[trustLabel topAnchor ] constraintEqualToAnchor: bottomAnchor constant: JJMainWindowMargin]];
92- [constraints addObject: [[trustLabel leadingAnchor ] constraintEqualToAnchor: [label leadingAnchor ]]];
93-
94- NSButton * trustButton = [[NSButton alloc ] init ];
95- [trustButton setButtonType: NSButtonTypeMomentaryLight];
96- [trustButton setBezelStyle: NSBezelStyleRounded];
97- [trustButton setTitle: NSLocalizedString(@" Open Accessibility Settings" , nil )];
98- [trustButton setAction: @selector (acessibilitySettings: )];
99- [trustButton setTarget: self ];
100- [trustButton setTranslatesAutoresizingMaskIntoConstraints: NO ];
101- [contentView addSubview: trustButton];
102- [constraints addObject: [[trustButton topAnchor ] constraintEqualToAnchor: [trustLabel bottomAnchor ] constant: 5.0 ]];
103- [constraints addObject: [[trustButton leadingAnchor ] constraintEqualToAnchor: [trustLabel leadingAnchor ]]];
104- [window setDefaultButtonCell: [trustButton cell ]];
105- [window setInitialFirstResponder: trustButton];
106- bottomAnchor = [trustButton bottomAnchor ];
107- }
108- [constraints addObject: [[contentView bottomAnchor ] constraintEqualToAnchor: bottomAnchor constant: JJMainWindowMargin]];
116+ NSPopUpButton * popUp = [[NSPopUpButton alloc ] initWithFrame: NSMakeRect ( 0.0 , 0.0 , 150.0 , 16.0 ) pullsDown: NO ];
117+ [popUp setFont: font];
118+ [popUp setAction: @selector (popUpAction: )];
119+ [popUp setTarget: self ];
120+ [popUp setTranslatesAutoresizingMaskIntoConstraints: NO ];
121+ [popUp addItemsWithTitles: @[@" 1" , @" 2" , @" 3" , @" 4" , @" 5" , @" 6" , @" 7" , @" 8" , @" 9" , @" 10" ]];
122+ NSString * menuItemTitle = [[NSUserDefaults standardUserDefaults ] stringForKey: UseSafariMenuItemSetting];
123+ [popUp selectItemWithTitle: menuItemTitle];
124+ [contentView addSubview: popUp];
125+ [constraints addObject: [[popUp leadingAnchor ] constraintEqualToAnchor: [popUpLabel trailingAnchor ] constant: 5.0 ]];
126+ [constraints addObject: [[popUp lastBaselineAnchor ] constraintEqualToAnchor: [popUpLabel lastBaselineAnchor ]]];
127+
128+ NSTextField * popUpInstructions = [NSTextField labelWithString: @" By default, item 1 in the Safari File menu is New Window, and item 2 is New Private Window.\n However, Safari Profiles add items to the menu. Select the menu item that you want to use." ];
129+ [popUpInstructions setTranslatesAutoresizingMaskIntoConstraints: NO ];
130+ [contentView addSubview: popUpInstructions];
131+ [constraints addObject: [[popUpInstructions topAnchor ] constraintEqualToAnchor: [popUp bottomAnchor ] constant: 10.0 ]];
132+ [constraints addObject: [[popUpInstructions leadingAnchor ] constraintEqualToAnchor: [label leadingAnchor ]]];
133+
134+ NSImage * screenshot1 = [NSImage imageNamed: @" FileDefault" ];
135+ NSImageView * imageView1 = [[NSImageView alloc ] init ];
136+ [imageView1 setImage: screenshot1];
137+ [imageView1 setTranslatesAutoresizingMaskIntoConstraints: NO ];
138+ [contentView addSubview: imageView1];
139+ [constraints addObject: [[imageView1 topAnchor ] constraintEqualToAnchor: [popUpInstructions bottomAnchor ] constant: 10.0 ]];
140+ [constraints addObject: [[imageView1 leadingAnchor ] constraintEqualToAnchor: [label leadingAnchor ]]];
141+
142+ NSImage * screenshot2 = [NSImage imageNamed: @" FileProfiles" ];
143+ NSImageView * imageView2 = [[NSImageView alloc ] init ];
144+ [imageView2 setImage: screenshot2];
145+ [imageView2 setTranslatesAutoresizingMaskIntoConstraints: NO ];
146+ [contentView addSubview: imageView2];
147+ [constraints addObject: [[imageView2 topAnchor ] constraintEqualToAnchor: [imageView1 topAnchor ]]];
148+ [constraints addObject: [[imageView2 leadingAnchor ] constraintEqualToAnchor: [imageView1 trailingAnchor ] constant: JJMainWindowMargin]];
149+
150+ [constraints addObject: [[contentView bottomAnchor ] constraintEqualToAnchor: [imageView2 bottomAnchor ] constant: JJMainWindowMargin]];
109151 [NSLayoutConstraint activateConstraints: constraints];
110152
111153 [window makeKeyAndOrderFront: nil ];
0 commit comments