aboutsummaryrefslogtreecommitdiffstats
path: root/q3radiant/MainFrm.h
blob: 35e46a81c9247f0da2cf09ccc26873b08b8870de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
/*
===========================================================================
Copyright (C) 1999-2005 Id Software, Inc.

This file is part of Quake III Arena source code.

Quake III Arena source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.

Quake III Arena source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Foobar; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===========================================================================
*/
// MainFrm.h : interface of the CMainFrame class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAINFRM_H__330BBF0A_731C_11D1_B539_00AA00A410FC__INCLUDED_)
#define AFX_MAINFRM_H__330BBF0A_731C_11D1_B539_00AA00A410FC__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "LstToolBar.h"
#include "XYWnd.h"
#include "TexWnd.h"
#include "ZWnd.h"
#include "CamWnd.h"
#include "RADEditWnd.h"
#include "TextureBar.h"
#include "PlugInManager.h"
#include "PlugIn.h"
#include "groupdlg.h"


const int RAD_SHIFT =   0x01;
const int RAD_ALT =     0x02;
const int RAD_CONTROL = 0x04;
const int RAD_PRESS   = 0x08;

struct SCommandInfo
{
  char* m_strCommand;
  unsigned int   m_nKey;
  unsigned int   m_nModifiers;
  unsigned int m_nCommand;
};

struct SKeyInfo
{
  char* m_strName;
  unsigned int m_nVKKey;
};




class CMainFrame : public CFrameWnd
{
	DECLARE_DYNAMIC(CMainFrame)
public:
	CMainFrame();
  void HandleKey(UINT nChar, UINT nRepCnt, UINT nFlags, bool bDown = true) 
  {
    if (bDown)
      OnKeyDown(nChar, nRepCnt, nFlags);
    else
      OnKeyUp(nChar, nRepCnt, nFlags);
  };

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMainFrame)
	public:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
	virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
	//}}AFX_VIRTUAL

// Implementation
public:
  void UpdatePatchToolbarButtons();
  void NudgeSelection(int nDirection, int nAmount);
	void UpdateTextureBar();
  void SetButtonMenuStates();
	void SetTexValStatus();
	void SetGridStatus();
	void RoutineProcessing();
	CXYWnd* ActiveXY();
	void UpdateWindows(int nBits);
	void SetStatusText(int nPane, const char* pText);
	void UpdateStatusText();
	void SetWindowStyle(int nStyle);
	virtual ~CMainFrame();
  CXYWnd* GetXYWnd() {return m_pXYWnd;};
  CXYWnd* GetXZWnd() {return m_pXZWnd;};
  CXYWnd* GetYZWnd() {return m_pYZWnd;};
  CCamWnd* GetCamera() {return m_pCamWnd;};
  CTexWnd* GetTexWnd() {return m_pTexWnd;};
  void SetActiveXY(CXYWnd* p) 
  {
    if (m_pActiveXY)
      m_pActiveXY->SetActive(false);

    m_pActiveXY = p;

    if (m_pActiveXY)
      m_pActiveXY->SetActive(true);

  };
  int CurrentStyle() { return m_nCurrentStyle; };
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:  // control bar embedded members
	CStatusBar  m_wndStatusBar;
	CLstToolBar m_wndToolBar;
	CLstToolBar m_wndScaleBar;
	CDialogBar m_wndHelpBar;
	CTextureBar m_wndTextureBar;
  CSplitterWnd m_wndSplit;
  CSplitterWnd m_wndSplit2;
  CSplitterWnd m_wndSplit3;
  CXYWnd* m_pXYWnd;
  CXYWnd* m_pYZWnd;
  CXYWnd* m_pXZWnd;
  CCamWnd* m_pCamWnd;
  CTexWnd* m_pTexWnd;
  CZWnd* m_pZWnd;
  CRADEditWnd* m_pEditWnd;
  int m_nCurrentStyle;
  CString m_strStatus[15];
  CXYWnd* m_pActiveXY;
  bool m_bCamPreview;
  CPlugInManager m_PlugInMgr;
  int m_nNextPlugInID;

// Generated message map functions
protected:
	bool m_bDoLoop;
	bool m_bSplittersOK;
	void CreateQEChildren();
  	void LoadCommandMap();
	void ShowMenuItemKeyBindings(CMenu *pMenu);
  	void SetEntityCheck();
	afx_msg LRESULT OnBSPStatus(UINT wParam, long lParam);
	afx_msg LRESULT OnBSPDone(UINT wParam, long lParam);
public:
	void Nudge(int nDim, float fNudge);

  	CPlugInManager &GetPlugInMgr() {return m_PlugInMgr;};
  	void AddPlugInMenuItem(CPlugIn* pPlugIn);
	void CleanPlugInMenu();

  // these are public so i can easily reflect messages
  // from child windows..
	//{{AFX_MSG(CMainFrame)
	afx_msg void OnParentNotify(UINT message, LPARAM lParam);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnDestroy();
	afx_msg void OnClose();
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void ToggleCamera();
	afx_msg void OnFileClose();
	afx_msg void OnFileExit();
	afx_msg void OnFileLoadproject();
	afx_msg void OnFileNew();
	afx_msg void OnFileOpen();
	afx_msg void OnFilePointfile();
	afx_msg void OnFilePrint();
	afx_msg void OnFilePrintPreview();
	afx_msg void OnFileSave();
	afx_msg void OnFileSaveas();
	afx_msg void OnView100();
	afx_msg void OnViewCenter();
	afx_msg void OnViewConsole();
	afx_msg void OnViewDownfloor();
	afx_msg void OnViewEntity();
	afx_msg void OnViewFront();
	afx_msg void OnViewShowblocks();
	afx_msg void OnViewShowclip();
	afx_msg void OnViewShowcoordinates();
	afx_msg void OnViewShowdetail();
	afx_msg void OnViewShowent();
	afx_msg void OnViewShowlights();
	afx_msg void OnViewShownames();
	afx_msg void OnViewShowpath();
	afx_msg void OnViewShowwater();
	afx_msg void OnViewShowworld();
	afx_msg void OnViewTexture();
	afx_msg void OnViewUpfloor();
	afx_msg void OnViewXy();
	afx_msg void OnViewZ100();
	afx_msg void OnViewZoomin();
	afx_msg void OnViewZoomout();
	afx_msg void OnViewZzoomin();
	afx_msg void OnViewZzoomout();
	afx_msg void OnViewSide();
	afx_msg void OnTexturesShowinuse();
	afx_msg void OnTexturesInspector();
	afx_msg void OnMiscBenchmark();
	afx_msg void OnMiscFindbrush();
	afx_msg void OnMiscGamma();
	afx_msg void OnMiscNextleakspot();
	afx_msg void OnMiscPreviousleakspot();
	afx_msg void OnMiscPrintxy();
	afx_msg void OnMiscSelectentitycolor();
	afx_msg void OnTexturebk();
	afx_msg void OnColorsMajor();
	afx_msg void OnColorsMinor();
	afx_msg void OnColorsXybk();
	afx_msg void OnBrush3sided();
	afx_msg void OnBrush4sided();
	afx_msg void OnBrush5sided();
	afx_msg void OnBrush6sided();
	afx_msg void OnBrush7sided();
	afx_msg void OnBrush8sided();
	afx_msg void OnBrush9sided();
	afx_msg void OnBrushArbitrarysided();
	afx_msg void OnBrushFlipx();
	afx_msg void OnBrushFlipy();
	afx_msg void OnBrushFlipz();
	afx_msg void OnBrushRotatex();
	afx_msg void OnBrushRotatey();
	afx_msg void OnBrushRotatez();
	afx_msg void OnRegionOff();
	afx_msg void OnRegionSetbrush();
	afx_msg void OnRegionSetselection();
	afx_msg void OnRegionSettallbrush();
	afx_msg void OnRegionSetxy();
	afx_msg void OnSelectionArbitraryrotation();
	afx_msg void OnSelectionClone();
	afx_msg void OnSelectionConnect();
	afx_msg void OnSelectionCsgsubtract();
	afx_msg void OnSelectionCsgmerge();
	afx_msg void OnSelectionNoOutline();
	afx_msg void OnSelectionDelete();
	afx_msg void OnSelectionDeselect();
	afx_msg void OnSelectionDragedges();
	afx_msg void OnSelectionDragvertecies();
	afx_msg void OnRaiseLowerTerrain();
	afx_msg void OnSelectionMakeDetail();
	afx_msg void OnSelectionMakeStructural();
	afx_msg void OnSelectionMakehollow();
	afx_msg void OnSelectionSelectcompletetall();
	afx_msg void OnSelectionSelectinside();
	afx_msg void OnSelectionSelectpartialtall();
	afx_msg void OnSelectionSelecttouching();
	afx_msg void OnSelectionUngroupentity();
	afx_msg void OnTexturesPopup();
	afx_msg void OnSplinesPopup();
	afx_msg void OnPopupSelection();
	afx_msg void OnViewChange();
	afx_msg void OnViewCameraupdate();
	afx_msg void OnUpdateViewCameraupdate(CCmdUI* pCmdUI);
	afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
	afx_msg void OnHelpAbout();
	afx_msg void OnViewClipper();
	afx_msg void OnCameraAngledown();
	afx_msg void OnCameraAngleup();
	afx_msg void OnCameraBack();
	afx_msg void OnCameraDown();
	afx_msg void OnCameraForward();
	afx_msg void OnCameraLeft();
	afx_msg void OnCameraRight();
	afx_msg void OnCameraStrafeleft();
	afx_msg void OnCameraStraferight();
	afx_msg void OnCameraUp();
	afx_msg void OnGridToggle();
	afx_msg void OnPrefs();
	afx_msg void OnTogglecamera();
	afx_msg void OnToggleconsole();
	afx_msg void OnToggleview();
	afx_msg void OnTogglez();
	afx_msg void OnToggleLock();
	afx_msg void OnEditMapinfo();
	afx_msg void OnEditEntityinfo();
	afx_msg void OnBrushScripts();
	afx_msg void OnViewNextview();
	afx_msg void OnHelpCommandlist();
	afx_msg void OnFileNewproject();
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnFlipClip();
	afx_msg void OnClipSelected();
	afx_msg void OnSplitSelected();
	afx_msg void OnToggleviewXz();
	afx_msg void OnToggleviewYz();
	afx_msg void OnColorsBrush();
	afx_msg void OnColorsClipper();
	afx_msg void OnColorsGridtext();
	afx_msg void OnColorsSelectedbrush();
	afx_msg void OnColorsGridblock();
	afx_msg void OnColorsViewname();
	afx_msg void OnColorSetoriginal();
	afx_msg void OnColorSetqer();
	afx_msg void OnColorSetblack();
	afx_msg void OnSnaptogrid();
	afx_msg void OnSelectScale();
	afx_msg void OnSelectMouserotate();
	afx_msg void OnEditCopybrush();
	afx_msg void OnEditPastebrush();
	afx_msg void OnEditUndo();
	afx_msg void OnEditRedo();
	afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);
	afx_msg void OnSelectionInvert();
	afx_msg void OnSelectionTextureDec();
	afx_msg void OnSelectionTextureFit();
	afx_msg void OnSelectionTextureInc();
	afx_msg void OnSelectionTextureRotateclock();
	afx_msg void OnSelectionTextureRotatecounter();
	afx_msg void OnSelectionTextureScaledown();
	afx_msg void OnSelectionTextureScaleup();
	afx_msg void OnSelectionTextureShiftdown();
	afx_msg void OnSelectionTextureShiftleft();
	afx_msg void OnSelectionTextureShiftright();
	afx_msg void OnSelectionTextureShiftup();
	afx_msg void OnGridNext();
	afx_msg void OnGridPrev();
	afx_msg void OnSelectionTextureScaleLeft();
	afx_msg void OnSelectionTextureScaleRight();
	afx_msg void OnTextureReplaceall();
	afx_msg void OnScalelockx();
	afx_msg void OnScalelocky();
	afx_msg void OnScalelockz();
	afx_msg void OnSelectMousescale();
	afx_msg void OnViewCubicclipping();
	afx_msg void OnFileImport();
	afx_msg void OnFileProjectsettings();
	afx_msg void OnUpdateFileImport(CCmdUI* pCmdUI);
	afx_msg void OnViewCubein();
	afx_msg void OnViewCubeout();
	afx_msg void OnFileSaveregion();
	afx_msg void OnUpdateFileSaveregion(CCmdUI* pCmdUI);
	afx_msg void OnSelectionMovedown();
	afx_msg void OnSelectionMoveup();
	afx_msg void OnToolbarMain();
	afx_msg void OnToolbarTexture();
	afx_msg void OnSelectionPrint();
	afx_msg void OnSelectionTogglesizepaint();
	afx_msg void OnBrushMakecone();
	afx_msg void OnTexturesLoad();
	afx_msg void OnToggleRotatelock();
	afx_msg void OnCurveBevel();
	afx_msg void OnCurveCylinder();
	afx_msg void OnCurveEighthsphere();
	afx_msg void OnCurveEndcap();
	afx_msg void OnCurveHemisphere();
	afx_msg void OnCurveInvertcurve();
	afx_msg void OnCurveQuarter();
	afx_msg void OnCurveSphere();
	afx_msg void OnFileImportmap();
	afx_msg void OnFileExportmap();
	afx_msg void OnEditLoadprefab();
	afx_msg void OnViewShowcurves();
	afx_msg void OnSelectionSelectNudgedown();
	afx_msg void OnSelectionSelectNudgeleft();
	afx_msg void OnSelectionSelectNudgeright();
	afx_msg void OnSelectionSelectNudgeup();
	afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnTexturesLoadlist();
	afx_msg void OnDontselectcurve();
	afx_msg void OnConvertcurves();
	afx_msg void OnDynamicLighting();
	afx_msg void OnCurveSimplepatchmesh();
	afx_msg void OnPatchToggleBox();
	afx_msg void OnPatchWireframe();
	afx_msg void OnCurvePatchcone();
	afx_msg void OnCurvePatchtube();
	afx_msg void OnPatchWeld();
	afx_msg void OnCurvePatchbevel();
	afx_msg void OnCurvePatchendcap();
	afx_msg void OnCurvePatchinvertedbevel();
	afx_msg void OnCurvePatchinvertedendcap();
	afx_msg void OnPatchDrilldown();
	afx_msg void OnCurveInsertcolumn();
	afx_msg void OnCurveInsertrow();
	afx_msg void OnCurveDeletecolumn();
	afx_msg void OnCurveDeleterow();
	afx_msg void OnCurveInsertAddcolumn();
	afx_msg void OnCurveInsertAddrow();
	afx_msg void OnCurveInsertInsertcolumn();
	afx_msg void OnCurveInsertInsertrow();
	afx_msg void OnCurveNegative();
	afx_msg void OnCurveNegativeTextureX();
	afx_msg void OnCurveNegativeTextureY();
	afx_msg void OnCurveDeleteFirstcolumn();
	afx_msg void OnCurveDeleteFirstrow();
	afx_msg void OnCurveDeleteLastcolumn();
	afx_msg void OnCurveDeleteLastrow();
	afx_msg void OnPatchBend();
	afx_msg void OnPatchInsdel();
	afx_msg void OnPatchEnter();
	afx_msg void OnPatchTab();
	afx_msg void OnCurvePatchdensetube();
	afx_msg void OnCurvePatchverydensetube();
	afx_msg void OnCurveCap();
	afx_msg void OnCurveCapInvertedbevel();
	afx_msg void OnCurveCapInvertedendcap();
	afx_msg void OnCurveRedisperseCols();
	afx_msg void OnCurveRedisperseRows();
	afx_msg void OnPatchNaturalize();
	afx_msg void OnSnapToGrid();
	afx_msg void OnCurvePatchsquare();
	afx_msg void OnTerrainCreateFromBrush();
	afx_msg void OnTexturesTexturewindowscale10();
	afx_msg void OnTexturesTexturewindowscale100();
	afx_msg void OnTexturesTexturewindowscale200();
	afx_msg void OnTexturesTexturewindowscale25();
	afx_msg void OnTexturesTexturewindowscale50();
	afx_msg void OnTexturesFlush();
	afx_msg void OnCurveOverlayClear();
	afx_msg void OnCurveOverlaySet();
	afx_msg void OnCurveThicken();
	afx_msg void OnCurveCyclecap();
	afx_msg void OnCurveMatrixTranspose();
	afx_msg void OnTexturesReloadshaders();
	afx_msg void OnShowEntities();
	afx_msg void OnViewEntitiesasBoundingbox();
	afx_msg void OnViewEntitiesasSelectedskinned();
	afx_msg void OnViewEntitiesasSelectedwireframe();
	afx_msg void OnViewEntitiesasSkinned();
	afx_msg void OnViewEntitiesasSkinnedandboxed();
	afx_msg void OnViewEntitiesasWireframe();
	afx_msg void OnPluginsRefresh();
	afx_msg void OnViewShowhint();
	afx_msg void OnUpdateTexturesShowinuse(CCmdUI* pCmdUI);
	afx_msg void OnTexturesShowall();
	afx_msg void OnPatchInspector();
	afx_msg void OnViewOpengllighting();
	afx_msg void OnSelectAll();
	afx_msg void OnViewShowcaulk();
  afx_msg void OnCurveFreeze();
  afx_msg void OnCurveUnFreeze();
  afx_msg void OnCurveUnFreezeAll();
  afx_msg void OnSelectReselect();
	afx_msg void OnViewShowangles();
	afx_msg void OnEditSaveprefab();
	afx_msg void OnCurveMoreendcapsbevelsSquarebevel();
	afx_msg void OnCurveMoreendcapsbevelsSquareendcap();
	afx_msg void OnBrushPrimitivesSphere();
	afx_msg void OnViewCrosshair();
	afx_msg void OnViewHideshowHideselected();
	afx_msg void OnViewHideshowShowhidden();
	afx_msg void OnTexturesShadersShow();
	afx_msg void OnTexturesFlushUnused();
	afx_msg void OnViewGroups();
	afx_msg void OnDropGroupAddtoWorld();
	afx_msg void OnDropGroupName();
	afx_msg void OnDropGroupNewgroup();
	afx_msg void OnDropGroupRemove();
	afx_msg void OnSplinesMode();
	afx_msg void OnSplinesLoad();
	afx_msg void OnSplinesSave();
	afx_msg void OnSplinesEdit();
	afx_msg void OnSplineTest();
	afx_msg void OnSplinesTarget();
	afx_msg void OnSplinesTargetPoints();
	afx_msg void OnSplinesCameraPoints();
	afx_msg void OnPopupNewcameraInterpolated();
	afx_msg void OnPopupNewcameraSpline();
	afx_msg void OnPopupNewcameraFixed();
	//}}AFX_MSG
  afx_msg void OnMru(unsigned int nID);
  afx_msg void OnViewNearest(unsigned int nID);
  afx_msg void OnTextureWad(unsigned int nID);
  afx_msg void OnBspCommand(unsigned int nID);
  afx_msg void OnGrid1(unsigned int nID);
  afx_msg LRESULT OnDisplayChange(WPARAM wp, LPARAM lp);
  void CheckTextureScale(int id);
  afx_msg void OnPlugIn(unsigned int nID);

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAINFRM_H__330BBF0A_731C_11D1_B539_00AA00A410FC__INCLUDED_)