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