Revision: 15109
http://sourceforge.net/p/skim-app/code/15109
Author: hofman
Date: 2025-04-10 16:46:15 +0000 (Thu, 10 Apr 2025)
Log Message:
-----------
Group toolbar items with subitems for previous/next and back/forward toolbar
items. Use also separate menu for representations.
Modified Paths:
--------------
trunk/SKMainToolbarController.m
trunk/SKToolbarItem.h
trunk/SKToolbarItem.m
trunk/de.lproj/Localizable.strings
trunk/en.lproj/Localizable.strings
trunk/es.lproj/Localizable.strings
trunk/fr.lproj/Localizable.strings
trunk/it.lproj/Localizable.strings
trunk/ja.lproj/Localizable.strings
trunk/nl.lproj/Localizable.strings
trunk/pl.lproj/Localizable.strings
trunk/ru.lproj/Localizable.strings
trunk/zh_CN.lproj/Localizable.strings
trunk/zh_TW.lproj/Localizable.strings
Modified: trunk/SKMainToolbarController.m
===================================================================
--- trunk/SKMainToolbarController.m 2025-04-10 08:57:35 UTC (rev 15108)
+++ trunk/SKMainToolbarController.m 2025-04-10 16:46:15 UTC (rev 15109)
@@ -105,9 +105,6 @@
#define SKDocumentToolbarColorSwatchItemIdentifier
@"SKDocumentToolbarColorSwatchItemIdentifier"
#define SKDocumentToolbarShareItemIdentifier
@"SKDocumentToolbarShareItemIdentifier"
#define SKDocumentToolbarPacerItemIdentifier
@"SKDocumentToolbarPacerItemIdentifier"
-#define SKDocumentToolbarPacerButtonItemIdentifier
@"SKDocumentToolbarPacerButtonItemIdentifier"
-#define SKDocumentToolbarPacerSpeedFieldItemIdentifier
@"SKDocumentToolbarPacerSpeedFieldItemIdentifier"
-#define SKDocumentToolbarPacerSpeedStepperItemIdentifier
@"SKDocumentToolbarPacerSpeedStepperItemIdentifier"
#define SKDocumentToolbarColorsItemIdentifier
@"SKDocumentToolbarColorsItemIdentifier"
#define SKDocumentToolbarFontsItemIdentifier
@"SKDocumentToolbarFontsItemIdentifier"
#define SKDocumentToolbarLinesItemIdentifier
@"SKDocumentToolbarLinesItemIdentifier"
@@ -184,25 +181,35 @@
if (toolbarItems == nil)
toolbarItems = [[NSMutableDictionary alloc] init];
-
- item = [[SKToolbarItem alloc] initWithItemIdentifier:identifier];
+
+ static NSSet *groupIdentifiers = nil;
+ if (groupIdentifiers == nil)
+ groupIdentifiers = [NSSet
setWithObjects:SKDocumentToolbarPreviousNextItemIdentifier,
SKDocumentToolbarPreviousNextFirstLastItemIdentifier,
SKDocumentToolbarBackForwardItemIdentifier,
SKDocumentToolbarPacerItemIdentifier, nil];
+
+ if ([groupIdentifiers containsObject:identifier])
+ item = [[SKToolbarItemGroup alloc]
initWithItemIdentifier:identifier];
+ else
+ item = [[SKToolbarItem alloc] initWithItemIdentifier:identifier];
[toolbarItems setObject:item forKey:identifier];
if ([identifier
isEqualToString:SKDocumentToolbarPreviousNextItemIdentifier]) {
- menuItem = [[NSMenuItem alloc]
initWithSubmenuAndTitle:NSLocalizedString(@"Previous/Next", @"Toolbar item
label")];
- menu = [menuItem submenu];
- [menu addItemWithTitle:NSLocalizedString(@"Previous", @"Menu item
title") action:@selector(doGoToPreviousPage:) target:mainController];
- [menu addItemWithTitle:NSLocalizedString(@"Next", @"Menu item
title") action:@selector(doGoToNextPage:) target:mainController];
-
- [item setLabels:NSLocalizedString(@"Previous/Next", @"Toolbar item
label")];
[item setToolTip:NSLocalizedString(@"Previous/Next", @"Tool tip
message")];
[previousNextPageButton setHelp:NSLocalizedString(@"Go To Previous
Page", @"Tool tip message") forSegment:0];
[previousNextPageButton setHelp:NSLocalizedString(@"Go To Next
Page", @"Tool tip message") forSegment:1];
[previousNextPageButton setSegmentStyle:NSSegmentStyleSeparated];
[item setView:previousNextPageButton];
- [item setMenuFormRepresentation:menuItem];
+ NSToolbarItem *item1 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [item1 setLabels:NSLocalizedString(@"Previous", @"Toolbar item
label")];
+ menuItem = [[NSMenuItem alloc]
initWithTitle:NSLocalizedString(@"Previous", @"Toolbar item label")
action:@selector(doGoToPreviousPage:) target:mainController];
+ [item1 setMenuFormRepresentation:menuItem];
+ NSToolbarItem *item2 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [item2 setLabels:NSLocalizedString(@"Next", @"Toolbar item
label")];
+ [(NSToolbarItemGroup *)item setSubitems:@[item1, item2]];
+ menuItem = [[NSMenuItem alloc]
initWithTitle:NSLocalizedString(@"Next", @"Toolbar item label")
action:@selector(doGoToNextPage:) target:mainController];
+ [item2 setMenuFormRepresentation:menuItem];
+
} else if ([identifier
isEqualToString:SKDocumentToolbarPreviousItemIdentifier]) {
menuItem = [[NSMenuItem alloc]
initWithSubmenuAndTitle:NSLocalizedString(@"Previous", @"Toolbar item label")];
@@ -242,7 +249,6 @@
[menu addItemWithTitle:NSLocalizedString(@"First", @"Menu item
title") action:@selector(doGoToFirstPage:) target:mainController];
[menu addItemWithTitle:NSLocalizedString(@"Last", @"Menu item
title") action:@selector(doGoToLastPage:) target:mainController];
- [item setLabels:NSLocalizedString(@"Previous/Next", @"Toolbar item
label")];
[item setToolTip:NSLocalizedString(@"Go To First, Previous, Next
or Last Page", @"Tool tip message")];
[previousNextFirstLastPageButton setHelp:NSLocalizedString(@"Go To
First page", @"Tool tip message") forSegment:0];
[previousNextFirstLastPageButton setHelp:NSLocalizedString(@"Go To
Previous Page", @"Tool tip message") forSegment:1];
@@ -252,21 +258,32 @@
[item setView:previousNextFirstLastPageButton];
[item setMenuFormRepresentation:menuItem];
+ NSToolbarItem *item1 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ NSToolbarItem *item2 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [item2 setLabels:NSLocalizedString(@"Previous", @"Toolbar item
label")];
+ NSToolbarItem *item3 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [item3 setLabels:NSLocalizedString(@"Next", @"Toolbar item
label")];
+ NSToolbarItem *item4 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [(NSToolbarItemGroup *)item setSubitems:@[item1, item2, item3,
item4]];
+
} else if ([identifier
isEqualToString:SKDocumentToolbarBackForwardItemIdentifier]) {
- menuItem = [[NSMenuItem alloc]
initWithSubmenuAndTitle:NSLocalizedString(@"Back/Forward", @"Toolbar item
label")];
- menu = [menuItem submenu];
- [menu addItemWithTitle:NSLocalizedString(@"Back", @"Menu item
title") action:@selector(doGoBack:) target:mainController];
- [menu addItemWithTitle:NSLocalizedString(@"Forward", @"Menu item
title") action:@selector(doGoForward:) target:mainController];
-
- [item setLabels:NSLocalizedString(@"Back/Forward", @"Toolbar item
label")];
[item setToolTip:NSLocalizedString(@"Back/Forward", @"Tool tip
message")];
[backForwardButton setHelp:NSLocalizedString(@"Go Back", @"Tool
tip message") forSegment:0];
[backForwardButton setHelp:NSLocalizedString(@"Go Forward", @"Tool
tip message") forSegment:1];
[backForwardButton setSegmentStyle:NSSegmentStyleSeparated];
[item setView:backForwardButton];
- [item setMenuFormRepresentation:menuItem];
+ NSToolbarItem *item1 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [item1 setLabels:NSLocalizedString(@"Back", @"Toolbar item
label")];
+ menuItem = [[NSMenuItem alloc]
initWithTitle:NSLocalizedString(@"Back", @"Menu item title")
action:@selector(doGoBack:) target:mainController];
+ [item1 setMenuFormRepresentation:menuItem];
+ NSToolbarItem *item2 = [[NSToolbarItem alloc]
initWithItemIdentifier:@""];
+ [item2 setLabels:NSLocalizedString(@"Forward", @"Toolbar item
label")];
+ menuItem = [[NSMenuItem alloc]
initWithTitle:NSLocalizedString(@"Forward", @"Menu item title")
action:@selector(doGoForward:) target:mainController];
+ [item2 setMenuFormRepresentation:menuItem];
+ [(NSToolbarItemGroup *)item setSubitems:@[item1, item2]];
+
} else if ([identifier
isEqualToString:SKDocumentToolbarPageNumberItemIdentifier]) {
menuItem = [[NSMenuItem alloc]
initWithTitle:NSLocalizedString(@"Page", @"Menu item title")
action:@selector(doGoToPage:) target:mainController];
@@ -720,10 +737,6 @@
} else if ([identifier
isEqualToString:SKDocumentToolbarPacerItemIdentifier]) {
- NSToolbarItemGroup *group = [[NSToolbarItemGroup alloc]
initWithItemIdentifier:identifier];
- [toolbarItems setObject:group forKey:identifier];
- item = (id)group;
-
[pacerButton sizeToFit];
NSRect frame;
frame = [pacerButton frame];
@@ -753,13 +766,13 @@
[pacerSpeedStepper setToolTip:NSLocalizedString(@"Pacer Speed",
@"Tool tip message")];
[item setMenuFormRepresentation:menuItem];
- NSToolbarItem *item1 = [[SKToolbarItem alloc]
initWithItemIdentifier:SKDocumentToolbarPacerButtonItemIdentifier];
+ NSToolbarItem *item1 = [[SKToolbarItem alloc]
initWithItemIdentifier:@""];
[item1 setView:pacerButton];
- NSToolbarItem *item2 = [[SKToolbarItem alloc]
initWithItemIdentifier:SKDocumentToolbarPacerSpeedFieldItemIdentifier];
+ NSToolbarItem *item2 = [[SKToolbarItem alloc]
initWithItemIdentifier:@""];
[item2 setView:pacerSpeedField];
- NSToolbarItem *item3 = [[SKToolbarItem alloc]
initWithItemIdentifier:SKDocumentToolbarPacerSpeedStepperItemIdentifier];
+ NSToolbarItem *item3 = [[SKToolbarItem alloc]
initWithItemIdentifier:@""];
[item3 setView:pacerSpeedStepper];
- [group setSubitems:@[item1, item2, item3]];
+ [(NSToolbarItemGroup *)item setSubitems:@[item1, item2, item3]];
} else if ([identifier
isEqualToString:SKDocumentToolbarColorsItemIdentifier]) {
Modified: trunk/SKToolbarItem.h
===================================================================
--- trunk/SKToolbarItem.h 2025-04-10 08:57:35 UTC (rev 15108)
+++ trunk/SKToolbarItem.h 2025-04-10 16:46:15 UTC (rev 15109)
@@ -41,3 +41,7 @@
@interface SKToolbarItem : NSToolbarItem
@end
+
+
+@interface SKToolbarItemGroup : NSToolbarItemGroup
+@end
Modified: trunk/SKToolbarItem.m
===================================================================
--- trunk/SKToolbarItem.m 2025-04-10 08:57:35 UTC (rev 15108)
+++ trunk/SKToolbarItem.m 2025-04-10 16:46:15 UTC (rev 15109)
@@ -57,3 +57,23 @@
}
@end
+
+
+@implementation SKToolbarItemGroup
+
+- (void)validate {
+ if ([self view] && [[[self toolbar] delegate]
respondsToSelector:@selector(validateToolbarItem:)]) {
+ BOOL enabled = [(id)[[self toolbar] delegate]
validateToolbarItem:self];
+ [self setEnabled:enabled];
+ }
+ [super validate];
+}
+
+- (void)setView:(NSView *)view {
+ if ([view isKindOfClass:[NSSegmentedControl class]] || [view
isKindOfClass:[NSStepper class]]) {
+ [(NSSegmentedControl *)view sizeToFit];
+ }
+ [super setView:view];
+}
+
+@end
Modified: trunk/de.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/en.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/es.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/fr.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/it.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/ja.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/nl.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/pl.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/ru.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/zh_CN.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/zh_TW.lproj/Localizable.strings
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit