]> icculus.org git repositories - taylor/freespace2.git/blob - src/fred2/adjustgriddlg.cpp
Initial revision
[taylor/freespace2.git] / src / fred2 / adjustgriddlg.cpp
1 /*
2  * $Logfile: /Freespace2/code/FRED2/AdjustGridDlg.cpp $
3  * $Revision$
4  * $Date$
5  * $Author$
6  *
7  * Editor to allow one to change Fred's grid orientation and position.
8  *
9  * $Log$
10  * Revision 1.1  2002/05/03 03:28:08  root
11  * Initial revision
12  *
13  * 
14  * 2     10/07/98 6:28p Dave
15  * Initial checkin. Renamed all relevant stuff to be Fred2 instead of
16  * Fred. Globalized mission and campaign file extensions. Removed Silent
17  * Threat specific code.
18  * 
19  * 1     10/07/98 3:01p Dave
20  * 
21  * 1     10/07/98 2:59p Dave
22  * 
23  * 3     8/18/97 10:01p Hoffoss
24  * Improved dialog by graying out fields that don't have any effect on
25  * current plane setting.
26  * 
27  * 2     8/18/97 9:31p Hoffoss
28  * Added grid adjustment dialog and shield system editor dialog.
29  *
30  * $NoKeywords: $
31  */
32
33 #include "stdafx.h"
34 #include "fred.h"
35 #include "adjustgriddlg.h"
36 #include "missiongrid.h"
37
38 #ifdef _DEBUG
39 #define new DEBUG_NEW
40 #undef THIS_FILE
41 static char THIS_FILE[] = __FILE__;
42 #endif
43
44 /////////////////////////////////////////////////////////////////////////////
45 // adjust_grid_dlg dialog
46
47 adjust_grid_dlg::adjust_grid_dlg(CWnd* pParent /*=NULL*/)
48         : CDialog(adjust_grid_dlg::IDD, pParent)
49 {
50         //{{AFX_DATA_INIT(adjust_grid_dlg)
51         m_x = 0;
52         m_y = 0;
53         m_z = 0;
54         //}}AFX_DATA_INIT
55 }
56
57 void adjust_grid_dlg::DoDataExchange(CDataExchange* pDX)
58 {
59         CDialog::DoDataExchange(pDX);
60         //{{AFX_DATA_MAP(adjust_grid_dlg)
61         DDX_Control(pDX, IDC_SPIN_Z, m_spinz);
62         DDX_Control(pDX, IDC_SPIN_Y, m_spiny);
63         DDX_Control(pDX, IDC_SPIN_X, m_spinx);
64         DDX_Text(pDX, IDC_EDIT_X, m_x);
65         DDX_Text(pDX, IDC_EDIT_Y, m_y);
66         DDX_Text(pDX, IDC_EDIT_Z, m_z);
67         //}}AFX_DATA_MAP
68 }
69
70 BEGIN_MESSAGE_MAP(adjust_grid_dlg, CDialog)
71         //{{AFX_MSG_MAP(adjust_grid_dlg)
72         ON_BN_CLICKED(IDC_XY_PLANE, OnXyPlane)
73         ON_BN_CLICKED(IDC_XZ_PLANE, OnXzPlane)
74         ON_BN_CLICKED(IDC_YZ_PLANE, OnYzPlane)
75         //}}AFX_MSG_MAP
76 END_MESSAGE_MAP()
77
78 /////////////////////////////////////////////////////////////////////////////
79 // adjust_grid_dlg message handlers
80
81 BOOL adjust_grid_dlg::OnInitDialog() 
82 {
83         m_x = (int) The_grid->center.x;
84         m_y = (int) The_grid->center.y;
85         m_z = (int) The_grid->center.z;
86         CDialog::OnInitDialog();
87         if (The_grid->gmatrix.uvec.y) {
88                 ((CButton *) GetDlgItem(IDC_XZ_PLANE))->SetCheck(TRUE);
89                 GetDlgItem(IDC_EDIT_X)->EnableWindow(FALSE);
90                 GetDlgItem(IDC_EDIT_Z)->EnableWindow(FALSE);
91
92         } else if (The_grid->gmatrix.uvec.z) {
93                 ((CButton *) GetDlgItem(IDC_XY_PLANE))->SetCheck(TRUE);
94                 GetDlgItem(IDC_EDIT_X)->EnableWindow(FALSE);
95                 GetDlgItem(IDC_EDIT_Y)->EnableWindow(FALSE);
96
97         } else {
98                 ((CButton *) GetDlgItem(IDC_YZ_PLANE))->SetCheck(TRUE);
99                 GetDlgItem(IDC_EDIT_Y)->EnableWindow(FALSE);
100                 GetDlgItem(IDC_EDIT_Z)->EnableWindow(FALSE);
101         }
102
103         m_spinx.SetRange(99999, -99999);
104         m_spiny.SetRange(99999, -99999);
105         m_spinz.SetRange(99999, -99999);
106         return TRUE;
107 }
108
109 void adjust_grid_dlg::OnOK()
110 {
111         UpdateData(TRUE);
112         The_grid->center.x = (float) m_x;
113         The_grid->center.y = (float) m_y;
114         The_grid->center.z = (float) m_z;
115
116         if (((CButton *) GetDlgItem(IDC_XY_PLANE)) -> GetCheck()) {
117                 The_grid->gmatrix.fvec = vmd_x_vector;
118                 The_grid->gmatrix.rvec = vmd_y_vector;
119
120         } else if (((CButton *) GetDlgItem(IDC_YZ_PLANE)) -> GetCheck()) {
121                 The_grid->gmatrix.fvec = vmd_y_vector;
122                 The_grid->gmatrix.rvec = vmd_z_vector;
123
124         } else {  // XZ plane
125                 The_grid->gmatrix.fvec = vmd_x_vector;
126                 The_grid->gmatrix.rvec = vmd_z_vector;
127         }
128
129         modify_grid(The_grid);
130         CDialog::OnOK();
131 }
132
133 void adjust_grid_dlg::OnXyPlane() 
134 {
135         GetDlgItem(IDC_EDIT_X)->EnableWindow(FALSE);
136         GetDlgItem(IDC_SPIN_X)->EnableWindow(FALSE);
137         GetDlgItem(IDC_EDIT_Y)->EnableWindow(FALSE);
138         GetDlgItem(IDC_SPIN_Y)->EnableWindow(FALSE);
139         GetDlgItem(IDC_EDIT_Z)->EnableWindow(TRUE);
140         GetDlgItem(IDC_SPIN_Z)->EnableWindow(TRUE);
141 }
142
143 void adjust_grid_dlg::OnXzPlane() 
144 {
145         GetDlgItem(IDC_EDIT_X)->EnableWindow(FALSE);
146         GetDlgItem(IDC_SPIN_X)->EnableWindow(FALSE);
147         GetDlgItem(IDC_EDIT_Y)->EnableWindow(TRUE);
148         GetDlgItem(IDC_SPIN_Y)->EnableWindow(TRUE);
149         GetDlgItem(IDC_EDIT_Z)->EnableWindow(FALSE);
150         GetDlgItem(IDC_SPIN_Z)->EnableWindow(FALSE);
151 }
152
153 void adjust_grid_dlg::OnYzPlane() 
154 {
155         GetDlgItem(IDC_EDIT_X)->EnableWindow(TRUE);
156         GetDlgItem(IDC_SPIN_X)->EnableWindow(TRUE);
157         GetDlgItem(IDC_EDIT_Y)->EnableWindow(FALSE);
158         GetDlgItem(IDC_SPIN_Y)->EnableWindow(FALSE);
159         GetDlgItem(IDC_EDIT_Z)->EnableWindow(FALSE);
160         GetDlgItem(IDC_SPIN_Z)->EnableWindow(FALSE);
161 }