[vlc-commits] [Git][videolan/vlc][master] 3 commits: macosx: Add convenience method to get extension array from EXTENSIONS_ strings
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Sun May 3 11:42:45 UTC 2026
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
2724c104 by Claudio Cambra at 2026-05-03T13:20:27+02:00
macosx: Add convenience method to get extension array from EXTENSIONS_ strings
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
d55e331a by Claudio Cambra at 2026-05-03T13:20:27+02:00
macosx: Filter by media extensions in conversion window
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
569530a4 by Claudio Cambra at 2026-05-03T13:20:27+02:00
macosx: Filter by expected types in open window controller openpanels
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
6 changed files:
- modules/gui/macosx/extensions/NSString+Helpers.h
- modules/gui/macosx/extensions/NSString+Helpers.m
- modules/gui/macosx/menus/VLCMainMenu.m
- modules/gui/macosx/views/VLCPlaybackEndViewController.m
- modules/gui/macosx/windows/VLCOpenWindowController.m
- modules/gui/macosx/windows/convertandsave/VLCConvertAndSaveWindowController.m
Changes:
=====================================
modules/gui/macosx/extensions/NSString+Helpers.h
=====================================
@@ -163,6 +163,12 @@ NSImage *imageFromRes(NSString *name);
*/
- (NSString *)stringWithIncrementedTrailingNumber;
+/**
+ * Returns an array of file extensions from a semicolon-separated string of extensions,
+ * stripping any leading "*." prefix.
+ */
++ (NSArray<NSString *> *)extensionsArrayFromVLCStyleString:(const char *)extensionsString;
+
@end
/**
=====================================
modules/gui/macosx/extensions/NSString+Helpers.m
=====================================
@@ -231,6 +231,17 @@ NSString *const kVLCMediaUnknown = @"Unknown";
return result.copy;
}
++ (NSArray<NSString *> *)extensionsArrayFromVLCStyleString:(const char *)extensionsString
+{
+ if (extensionsString == NULL) {
+ return @[];
+ }
+
+ NSString *extensions = [NSString stringWithCString:extensionsString encoding:NSUTF8StringEncoding];
+ extensions = [extensions stringByReplacingOccurrencesOfString:@"*." withString:@""];
+ return [extensions componentsSeparatedByString:@";"];
+}
+
@end
#pragma mark -
=====================================
modules/gui/macosx/menus/VLCMainMenu.m
=====================================
@@ -1234,10 +1234,7 @@ typedef NS_ENUM(NSInteger, VLCObjectType) {
[openPanel setCanChooseFiles: YES];
[openPanel setCanChooseDirectories: NO];
[openPanel setAllowsMultipleSelection: YES];
-
- NSMutableString *subtitleExtensionsString = [toNSStr(EXTENSIONS_SUBTITLE) mutableCopy];
- [subtitleExtensionsString replaceOccurrencesOfString:@"*." withString:@"" options:NSLiteralSearch range:NSMakeRange(0, subtitleExtensionsString.length)];
- [openPanel setAllowedFileTypes:[subtitleExtensionsString componentsSeparatedByString:@";"]];
+ [openPanel setAllowedFileTypes:[NSString extensionsArrayFromVLCStyleString:EXTENSIONS_SUBTITLE]];
NSURL *url = _playerController.URLOfCurrentMediaItem;
url = [url URLByDeletingLastPathComponent];
=====================================
modules/gui/macosx/views/VLCPlaybackEndViewController.m
=====================================
@@ -147,10 +147,7 @@ NSString * const VLCPlaybackEndViewReturnToLibraryNotificationName = @"VLCPlayba
return nil;
}
- NSArray<NSString *> * const playableExtensions = [[[NSString
- stringWithCString:EXTENSIONS_MEDIA encoding:NSUTF8StringEncoding]
- stringByReplacingOccurrencesOfString:@"*." withString:@""]
- componentsSeparatedByString:@";"];
+ NSArray<NSString *> * const playableExtensions = [NSString extensionsArrayFromVLCStyleString:EXTENSIONS_MEDIA];
NSArray<NSString *> * const itemPlayableSiblingItemPaths = [[itemSiblingItemPaths
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSString * const _Nonnull siblingItemPath, NSDictionary<NSString *, id> * const _Nullable __unused bindings) {
=====================================
modules/gui/macosx/windows/VLCOpenWindowController.m
=====================================
@@ -546,6 +546,7 @@ NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection: YES];
[openPanel setCanChooseDirectories: YES];
+ [openPanel setAllowedFileTypes:[NSString extensionsArrayFromVLCStyleString:EXTENSIONS_MEDIA]];
[openPanel setTitle: _NS("Open File")];
[openPanel setPrompt: _NS("Open")];
@@ -628,6 +629,7 @@ NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection: NO];
[openPanel setCanChooseDirectories: YES];
+ [openPanel setAllowedFileTypes:[NSString extensionsArrayFromVLCStyleString:EXTENSIONS_MEDIA]];
[openPanel setTitle: _NS("Open File")];
[openPanel setPrompt: _NS("Open")];
[openPanel beginSheetModalForWindow:[sender window] completionHandler:^(NSInteger returnCode) {
@@ -652,6 +654,7 @@ NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles: YES];
[openPanel setCanChooseDirectories: NO];
+ [openPanel setAllowedFileTypes:[NSString extensionsArrayFromVLCStyleString:EXTENSIONS_MEDIA]];
if ([openPanel runModal] == NSModalResponseOK) {
_fileSlavePath = [[[openPanel URLs] firstObject] path];
}
@@ -1264,6 +1267,7 @@ NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
{
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection: NO];
+ [openPanel setAllowedFileTypes:[NSString extensionsArrayFromVLCStyleString:EXTENSIONS_SUBTITLE]];
[openPanel setTitle: _NS("Open File")];
[openPanel setPrompt: _NS("Open")];
=====================================
modules/gui/macosx/windows/convertandsave/VLCConvertAndSaveWindowController.m
=====================================
@@ -328,6 +328,7 @@ NSString *VLCConvertAndSaveProfileNamesKey = @"CASProfileNames";
[openPanel setCanChooseDirectories:NO];
[openPanel setResolvesAliases:YES];
[openPanel setAllowsMultipleSelection:NO];
+ [openPanel setAllowedFileTypes:[NSString extensionsArrayFromVLCStyleString:EXTENSIONS_MEDIA]];
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger returnCode) {
if (returnCode == NSModalResponseOK) {
[self setMRL: [[openPanel URL] absoluteString]];
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/8d47a38afdd3a18969e241ade782396573de8e78...569530a4ff3530b2eff2f3448d22e8af6afa9522
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/8d47a38afdd3a18969e241ade782396573de8e78...569530a4ff3530b2eff2f3448d22e8af6afa9522
You're receiving this email because of your account on code.videolan.org.
More information about the vlc-commits
mailing list