1/* 2 * IODBCadm_DriverChooseDSNController.m 3 * 4 * $Id$ 5 * 6 * The iODBC driver manager. 7 * 8 * Copyright (C) 1996-2021 OpenLink Software <iodbc@openlinksw.com> 9 * All Rights Reserved. 10 * 11 * This software is released under the terms of either of the following 12 * licenses: 13 * 14 * - GNU Library General Public License (see LICENSE.LGPL) 15 * - The BSD License (see LICENSE.BSD). 16 * 17 * Note that the only valid version of the LGPL license as far as this 18 * project is concerned is the original GNU Library General Public License 19 * Version 2, dated June 1991. 20 * 21 * While not mandated by the BSD license, any patches you make to the 22 * iODBC source code may be contributed back into the iODBC project 23 * at your discretion. Contributions will benefit the Open Source and 24 * Data Access community as a whole. Submissions may be made at: 25 * 26 * http://www.iodbc.org 27 * 28 * 29 * GNU Library Generic Public License Version 2 30 * ============================================ 31 * This library is free software; you can redistribute it and/or 32 * modify it under the terms of the GNU Library General Public 33 * License as published by the Free Software Foundation; only 34 * Version 2 of the License dated June 1991. 35 * 36 * This library is distributed in the hope that it will be useful, 37 * but WITHOUT ANY WARRANTY; without even the implied warranty of 38 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 39 * Library General Public License for more details. 40 * 41 * You should have received a copy of the GNU Library General Public 42 * License along with this library; if not, write to the Free 43 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 44 * 45 * 46 * The BSD License 47 * =============== 48 * Redistribution and use in source and binary forms, with or without 49 * modification, are permitted provided that the following conditions 50 * are met: 51 * 52 * 1. Redistributions of source code must retain the above copyright 53 * notice, this list of conditions and the following disclaimer. 54 * 2. Redistributions in binary form must reproduce the above copyright 55 * notice, this list of conditions and the following disclaimer in 56 * the documentation and/or other materials provided with the 57 * distribution. 58 * 3. Neither the name of OpenLink Software Inc. nor the names of its 59 * contributors may be used to endorse or promote products derived 60 * from this software without specific prior written permission. 61 * 62 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 63 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 64 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 65 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OPENLINK OR 66 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 67 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 68 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 69 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 70 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 71 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 72 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 73 */ 74 75#import "IODBCadm_DriverChooseDSNController.h" 76#import "utils.h" 77#import "Helpers.h" 78 79 80void create_driverchooser(HWND hwnd, TDRIVERCHOOSER * choose_t) 81{ 82 if (hwnd == NULL) 83 return; 84 85 @autoreleasepool { 86 NSApplication *app = [NSApplication sharedApplication]; 87 88 IODBCadm_DriverChooseDSNController *dlg = [[IODBCadm_DriverChooseDSNController alloc] init]; 89 90 NSInteger rc = [app runModalForWindow:dlg.window]; 91 if (choose_t) { 92 choose_t->driver = NULL; 93 94 if (rc == 1) { 95 NSArray *item = [dlg.Drv_ArrayController selectedObjects]; 96 if (item!=nil && item.count>0){ 97 NSDictionary *dict = [item objectAtIndex:0]; 98 choose_t->driver = conv_NSString_to_wchar([dict valueForKey:@"name"]); 99 } 100 } 101 } 102 [dlg.window orderOut:dlg.window]; 103 [dlg release]; 104 } 105 106} 107 108 109 110@interface IODBCadm_DriverChooseDSNController () 111 112@end 113 114@implementation IODBCadm_DriverChooseDSNController 115@synthesize Drv_ArrayController = _Drv_ArrayController; 116@synthesize Drv_list=_Drv_list; 117 118- (id)init 119{ 120 self = [super initWithWindowNibName:@"IODBCadm_DriverChooseDSNController"]; 121 if (self) { 122 self.Drv_list = [NSMutableArray arrayWithCapacity:16]; 123 } 124 return self; 125} 126 127- (void)dealloc 128{ 129 [_Drv_list release]; 130 [super dealloc]; 131} 132 133- (id)initWithWindow:(NSWindow *)window 134{ 135 self = [super initWithWindow:window]; 136 if (self) { 137 // Initialization code here. 138 } 139 return self; 140} 141 142- (void)windowDidLoad 143{ 144 [super windowDidLoad]; 145 _dialogCode = 0; 146 147 [[self window] center]; // Center the window. 148 addDrivers_to_list(_Drv_ArrayController); 149} 150 151- (void)windowWillClose:(NSNotification*)notification 152{ 153 [NSApp stopModalWithCode:_dialogCode]; 154} 155 156- (IBAction)call_Ok:(id)sender { 157 _dialogCode = 1; 158 [self.window close]; 159} 160 161- (IBAction)call_Cancel:(id)sender { 162 _dialogCode = 0; 163 [self.window close]; 164} 165 166 167@end 168