448
+ − 1 /*
+ − 2 * Copyright (c) 2000, Red Hat, Inc.
+ − 3 *
+ − 4 * This program is free software; you can redistribute it and/or modify
+ − 5 * it under the terms of the GNU General Public License as published by
+ − 6 * the Free Software Foundation; either version 2 of the License, or
+ − 7 * (at your option) any later version.
+ − 8 *
+ − 9 * A copy of the GNU General Public License can be found at
+ − 10 * http://www.gnu.org/
+ − 11 *
+ − 12 * Written by DJ Delorie <dj@cygnus.com>
+ − 13 *
+ − 14 */
+ − 15
+ − 16 /* The purpose of this file is to provide common functionality for
+ − 17 all the dialogs in the program. */
+ − 18
+ − 19 #include "win32.h"
+ − 20 #include <stdio.h>
+ − 21 #include <stdlib.h>
+ − 22 #include "dialog.h"
+ − 23 #include "msg.h"
+ − 24 #include "log.h"
+ − 25
+ − 26 char *
+ − 27 eget (HWND h, int id, char *var)
+ − 28 {
+ − 29 char tmp[4000];
+ − 30 if (var)
+ − 31 {
+ − 32 free (var);
+ − 33 var = 0;
+ − 34 }
+ − 35 if (GetDlgItemText (h, id, tmp, sizeof (tmp)) > 0)
+ − 36 {
+ − 37 var = (char *) malloc (strlen (tmp)+1);
+ − 38 strcpy (var, tmp);
+ − 39 }
+ − 40 return var;
+ − 41 }
+ − 42
+ − 43 int
+ − 44 eget (HWND h, int id)
+ − 45 {
+ − 46 BOOL s;
+ − 47 int r = GetDlgItemInt (h, id, &s, TRUE);
+ − 48 return r;
+ − 49 }
+ − 50
+ − 51 void
+ − 52 eset (HWND h, int id, char *val)
+ − 53 {
+ − 54 SetDlgItemText (h, id, val);
+ − 55 }
+ − 56
+ − 57 void
+ − 58 eset (HWND h, int id, int val)
+ − 59 {
+ − 60 SetDlgItemInt (h, id, (UINT)val, TRUE);
+ − 61 }
+ − 62
+ − 63 int
+ − 64 rbget (HWND h, int *ids)
+ − 65 {
+ − 66 int i;
+ − 67 for (i=0; ids[i]; i++)
+ − 68 if (IsDlgButtonChecked (h, ids[i]) == BST_CHECKED)
+ − 69 return ids[i];
+ − 70 return 0;
+ − 71 }
+ − 72
+ − 73 void
+ − 74 rbset (HWND h, int *ids, int id)
+ − 75 {
+ − 76 int i;
+ − 77 for (i=0; ids[i]; i++)
+ − 78 CheckDlgButton (h, ids[i], id==ids[i] ? BST_CHECKED : BST_UNCHECKED);
+ − 79 }
+ − 80
+ − 81 void
+ − 82 fatal (char *m)
+ − 83 {
+ − 84 DWORD e = GetLastError ();
+ − 85 char *buf;
+ − 86 FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ − 87 0,
+ − 88 e,
+ − 89 0,
+ − 90 (CHAR *)&buf,
+ − 91 0,
+ − 92 0);
+ − 93 MessageBox (0, buf, m, 0);
+ − 94 exit_setup (1);
+ − 95 }