implement selectFormat selector
This commit is contained in:
parent
0fff336481
commit
3085c78bcf
1 changed files with 36 additions and 0 deletions
|
@ -14,10 +14,42 @@
|
||||||
#include "base/mac/scoped_cftyperef.h"
|
#include "base/mac/scoped_cftyperef.h"
|
||||||
#include "base/strings/sys_string_conversions.h"
|
#include "base/strings/sys_string_conversions.h"
|
||||||
|
|
||||||
|
@interface PopUpButtonHandler : NSObject
|
||||||
|
@property (nonatomic, weak) NSSavePanel *savePanel;
|
||||||
|
@property (nonatomic, weak) NSArray *fileTypes;
|
||||||
|
- (instancetype)initWithPanel:(NSSavePanel *)panel andTypes:(NSArray *)types;
|
||||||
|
- (void)selectFormat:(id)sender;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation PopUpButtonHandler
|
||||||
|
- (instancetype)initWithPanel:(NSSavePanel *)panel andTypes:(NSArray *)types {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_savePanel = panel;
|
||||||
|
_fileTypes = types;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)selectFormat:(id)sender {
|
||||||
|
NSPopUpButton *button = (NSPopUpButton *)sender;
|
||||||
|
NSInteger selectedItemIndex = [button indexOfSelectedItem];
|
||||||
|
NSString *nameFieldString = [[self savePanel] nameFieldStringValue];
|
||||||
|
NSString *trimmedNameFieldString = [nameFieldString stringByDeletingPathExtension];
|
||||||
|
NSString *extension = [[self fileTypes] objectAtIndex: selectedItemIndex];
|
||||||
|
|
||||||
|
NSString *nameFieldStringWithExt = [NSString stringWithFormat:@"%@.%@", trimmedNameFieldString, extension];
|
||||||
|
[[self savePanel] setNameFieldStringValue:nameFieldStringWithExt];
|
||||||
|
[[self savePanel] setAllowedFileTypes:@[extension]];
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
namespace file_dialog {
|
namespace file_dialog {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
static PopUpButtonHandler *popUpButtonHandler;
|
||||||
|
|
||||||
void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
|
void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
|
||||||
NSMutableSet* file_type_set = [NSMutableSet set];
|
NSMutableSet* file_type_set = [NSMutableSet set];
|
||||||
for (size_t i = 0; i < filters.size(); ++i) {
|
for (size_t i = 0; i < filters.size(); ++i) {
|
||||||
|
@ -43,6 +75,9 @@ void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
|
||||||
|
|
||||||
[dialog setAllowedFileTypes:file_types];
|
[dialog setAllowedFileTypes:file_types];
|
||||||
|
|
||||||
|
if (!popUpButtonHandler)
|
||||||
|
popUpButtonHandler = [[PopUpButtonHandler alloc] initWithPanel:dialog andTypes:file_types];
|
||||||
|
|
||||||
// add file format picker
|
// add file format picker
|
||||||
NSView *accessoryView = [[NSView alloc] initWithFrame:NSMakeRect(0.0, 0.0, 200, 32.0)];
|
NSView *accessoryView = [[NSView alloc] initWithFrame:NSMakeRect(0.0, 0.0, 200, 32.0)];
|
||||||
NSTextField *label = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 60, 22)];
|
NSTextField *label = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 60, 22)];
|
||||||
|
@ -55,6 +90,7 @@ void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
|
||||||
|
|
||||||
NSPopUpButton *popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(50.0, 2, 140, 22.0) pullsDown:NO];
|
NSPopUpButton *popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(50.0, 2, 140, 22.0) pullsDown:NO];
|
||||||
[popupButton addItemsWithTitles:file_types];
|
[popupButton addItemsWithTitles:file_types];
|
||||||
|
[popupButton setTarget:popUpButtonHandler];
|
||||||
[popupButton setAction:@selector(selectFormat:)];
|
[popupButton setAction:@selector(selectFormat:)];
|
||||||
|
|
||||||
[accessoryView addSubview:label];
|
[accessoryView addSubview:label];
|
||||||
|
|
Loading…
Add table
Reference in a new issue