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
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to