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