Develop and Download Open Source Software

Browse CVS Repository

Contents of /enbanfukusyaya/EnbanFukusyaYa/MacOSX/MainWindowControl.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download)
Mon Jul 3 15:18:40 2006 UTC (17 years, 9 months ago) by bananajinn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +16 -0 lines
*** empty log message ***

1 #import "MainWindowControl.h"
2 #import "SettingDlgControl.h"
3 #import "SettingNetControl.h"
4 #import "ui.h"
5 #import "scan.h"
6 #import "cmd.h"
7 #import "copydisc.h"
8 #import "cmdlog.h"
9
10 @implementation MainWindowControl
11
12 static SCAN_t *g_Readers=NULL;
13 static SCAN_t *g_Writers=NULL;
14 static BOOL g_bRunningCopy=FALSE;
15 static int g_AllWritableDrives=-1;
16 static int g_ReaderISO=-1;
17 static int g_WriterISO=-1;
18 static int g_ReaderEmg=-1;
19 static int g_WriterEmg=-1;
20 static int g_ReaderNet=-1;
21 static int g_WriterNet=-1;
22
23 - (IBAction)exitProgram:(id)sender
24 {
25 [NSApp terminate : self];
26 }
27
28 - (IBAction)scanDrive:(id)sender
29 {
30 SCAN_t *scan;
31 id combo;
32 int i, j;
33
34 g_Readers = ScanDrive(FALSE);
35 g_Writers = ScanDrive(TRUE);
36
37 for(i=0; i<2; i++){
38 scan = i==0 ? g_Readers : g_Writers;
39 combo = i==0 ? readerCombo : writerCombo;
40 [combo removeAllItems];
41 for(j=0; strlen(scan[j].inqdata)!=0; j++){
42 // ComboBox‚Ěę‡
43 //[combo addItemWithObjectValue : [NSString stringWithCString : scan[j].inqdata]];
44 // PopupButton ‚Ěę‡
45 [combo addItemWithTitle : [NSString stringWithCString : scan[j].inqdata]];
46 }
47 }
48
49 g_AllWritableDrives = [writerCombo numberOfItems];
50 [writerCombo addItemWithTitle: [NSString stringWithCString : "‹L˜^ƒfƒBƒXƒN‘}“üĎ‚݂̑S‘•’u"]];
51
52 g_ReaderISO = [readerCombo numberOfItems];
53 [readerCombo addItemWithTitle: [NSString stringWithCString : "ISOƒCƒ[ƒWƒtƒ@ƒCƒ‹"]];
54 g_WriterISO = [writerCombo numberOfItems];
55 [writerCombo addItemWithTitle: [NSString stringWithCString : "ISOƒCƒ[ƒWƒtƒ@ƒCƒ‹"]];
56
57 g_ReaderEmg = [readerCombo numberOfItems];
58 [readerCombo addItemWithTitle: [NSString stringWithCString : "‰~”ŐƒCƒ[ƒWƒtƒ@ƒCƒ‹"]];
59 g_WriterEmg = [writerCombo numberOfItems];
60 [writerCombo addItemWithTitle: [NSString stringWithCString : "‰~”ŐƒCƒ[ƒWƒtƒ@ƒCƒ‹"]];
61
62 g_ReaderNet = [readerCombo numberOfItems];
63 [readerCombo addItemWithTitle: [NSString stringWithCString : "ƒlƒbƒgƒ[ƒN"]];
64 g_WriterNet = [writerCombo numberOfItems];
65 [writerCombo addItemWithTitle: [NSString stringWithCString : "ƒlƒbƒgƒ[ƒN"]];
66 }
67
68 - (IBAction)startCopy:(id)sender
69 {
70
71 if(g_bRunningCopy){
72 UISetAbort();
73 [buttonStartCopy setEnabled : NO];
74 return;
75 }
76 UIClearAbort();
77 g_bRunningCopy = TRUE;
78 [buttonQuit setEnabled : NO];
79 [readerCombo setEnabled : NO];
80 [writerCombo setEnabled : NO];
81 [buttonStartCopy setTitle : [NSString stringWithCString : "’†’f"]];
82 #ifdef USE_THREAD
83 [NSThread detachNewThreadSelector: @selector(startCopyThread:)
84 toTarget: self
85 withObject: nil];
86 #else
87 [self startCopyThread: nil];
88 #endif
89 g_bRunningCopy = FALSE;
90 }
91
92 - (void)startCopyThread:(id)object
93 {
94 NSAutoreleasePool *ap = [[NSAutoreleasePool alloc] init];
95 DRIVEID reader, *writerp=NULL;
96 int sel_reader, sel_writer;
97 int ret;
98 int writer_num = 1;
99 int index;
100
101 /* ‘I‘đƒhƒ‰ƒCƒuŽć“ž */
102 sel_reader = [readerCombo indexOfSelectedItem];
103 sel_writer = [writerCombo indexOfSelectedItem];
104
105 /* ‘ž‘•’u—pƒƒ‚ƒŠŠm•Ű */
106 writerp = (DRIVEID *)malloc(sizeof(DRIVEID));
107 if(writerp==NULL){
108 [self MessageBoxDlg : "‘ž‘•’u‚̏‰Šú‰ť‚ÉŽ¸”s‚ľ‚Ü‚ľ‚˝B(ƒƒ‚ƒŠŠm•ŰƒGƒ‰[)"
109 title : NULL
110 flags : MBF_TYPEOK|MBF_ICONSTOP];
111 [buttonStartCopy setEnabled : YES];
112 [buttonQuit setEnabled : YES];
113 [readerCombo setEnabled : YES];
114 [writerCombo setEnabled : YES];
115 [buttonStartCopy setTitle : [NSString stringWithCString : "•ĄŽĘŠJŽn"]];
116 [ap release];
117 return;
118 }
119
120 /* ‘ž‘•’uÝ’č */
121 if(sel_writer == g_AllWritableDrives){
122 writer_num = 0;
123 for(index=0; strlen(g_Writers[index].inqdata)!=0; index++){
124 if(g_Readers[sel_reader].hid == g_Writers[index].hid &&
125 g_Readers[sel_reader].tid == g_Writers[index].tid){
126 /* “ÇŽć‘•’u‚Í–łŽ‹ */
127 continue;
128 }
129 writerp = (DRIVEID *)realloc(writerp, (writer_num+1)*sizeof(DRIVEID));
130 if(writerp==NULL){
131 [self MessageBoxDlg : "‘ž‘•’u‚̏‰Šú‰ť‚ÉŽ¸”s‚ľ‚Ü‚ľ‚˝B(ƒƒ‚ƒŠŠm•ŰƒGƒ‰[)"
132 title : NULL
133 flags : MBF_TYPEOK|MBF_ICONSTOP];
134 [buttonStartCopy setEnabled : YES];
135 [buttonQuit setEnabled : YES];
136 [readerCombo setEnabled : YES];
137 [writerCombo setEnabled : YES];
138 [buttonStartCopy setTitle : [NSString stringWithCString : "•ĄŽĘŠJŽn"]];
139 [ap release];
140 return;
141 }
142 writerp[writer_num].hid = g_Writers[index].hid;
143 writerp[writer_num].tid = g_Writers[index].tid;
144 writer_num++;
145 }
146 }
147 else if(sel_writer == g_WriterISO){
148 writerp->hid = HID_VIRTUAL;
149 writerp->tid = CMDDRVTYPE_ISO;
150 writer_num = 1;
151 }
152 else if(sel_writer == g_WriterEmg){
153 writerp->hid = HID_VIRTUAL;
154 writerp->tid = CMDDRVTYPE_IMAGE;
155 writer_num = 1;
156 }
157 else if(sel_writer == g_WriterNet){
158 writerp->hid = HID_VIRTUAL;
159 writerp->tid = CMDDRVTYPE_NET;
160 writer_num = 1;
161 }
162 else{
163 writerp->hid = g_Writers[sel_writer].hid;
164 writerp->tid = g_Writers[sel_writer].tid;
165 writer_num = 1;
166 }
167
168 /* “ÇŽć‘•’uÝ’č */
169 if(sel_reader == g_ReaderISO){
170 reader.hid = HID_VIRTUAL;
171 reader.tid = CMDDRVTYPE_ISO;
172 }
173 else if(sel_reader == g_ReaderEmg){
174 reader.hid = HID_VIRTUAL;
175 reader.tid = CMDDRVTYPE_IMAGE;
176 }
177 else if(sel_reader == g_ReaderNet){
178 reader.hid = HID_VIRTUAL;
179 reader.tid = CMDDRVTYPE_NET;
180 }
181 else{
182 reader.hid = g_Readers[sel_reader].hid;
183 reader.tid = g_Readers[sel_reader].tid;
184 }
185
186 UIClearAbort();
187 ret = CopyDisc(&reader, writerp, writer_num);
188
189 [buttonStartCopy setEnabled : YES];
190 [buttonQuit setEnabled : YES];
191 [readerCombo setEnabled : YES];
192 [writerCombo setEnabled : YES];
193 [buttonStartCopy setTitle : [NSString stringWithCString : "•ĄŽĘŠJŽn"]];
194
195 /* ‘ž‘•’uƒƒ‚ƒŠ‰đ•ú */
196 free(writerp);
197
198 UIMeter1Initialize(NULL);
199 UIMeter2Initialize(NULL);
200 [ap release];
201 }
202
203 - (void)startUp
204 {
205 UISetMWC(self);
206 [self scanDrive : self];
207 }
208
209 - (void)uiCtlMeter1Initialize:(const char *)string
210 {
211 if(string==NULL){
212 [meter1Label setStringValue : @""];
213 }
214 else{
215 [meter1Label setStringValue : [NSString stringWithCString : string]];
216 }
217 [meter1 setDoubleValue : 0.0];
218 }
219
220 - (void)uiCtlMeter2Initialize:(const char *)string
221 {
222 if(string==NULL){
223 [meter2Label setStringValue : @""];
224 }
225 else{
226 [meter2Label setStringValue : [NSString stringWithCString : string]];
227 }
228 [meter2 setDoubleValue : 0.0];
229 }
230
231 - (void)uiCtlMeter1Update:(int)percentage
232 {
233 [meter1 setDoubleValue : (double)percentage];
234 }
235
236 - (void)uiCtlMeter2Update:(int)percentage
237 {
238 [meter2 setDoubleValue : (double)percentage];
239 }
240
241 - (void)uiCtlDispInfo:(const char *)string
242 {
243 if(string==NULL){
244 [infoLabel setStringValue : @""];
245 }
246 else{
247 [infoLabel setStringValue : [NSString stringWithCString : string]];
248 }
249 }
250
251 - (int)uiCtlSetting:(OPTIONS *)option
252 {
253 return [settingPanel openSettingDialog: option];
254 }
255
256 - (int)uiCtlNetSetting : (BOOL)serverMode
257 remoteAddress : (char *)remote
258 addressSize : (int)size
259 portNumber : (int *)portNumber
260 {
261 return [netSettingPanel openNetSettingDialog:serverMode
262 remoteAddress:remote
263 addressSize:size
264 portNumber:portNumber];
265 }
266
267
268 - (int)MessageBoxDlg : (const char *)messageKey
269 title : (const char *)titleKey
270 flags : (int)flags
271 {
272 NSAlert *alert;
273 NSString *button1Label, *button2Label, *button3Label;
274 NSString *message, *title=NULL;
275 NSAlertStyle alertStyle;
276 int retvalue[3], retcode;
277
278 if(titleKey!=NULL)
279 title = [NSString stringWithCString : titleKey];
280 message = [NSString stringWithCString : messageKey];
281
282 switch(flags & MBF_TYPEMASK){
283 case MBF_TYPEABORTRETRYIGNORE:
284 button1Label = [NSString stringWithCString : "’†’f"];
285 button2Label = [NSString stringWithCString : "ÄŽŽs"];
286 button3Label = [NSString stringWithCString : "–łŽ‹"];
287 retvalue[0] = MBR_ABORT;
288 retvalue[1] = MBR_RETRY;
289 retvalue[2] = MBR_IGNORE;
290 break;
291 case MBF_TYPEOKCANCEL:
292 button1Label = [NSString stringWithCString : "—š‰đ"];
293 button2Label = [NSString stringWithCString : "ŽćÁ"];
294 button3Label = NULL;
295 retvalue[0] = MBR_OK;
296 retvalue[1] = MBR_CANCEL;
297 retvalue[2] = 0;
298 break;
299 case MBF_TYPERETRYCANCEL:
300 button1Label = [NSString stringWithCString : "ÄŽŽs"];
301 button2Label = [NSString stringWithCString : "ŽćÁ"];
302 button3Label = NULL;
303 retvalue[0] = MBR_RETRY;
304 retvalue[1] = MBR_CANCEL;
305 retvalue[2] = 0;
306 break;
307 case MBF_TYPEYESNO:
308 button1Label = [NSString stringWithCString : "‚Í‚˘"];
309 button2Label = [NSString stringWithCString : "‚˘‚˘‚Ś"];
310 button3Label = NULL;
311 retvalue[0] = MBR_YES;
312 retvalue[1] = MBR_NO;
313 retvalue[2] = 0;
314 break;
315 case MBF_TYPEYESNOCANCEL:
316 button1Label = [NSString stringWithCString : "‚Í‚˘"];
317 button2Label = [NSString stringWithCString : "‚˘‚˘‚Ś"];
318 button3Label = [NSString stringWithCString : "ŽćÁ"];
319 retvalue[0] = MBR_YES;
320 retvalue[1] = MBR_NO;
321 retvalue[2] = MBR_CANCEL;
322 break;
323 case MBF_TYPEOK:
324 button1Label = [NSString stringWithCString : "—š‰đ"];
325 button2Label = NULL;
326 button3Label = NULL;
327 retvalue[0] = MBR_OK;
328 retvalue[1] = 0;
329 retvalue[2] = 0;
330 break;
331 default:
332 return MBR_CANCEL;
333 }
334
335 switch(flags & MBF_ICONMASK){
336 case MBF_ICONEXCLAMATION:
337 alertStyle = NSWarningAlertStyle;
338 break;
339 case MBF_ICONQUESTION:
340 alertStyle = NSInformationalAlertStyle;
341 break;
342 case MBF_ICONSTOP:
343 alertStyle = NSCriticalAlertStyle;
344 break;
345 default:
346 alertStyle = NSInformationalAlertStyle;
347 }
348
349 /* localize */
350 if(button1Label!=NULL){
351 button1Label = [[NSBundle mainBundle]
352 localizedStringForKey : button1Label
353 value : nil
354 table : nil];
355 }
356 if(button2Label!=NULL){
357 button2Label = [[NSBundle mainBundle]
358 localizedStringForKey : button2Label
359 value : nil
360 table : nil];
361 }
362 if(button3Label!=NULL){
363 button3Label = [[NSBundle mainBundle]
364 localizedStringForKey : button3Label
365 value : nil
366 table : nil];
367 }
368 message = [[NSBundle mainBundle]
369 localizedStringForKey : message
370 value : nil
371 table : nil];
372 title = [[NSBundle mainBundle]
373 localizedStringForKey : title
374 value : nil
375 table : nil];
376
377 /* create alert panel */
378 alert = [[NSAlert alloc] init];
379 if(button1Label!=NULL)
380 [alert addButtonWithTitle : button1Label];
381 if(button2Label!=NULL)
382 [alert addButtonWithTitle : button2Label];
383 if(button3Label!=NULL)
384 [alert addButtonWithTitle : button3Label];
385 [alert setMessageText : message];
386 [alert setInformativeText : title];
387 [alert setAlertStyle : alertStyle];
388
389 switch([alert runModal]){
390 case NSAlertFirstButtonReturn:
391 retcode = retvalue[0];
392 break;
393 case NSAlertSecondButtonReturn:
394 retcode = retvalue[1];
395 break;
396 case NSAlertThirdButtonReturn:
397 retcode = retvalue[2];
398 break;
399 default:
400 retcode = MBR_CANCEL;
401 }
402 [alert release];
403 return retcode;
404 }
405
406 /*
407 * delegate
408 */
409 - (void) applicationDidFinishLaunching: (NSNotification *)aNotification
410 {
411 [self startUp];
412 }
413
414 - (void) applicationWillTerminate: (NSNotification *)aNotification
415 {
416 if(g_Readers!=NULL){
417 free(g_Readers);
418 g_Readers = NULL;
419 }
420 if(g_Writers!=NULL){
421 free(g_Writers);
422 g_Writers = NULL;
423 }
424 }
425
426 - (void)windowWillClose:(NSNotification *)aNotification
427 {
428 [NSApp terminate: self];
429 }
430
431 @end

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26