1764 lines
59 KiB
C++
1764 lines
59 KiB
C++
// MainFrm.cpp : implementation of the CMainFrame class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "MainFrm.h"
|
|
|
|
#include "CryEdit.h"
|
|
#include "CryEditDoc.h"
|
|
#include "TerrainDialog.h"
|
|
#include "MainTools.h"
|
|
#include "TerrainPanel.h"
|
|
#include "PanelDisplayHide.h"
|
|
#include "PanelDisplayRender.h"
|
|
#include "PanelDisplayLayer.h"
|
|
#include "Mission.h"
|
|
#include "ViewManager.h"
|
|
#include "LayoutWnd.h"
|
|
#include "ExternalTools.h"
|
|
#include "Settings.h"
|
|
|
|
#include "PropertiesPanel.h"
|
|
|
|
#include "Objects\ObjectManager.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#define IDW_VIEW_EDITMODE_BAR AFX_IDW_CONTROLBAR_FIRST+10
|
|
#define IDW_VIEW_OBJECT_BAR AFX_IDW_CONTROLBAR_FIRST+11
|
|
#define IDW_VIEW_MISSION_BAR AFX_IDW_CONTROLBAR_FIRST+12
|
|
#define IDW_VIEW_TERRAIN_BAR AFX_IDW_CONTROLBAR_FIRST+13
|
|
#define IDW_VIEW_AVI_RECORD_BAR AFX_IDW_CONTROLBAR_FIRST+14
|
|
|
|
#define IDW_VIEW_ROLLUP_BAR AFX_IDW_CONTROLBAR_FIRST+20
|
|
#define IDW_VIEW_CONSOLE_BAR AFX_IDW_CONTROLBAR_FIRST+21
|
|
#define IDW_VIEW_INFO_BAR AFX_IDW_CONTROLBAR_FIRST+22
|
|
#define IDW_VIEW_TRACKVIEW_BAR AFX_IDW_CONTROLBAR_FIRST+23
|
|
#define IDW_VIEW_DIALOGTOOL_BAR AFX_IDW_CONTROLBAR_FIRST+24
|
|
#define IDW_VIEW_DATABASE_BAR AFX_IDW_CONTROLBAR_FIRST+25
|
|
|
|
#define BAR_SECTION _T("Bars")
|
|
|
|
#define AUTOSAVE_TIMER_EVENT 200
|
|
#define AUTOREMIND_TIMER_EVENT 201
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame
|
|
|
|
IMPLEMENT_DYNCREATE(CMainFrame, CXTFrameWnd)
|
|
|
|
BEGIN_MESSAGE_MAP(CMainFrame, CXTFrameWnd)
|
|
ON_WM_CREATE()
|
|
|
|
ON_COMMAND_EX(ID_VIEW_MENUBAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_MENUBAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(ID_VIEW_STATUS_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_STATUS_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_EDITMODE_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_EDITMODE_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_OBJECT_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_OBJECT_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_MISSION_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_MISSION_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_TERRAIN_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_TERRAIN_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_AVI_RECORD_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_AVI_RECORD_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_ROLLUP_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_ROLLUP_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_CONSOLE_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_CONSOLE_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_INFO_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_INFO_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_TRACKVIEW_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_TRACKVIEW_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_DATABASE_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_DATABASE_BAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND_EX(IDW_VIEW_DIALOGTOOL_BAR, OnBarCheck )
|
|
ON_UPDATE_COMMAND_UI(IDW_VIEW_DIALOGTOOL_BAR, OnUpdateControlBarMenu)
|
|
|
|
//ON_COMMAND_EX(ID_VIEW_ROLLUPBAR, OnBarCheck )
|
|
//ON_UPDATE_COMMAND_UI(ID_VIEW_ROLLUPBAR, OnUpdateControlBarMenu)
|
|
|
|
//ON_COMMAND_EX(ID_VIEW_CONSOLEWINDOW, OnBarCheck )
|
|
//ON_UPDATE_COMMAND_UI(ID_VIEW_CONSOLEWINDOW, OnUpdateControlBarMenu)
|
|
|
|
//ON_COMMAND_EX(ID_VIEW_TOOLBAR, OnBarCheck )
|
|
//ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateControlBarMenu)
|
|
|
|
ON_COMMAND(ID_SOUND_PRESETS, OnSoundPresets)
|
|
ON_COMMAND(ID_EAX_PRESETS, OnEAXPresets)
|
|
ON_COMMAND(ID_SOUND_SHOWMUSICINFO, OnMusicInfo)
|
|
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_XPLOOK, OnUpdateXPLook)
|
|
ON_COMMAND(ID_VIEW_XPLOOK, OnXPLook)
|
|
|
|
// Sent by Progress bar cancel button.
|
|
ON_COMMAND(ID_PROGRESSBAR_CANCEL, OnProgressBarCancel)
|
|
|
|
// ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateToolbar)
|
|
// ON_UPDATE_COMMAND_UI(ID_VIEW_ROLLUPBAR, OnUpdateRollUpBar)
|
|
// ON_UPDATE_COMMAND_UI(ID_VIEW_CONSOLEWINDOW, OnUpdateConsole)
|
|
// ON_UPDATE_COMMAND_UI(ID_VIEW_STATUS_BAR, OnUpdateStatusBar)
|
|
// ON_UPDATE_COMMAND_UI(ID_VIEW_TRACKVIEW, OnUpdateTrackView)
|
|
|
|
//ON_COMMAND(ID_VIEW_ROLLUPBAR, OnRollUpBar)
|
|
//ON_COMMAND(ID_VIEW_CONSOLEWINDOW, OnConsoleWindow)
|
|
//ON_COMMAND(ID_VIEW_TOOLBAR, OnToolbar)
|
|
//ON_COMMAND(ID_VIEW_STATUS_BAR, OnStatusBar)
|
|
//ON_COMMAND(ID_VIEW_TRACKVIEW, OnTrackView)
|
|
|
|
ON_CBN_SELENDOK( IDC_MISSION,OnMissionChanged )
|
|
ON_CBN_SELENDCANCEL( IDC_MISSION,OnMissionCancelChanged )
|
|
ON_CBN_DROPDOWN( IDC_MISSION,OnMissionDropDown )
|
|
ON_WM_SIZE()
|
|
ON_WM_COPYDATA()
|
|
ON_WM_CLOSE()
|
|
ON_WM_TIMER()
|
|
ON_COMMAND(ID_EDIT_NEXTSELECTIONMASK, OnEditNextSelectionMask)
|
|
END_MESSAGE_MAP()
|
|
|
|
static UINT indicators[] =
|
|
{
|
|
ID_SEPARATOR, // status line indicator
|
|
ID_INDICATOR_CAPS,
|
|
ID_INDICATOR_NUM,
|
|
ID_INDICATOR_SCRL,
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame construction/destruction
|
|
|
|
CMainFrame::CMainFrame()
|
|
{
|
|
m_bXPLook = true;
|
|
|
|
m_autoSaveTimer = 0;
|
|
m_autoRemindTimer = 0;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
m_currentMission = 0;
|
|
m_currentLayer = 0;
|
|
|
|
m_terrainPanel = 0;
|
|
m_mainTools = 0;
|
|
m_consoleVisible = false;
|
|
m_gridSize = -1;
|
|
|
|
m_layoutWnd = 0;
|
|
|
|
// Enable/Disable XP GUI Mode
|
|
CXTRegistryManager regMgr;
|
|
xtAfxData.bXPMode = regMgr.GetProfileInt(_T("Settings"), _T("bXPMode"), TRUE);
|
|
|
|
// Enable/Disable Menu Shadows
|
|
xtAfxData.bMenuShadows = TRUE;
|
|
}
|
|
|
|
CMainFrame::~CMainFrame()
|
|
{
|
|
if (m_layoutWnd)
|
|
delete m_layoutWnd;
|
|
m_layoutWnd = 0;
|
|
CLogFile::WriteLine("Main frame destroied");
|
|
}
|
|
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CXTFrameWnd::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Start autosave timer.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
if (gSettings.autoBackupTime > 0 && gSettings.autoBackupEnabled)
|
|
m_autoSaveTimer = SetTimer( AUTOSAVE_TIMER_EVENT,gSettings.autoBackupTime*1000*60,0 );
|
|
if (gSettings.autoRemindTime > 0)
|
|
m_autoRemindTimer = SetTimer( AUTOREMIND_TIMER_EVENT,gSettings.autoRemindTime*1000*60,0 );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Load state.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create Menu.
|
|
VERIFY(m_wndMenuBar.CreateEx(this, TBSTYLE_TRANSPARENT| TBSTYLE_FLAT) );
|
|
VERIFY(m_wndMenuBar.LoadMenuBar(IDR_MAINFRAME) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create ReBar.
|
|
m_wndReBar.Create(this,RBS_BANDBORDERS|RBS_VARHEIGHT|RBS_DBLCLKTOGGLE);
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create the status bar
|
|
VERIFY(m_wndStatusBar.Create(this) );
|
|
VERIFY(m_wndStatusBar.SetIndicators( indicators,sizeof(indicators)/sizeof(UINT) ) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
DWORD dwToolBarFlags = WS_CHILD|WS_VISIBLE|CBRS_ALIGN_ANY|CBRS_TOOLTIPS|CBRS_FLYBY;
|
|
CRect nullRc(0,0,0,0);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create standart toolbar.
|
|
VERIFY(m_wndToolBar.CreateEx(this, TBSTYLE_TRANSPARENT|TBSTYLE_FLAT,dwToolBarFlags ));
|
|
LoadTrueColorToolbar(m_wndToolBar,IDR_MAINFRAME);
|
|
m_wndToolBar.SetWindowText( _T("Standart ToolBar") );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
VERIFY(m_wndTerrainToolBar.CreateEx(this, TBSTYLE_TRANSPARENT|TBSTYLE_FLAT|TBSTYLE_LIST,dwToolBarFlags,nullRc,IDW_VIEW_TERRAIN_BAR ) );
|
|
LoadTrueColorToolbar(m_wndTerrainToolBar,IDR_TERRAIN_BAR);
|
|
m_wndTerrainToolBar.SetButtonText( m_wndTerrainToolBar.CommandToIndex(ID_TERRAIN),_T("Terrain") );
|
|
m_wndTerrainToolBar.SetButtonText( m_wndTerrainToolBar.CommandToIndex(ID_GENERATORS_TEXTURE),_T("Texture") );
|
|
m_wndTerrainToolBar.SetButtonText( m_wndTerrainToolBar.CommandToIndex(ID_GENERATORS_LIGHTING),_T("Lighting") );
|
|
m_wndTerrainToolBar.SetWindowText( _T("Terrain ToolBar") );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
VERIFY(m_wndAvoToolBar.CreateEx(this, TBSTYLE_TRANSPARENT|TBSTYLE_FLAT|TBSTYLE_LIST,dwToolBarFlags,nullRc,IDW_VIEW_AVI_RECORD_BAR ) );
|
|
LoadTrueColorToolbar(m_wndAvoToolBar,IDR_AVI_RECORDER_BAR);
|
|
m_wndAvoToolBar.SetWindowText( _T("AVI Recorder ToolBar") );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create EditMode Toolbar.
|
|
VERIFY(m_editModeBar.Create( this,dwToolBarFlags,IDW_VIEW_EDITMODE_BAR ));
|
|
m_editModeBar.SetWindowText( _T("EditMode ToolBar") );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Object Modify Toolbar
|
|
VERIFY(m_objectModifyBar.CreateEx( this,TBSTYLE_TRANSPARENT|TBSTYLE_FLAT,dwToolBarFlags,nullRc,IDW_VIEW_OBJECT_BAR ));
|
|
LoadTrueColorToolbar(m_objectModifyBar,IDR_OBJECT_MODIFY);
|
|
m_objectModifyBar.SetWindowText( _T("Object ToolBar") );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Initialize Mission ToolBar.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CreateMissionsBar();
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create the RollupBar.
|
|
CreateRollupBar();
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create console.
|
|
// Create the console
|
|
m_wndConsoleBar.Create( this,IDW_VIEW_CONSOLE_BAR,_T("Log"),CSize(500,70),CBRS_BOTTOM );
|
|
m_cConsole.Create( NULL,NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),&m_wndConsoleBar,m_wndConsoleBar.GetDlgCtrlID() );
|
|
m_wndConsoleBar.SetChild( &m_cConsole );
|
|
//m_wndConsoleBar.SetInitDesiredSizeHorizontal( CSize(500, 70) );
|
|
//m_wndConsoleBar.SetInitDesiredSizeFloating( CSize(300, 400) );
|
|
//m_wndConsoleBar.SetInitDesiredSizeVertical( CSize(300, 400) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create TackView.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//m_wndTrackViewBar.Create( _T("TrackView"),this,IDW_VIEW_TRACKVIEW_BAR );
|
|
m_wndTrackViewBar.Create( this,IDW_VIEW_TRACKVIEW_BAR,_T("TrackView"),CSize(500,300),CBRS_BOTTOM );
|
|
m_wndTrackView.Create( CTrackViewDialog::IDD,&m_wndTrackViewBar );
|
|
m_wndTrackViewBar.SetChild( &m_wndTrackView );
|
|
|
|
ShowControlBar(&m_wndTrackViewBar, FALSE, TRUE);
|
|
//m_wndTrackViewBar.SetInitDesiredSizeHorizontal( CSize(500,300) );
|
|
//m_wndTrackViewBar.SetInitDesiredSizeFloating( CSize(500,300) );
|
|
//m_wndTrackViewBar.SetInitDesiredSizeVertical( CSize(400,300) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create DataBase Dialog.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
m_wndDataBaseBar.Create( this,IDW_VIEW_DATABASE_BAR,_T("DataBaseView"),CSize(500,300),CBRS_BOTTOM );
|
|
//m_wndDataBase.Create( CDataBaseDialog::IDD,&m_wndDataBaseBar );
|
|
CRect rc(0,0,600,400);
|
|
m_wndDataBase.Create( CDataBaseDialog::IDD,&m_wndDataBaseBar );
|
|
//m_wndDataBase.CreateEx( 0,"Dialog",NULL,WS_POPUP|WS_VISIBLE,rc,&m_wndDataBaseBar,m_wndDataBaseBar.GetDlgCtrlID() );
|
|
m_wndDataBaseBar.SetChild( &m_wndDataBase );
|
|
|
|
|
|
ShowControlBar(&m_wndDataBaseBar, FALSE, TRUE);
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create Sound-Preset-Ed
|
|
m_wndSoundPresets.Create(CSoundPresetsDlg::IDD, this);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create Sound-Preset-Ed
|
|
m_wndEAXPresets.Create(CEAXPresetsDlg::IDD, this);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create Music-Info-Dlg
|
|
m_wndMusicInfo.Create(CMusicInfoDlg::IDD, this);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create info bar.
|
|
m_infoBarHolder.Create( this, CBRS_BOTTOM|CBRS_TOOLTIPS|CBRS_FLYBY,IDW_VIEW_INFO_BAR );
|
|
m_infoBarHolder.EnableDocking( CBRS_ALIGN_BOTTOM );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
m_wndReBar.AddBar( &m_wndToolBar,0,0,RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP );
|
|
m_wndReBar.AddBar( &m_editModeBar,0,0,RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP );
|
|
m_wndReBar.AddBar( &m_objectModifyBar,0,0,RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP );
|
|
m_wndReBar.AddBar( &m_missionToolBar,0,0,RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP|RBBS_BREAK );
|
|
m_wndReBar.AddBar( &m_wndTerrainToolBar,0,0,RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP );
|
|
m_wndReBar.AddBar( &m_wndAvoToolBar,0,0,RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP );
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// AVI Tool bar is not visible by default.
|
|
ShowControlBar( &m_wndAvoToolBar,FALSE,0 );
|
|
|
|
// Set size of edit mode bar in ReBar control.
|
|
REBARBANDINFO rbi;
|
|
ZeroStruct(rbi);
|
|
rbi.fMask = RBBIM_SIZE|RBBIM_CHILDSIZE|RBBIM_IDEALSIZE;
|
|
rbi.cbSize = sizeof(rbi);
|
|
m_wndReBar.GetReBarCtrl().GetBandInfo( 1,&rbi );
|
|
rbi.cx = rbi.cx + 40;
|
|
rbi.cxMinChild = rbi.cx;
|
|
rbi.cxIdeal = rbi.cx + 50;
|
|
m_wndReBar.GetReBarCtrl().SetBandInfo( 1,&rbi );
|
|
|
|
// TODO: Remove this if you don't want tool tips
|
|
//m_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
|
|
//m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
|
|
//m_wndReBar.SetBarStyle(m_wndReBar.GetBarStyle() | CBRS_BORDER_ANY );
|
|
|
|
m_wndConsoleBar.EnableDockingEx(CBRS_ALIGN_ANY, CBRS_XT_ALL_FLAT|CBRS_XT_GRIPPER_GRAD);
|
|
m_wndRollUpBar.EnableDockingEx(CBRS_ALIGN_ANY, CBRS_XT_ALL_FLAT|CBRS_XT_GRIPPER_GRAD);
|
|
m_wndTrackViewBar.EnableDockingEx(CBRS_ALIGN_ANY, CBRS_XT_ALL_FLAT|CBRS_XT_GRIPPER_GRAD);
|
|
m_wndDataBaseBar.EnableDockingEx(CBRS_ALIGN_ANY, CBRS_XT_ALL_FLAT|CBRS_XT_GRIPPER_GRAD);
|
|
|
|
//EnableDockingEx(CBRS_ALIGN_ANY, CBRS_XT_SEMIFLAT );
|
|
|
|
EnableDockingEx(CBRS_ALIGN_TOP, CBRS_XT_SEMIFLAT );
|
|
EnableDockingEx(CBRS_ALIGN_RIGHT, CBRS_XT_SEMIFLAT );
|
|
EnableDockingEx(CBRS_ALIGN_LEFT, CBRS_XT_SEMIFLAT );
|
|
EnableDockingEx(CBRS_ALIGN_BOTTOM, CBRS_XT_SEMIFLAT );
|
|
|
|
|
|
DockControlBar(&m_infoBarHolder);
|
|
DockControlBar(&m_wndConsoleBar);
|
|
DockControlBar(&m_wndRollUpBar);
|
|
DockControlBar(&m_wndTrackViewBar);
|
|
DockControlBar(&m_wndDataBaseBar);
|
|
|
|
#ifndef WIN64
|
|
UINT toolbarIds[] = { IDR_MAINFRAME,IDR_EDIT_MODE,IDR_MISSION_BAR,IDR_OBJECT_MODIFY,IDR_TERRAIN_BAR };
|
|
InstallCoolMenus( toolbarIds,_countof(toolbarIds) );
|
|
#endif
|
|
|
|
if (m_wndReBar.m_hWnd)
|
|
m_wndReBar.LoadState(BAR_SECTION);
|
|
|
|
if (IsPreview())
|
|
{
|
|
// Hide all menus.
|
|
ShowControlBar( &m_wndMenuBar,FALSE,0 );
|
|
ShowControlBar( &m_wndReBar,FALSE,0 );
|
|
ShowControlBar( &m_wndTrackViewBar,FALSE,0 );
|
|
ShowControlBar( &m_wndDataBaseBar,FALSE,0 );
|
|
}
|
|
else
|
|
{
|
|
// Update tools menu,
|
|
UpdateTools();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Load toolbar buttons for main menu.
|
|
/*
|
|
m_DefaultNewMenu.LoadToolBar(IDR_MAINFRAME);
|
|
m_DefaultNewMenu.LoadToolBar(IDR_EDIT_MODE);
|
|
m_DefaultNewMenu.LoadToolBar(IDR_MISSION_BAR);
|
|
m_DefaultNewMenu.LoadToolBar(IDR_OBJECT_MODIFY);
|
|
*/
|
|
|
|
/*
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Create and set up all control bars
|
|
// WARNING! Creation order of controls is very important for the look.
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
HICON hIcon = LoadIcon( AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_SMALLICON) );
|
|
SetIcon( hIcon,FALSE );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CWinApp * pApp = ::AfxGetApp();
|
|
ASSERT( pApp != NULL );
|
|
ASSERT( pApp->m_pszRegistryKey != NULL );
|
|
ASSERT( pApp->m_pszRegistryKey[0] != _T('\0') );
|
|
ASSERT( pApp->m_pszProfileName != NULL );
|
|
ASSERT( pApp->m_pszProfileName[0] != _T('\0') );
|
|
|
|
ASSERT( pApp->m_pszProfileName != NULL );
|
|
VERIFY( g_CmdManager->ProfileSetup( pApp->m_pszProfileName, GetSafeHwnd() ) );
|
|
VERIFY( g_CmdManager->UpdateFromMenu( pApp->m_pszProfileName, IDR_MAINFRAME ) );
|
|
|
|
m_bXPLook = pApp->GetProfileInt("Window","XPLook",1) != 0;
|
|
|
|
// Turn off menu expanding.
|
|
CExtPopupMenuWnd::g_bMenuExpanding = false;
|
|
CExtPopupMenuWnd::g_bMenuHighlightRarely = false;
|
|
CExtPopupMenuWnd::g_bMenuExpandAnimation = false;
|
|
CExtPopupMenuWnd::g_DefAnimationType = CExtPopupMenuWnd::__AT_NONE;
|
|
|
|
if (m_bXPLook)
|
|
{
|
|
// Install XP paint manager.
|
|
if (!g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerXP) ) )
|
|
VERIFY( g_PaintManager.InstallPaintManager( new CExtPaintManagerXP ) );
|
|
CExtPopupMenuWnd::g_bMenuWithShadows = true;
|
|
}
|
|
else
|
|
{
|
|
// Install w2k paint manager.
|
|
if (g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerXP) ) )
|
|
VERIFY( g_PaintManager.InstallPaintManager( new CExtPaintManager ) );
|
|
CExtPopupMenuWnd::g_bMenuWithShadows = false;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create Menu.
|
|
VERIFY( m_wndMenuBar.Create( NULL,this,ID_VIEW_MENUBAR ) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create the status bar
|
|
VERIFY( m_wndStatusBar.Create(this) );
|
|
VERIFY( m_wndStatusBar.SetIndicators( indicators,sizeof(indicators)/sizeof(UINT) ) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create standart toolbar.
|
|
VERIFY( m_wndToolBar.Create( _T("Standart"),this,AFX_IDW_TOOLBAR ) );
|
|
VERIFY( m_wndToolBar.LoadToolBar(IDR_MAINFRAME) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
VERIFY( m_wndTerrainToolBar.Create( _T("TerrainTools"),this,IDW_VIEW_TERRAIN_BAR ) );
|
|
VERIFY( m_wndTerrainToolBar.LoadToolBar(IDR_TERRAIN_BAR) );
|
|
CExtCmdManager::cmd_t * p_cmd;
|
|
p_cmd = g_CmdManager->CmdGetPtr( pApp->m_pszProfileName,ID_TERRAIN );
|
|
ASSERT( p_cmd != 0 );
|
|
p_cmd->m_sToolbarText = "Terrain";
|
|
p_cmd = g_CmdManager->CmdGetPtr( pApp->m_pszProfileName,ID_GENERATORS_TEXTURE );
|
|
ASSERT( p_cmd != 0 );
|
|
p_cmd->m_sToolbarText = "Texture";
|
|
p_cmd = g_CmdManager->CmdGetPtr( pApp->m_pszProfileName,ID_GENERATORS_LIGHTING );
|
|
ASSERT( p_cmd != 0 );
|
|
p_cmd->m_sToolbarText = "Lighting";
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create EditMode Toolbar.
|
|
m_editModeBar.Create( _T("EditMode"),this,IDW_VIEW_EDITMODE_BAR );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Object Modify Toolbar
|
|
m_objectModifyBar.Create( _T("Object"),this,IDW_VIEW_OBJECT_BAR );
|
|
m_objectModifyBar.LoadToolBar( IDR_OBJECT_MODIFY );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Initialize Mission ToolBar.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CreateMissionsBar();
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create the RollupBar.
|
|
CreateRollupBar();
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create console.
|
|
// Create the console
|
|
m_wndConsoleBar.Create( _T("Log"),this,IDW_VIEW_CONSOLE_BAR );
|
|
m_cConsole.Create( NULL,NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),&m_wndConsoleBar,m_wndConsoleBar.GetDlgCtrlID() );
|
|
m_wndConsoleBar.SetInitDesiredSizeHorizontal( CSize(500, 70) );
|
|
m_wndConsoleBar.SetInitDesiredSizeFloating( CSize(300, 400) );
|
|
m_wndConsoleBar.SetInitDesiredSizeVertical( CSize(300, 400) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create TackView.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
m_wndTrackViewBar.Create( _T("TrackView"),this,IDW_VIEW_TRACKVIEW_BAR );
|
|
m_wndTrackView.Create( CTrackViewDialog::IDD,&m_wndTrackViewBar );
|
|
m_wndTrackViewBar.SetInitDesiredSizeHorizontal( CSize(500,300) );
|
|
m_wndTrackViewBar.SetInitDesiredSizeFloating( CSize(500,300) );
|
|
m_wndTrackViewBar.SetInitDesiredSizeVertical( CSize(400,300) );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create Sound-Preset-Ed
|
|
m_wndSoundPresets.Create(CSoundPresetsDlg::IDD, this);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create info bar.
|
|
m_infoBarHolder.Create( this, CBRS_BOTTOM|CBRS_TOOLTIPS|CBRS_FLYBY,IDW_VIEW_INFO_BAR );
|
|
m_infoBarHolder.EnableDocking( CBRS_ALIGN_BOTTOM );
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Docking.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_editModeBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_objectModifyBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_missionToolBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_wndRollUpBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_wndConsoleBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_wndTrackViewBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
m_wndTerrainToolBar.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
// This is correct priority order.
|
|
CExtControlBar::FrameEnableDocking(this,CBRS_ALIGN_TOP);
|
|
CExtControlBar::FrameEnableDocking(this,CBRS_ALIGN_RIGHT);
|
|
CExtControlBar::FrameEnableDocking(this,CBRS_ALIGN_LEFT);
|
|
CExtControlBar::FrameEnableDocking(this,CBRS_ALIGN_BOTTOM);
|
|
|
|
DockControlBar(&m_wndMenuBar);
|
|
DockControlBar(&m_wndToolBar);
|
|
|
|
RecalcLayout();
|
|
CRect wrAlredyDockedBar;
|
|
m_wndToolBar.GetWindowRect( &wrAlredyDockedBar );
|
|
wrAlredyDockedBar.OffsetRect( 1, 0 );
|
|
DockControlBar(&m_editModeBar,AFX_IDW_DOCKBAR_TOP,&wrAlredyDockedBar);
|
|
|
|
RecalcLayout();
|
|
m_editModeBar.GetWindowRect( &wrAlredyDockedBar );
|
|
wrAlredyDockedBar.OffsetRect( 1, 0 );
|
|
DockControlBar(&m_objectModifyBar,AFX_IDW_DOCKBAR_TOP,&wrAlredyDockedBar);
|
|
|
|
RecalcLayout();
|
|
m_objectModifyBar.GetWindowRect( &wrAlredyDockedBar );
|
|
wrAlredyDockedBar.OffsetRect( 1, 0 );
|
|
DockControlBar(&m_missionToolBar,AFX_IDW_DOCKBAR_TOP,&wrAlredyDockedBar);
|
|
|
|
RecalcLayout();
|
|
m_missionToolBar.GetWindowRect( &wrAlredyDockedBar );
|
|
wrAlredyDockedBar.OffsetRect( 1, 0 );
|
|
DockControlBar(&m_wndTerrainToolBar,AFX_IDW_DOCKBAR_TOP,&wrAlredyDockedBar);
|
|
|
|
//CRect rc(1,1,328, 300);
|
|
DockControlBar(&m_wndRollUpBar,AFX_IDW_DOCKBAR_RIGHT);
|
|
DockControlBar(&m_infoBarHolder,AFX_IDW_DOCKBAR_BOTTOM);
|
|
DockControlBar(&m_wndConsoleBar,AFX_IDW_DOCKBAR_BOTTOM);
|
|
DockControlBar(&m_wndTrackViewBar,AFX_IDW_DOCKBAR_BOTTOM);
|
|
|
|
ShowControlBar( &m_wndTrackViewBar,FALSE,0 );
|
|
RecalcLayout();
|
|
|
|
/*
|
|
// Create rebar.
|
|
m_ReBar.Create( this,RBS_BANDBORDERS|RBS_AUTOSIZE );
|
|
|
|
|
|
EnableDocking(CBRS_ALIGN_TOP);
|
|
EnableDocking(CBRS_ALIGN_LEFT);
|
|
EnableDocking(CBRS_ALIGN_RIGHT);
|
|
EnableDocking(CBRS_ALIGN_BOTTOM);
|
|
|
|
// Create the console
|
|
m_cConsole.Create("Console", this, CSize(500, 70),TRUE, AFX_IDW_CONTROLBAR_FIRST + 32);
|
|
m_cConsole.SetBarStyle(m_cConsole.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
|
m_cConsole.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
if (!GetIEditor()->IsInPreviewMode())
|
|
{
|
|
m_wndTrackView.Create( "TrackView",this,CSize(500,300),TRUE,AFX_IDW_CONTROLBAR_FIRST + 33 );
|
|
ShowControlBar( &m_wndTrackView, FALSE,FALSE );
|
|
m_wndTrackView.SetBarStyle(m_cConsole.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC );
|
|
m_wndTrackView.EnableDocking( CBRS_ALIGN_BOTTOM|CBRS_ALIGN_TOP );
|
|
}
|
|
|
|
// Create the standard toolbar
|
|
m_wndToolBar.CreateEx( &m_ReBar, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC|CBRS_ALIGN_TOP);
|
|
m_wndToolBar.LoadToolBar(IDR_MAINFRAME);
|
|
// m_ReBar.AddBar( &m_wndToolBar,RGB(0,0,0),RGB(255,255,255),"Main" );
|
|
m_ReBar.AddBar( &m_wndToolBar );
|
|
|
|
|
|
// Add editmode toolbar.
|
|
m_editModeBar.Create( &m_ReBar, WS_CHILD|WS_VISIBLE|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_FIXED|CBRS_ALIGN_TOP);
|
|
m_ReBar.AddBar( &m_editModeBar );
|
|
|
|
REBARBANDINFO rbi;
|
|
ZeroStruct(rbi);
|
|
rbi.fMask = RBBIM_SIZE|RBBIM_CHILDSIZE|RBBIM_IDEALSIZE;
|
|
rbi.cbSize = sizeof(rbi);
|
|
m_ReBar.GetReBarCtrl().GetBandInfo( 1,&rbi );
|
|
rbi.cx = rbi.cx + 80;
|
|
rbi.cxMinChild = rbi.cx;
|
|
rbi.cxIdeal = rbi.cx + 50;
|
|
m_ReBar.GetReBarCtrl().SetBandInfo( 1,&rbi );
|
|
|
|
|
|
|
|
//m_tools.CreateEx( this, CCS_VERT, WS_BORDER|WS_CHILD|WS_VISIBLE|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC|CBRS_ORIENT_VERT);
|
|
//m_tools.LoadToolBar( IDR_EDIT_MODE1 );
|
|
//m_tools.EnableDocking(CBRS_ALIGN_LEFT);
|
|
|
|
|
|
m_objectModifyBar.CreateEx( &m_ReBar, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_FIXED|CBRS_ALIGN_TOP);
|
|
m_objectModifyBar.LoadToolBar( IDR_OBJECT_MODIFY );
|
|
m_ReBar.AddBar( &m_objectModifyBar );
|
|
|
|
InitMissionsBar();
|
|
|
|
// Create the dialog bar at the top of the window
|
|
m_cDialogBar.Create(this, IDD_DIALOGBAR, CBRS_ALIGN_BOTTOM, AFX_IDW_DIALOGBAR);
|
|
m_ReBar.AddBar( &m_cDialogBar );
|
|
|
|
//m_infoBar.Create(this, CBRS_BOTTOM|CBRS_TOOLTIPS|CBRS_FLYBY, CInfoBar::IDD);
|
|
m_infoBarHolder.Create(this, CBRS_BOTTOM|CBRS_TOOLTIPS|CBRS_FLYBY,AFX_IDW_CONTROLBAR_FIRST + 34 );
|
|
m_infoBarHolder.EnableDocking( CBRS_ALIGN_BOTTOM );
|
|
//m_infoBarHolder.Create( CInfoBarHolder::IDD, this );
|
|
|
|
|
|
// Create the rollup bar
|
|
m_wndRollUp.Create("RollupBar", this, CSize(228, 300),TRUE, AFX_IDW_CONTROLBAR_FIRST + 64);
|
|
|
|
// Set styles of the rollup bar
|
|
DWORD oldStyle = m_wndRollUp.GetBarStyle();
|
|
m_wndRollUp.SetBarStyle( CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC|CBRS_ALIGN_RIGHT );
|
|
m_wndRollUp.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
|
// Create our RollupCtrl into DialogBar and register it
|
|
m_objectRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_OBJECTS,&m_objectRollupCtrl);
|
|
|
|
m_terrainRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_TERRAIN,&m_terrainRollupCtrl );
|
|
|
|
m_displayRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_DISPLAY,&m_displayRollupCtrl );
|
|
|
|
// Dock stuff.
|
|
DockControlBar(&m_wndRollUp, AFX_IDW_DOCKBAR_RIGHT);
|
|
DockControlBar(&m_cConsole, AFX_IDW_DOCKBAR_BOTTOM);
|
|
if (m_wndTrackView.m_hWnd)
|
|
DockControlBar(&m_wndTrackView, AFX_IDW_DOCKBAR_BOTTOM);
|
|
|
|
//FloatControlBar(&m_cConsole, CPoint(100,80),CBRS_ALIGN_TOP );
|
|
|
|
if (!GetIEditor()->IsInPreviewMode())
|
|
{
|
|
// Insert the main rollup
|
|
m_mainTools = new CMainTools;
|
|
m_mainTools->Create(MAKEINTRESOURCE(CMainTools::IDD),this);
|
|
m_objectRollupCtrl.InsertPage("Objects",m_mainTools);
|
|
|
|
// m_objectRollupCtrl.InsertPage("Main Tools",MAKEINTRESOURCE(CMainTools::IDD),RUNTIME_CLASS(CMainTools) );
|
|
|
|
m_terrainPanel = new CTerrainPanel(this);
|
|
m_terrainRollupCtrl.InsertPage("Terrain",m_terrainPanel );
|
|
|
|
CPanelDisplayHide *hidePanel = new CPanelDisplayHide(this);
|
|
m_displayRollupCtrl.InsertPage("Hide by Category",hidePanel );
|
|
|
|
CPanelDisplayRender *renderPanel = new CPanelDisplayRender(this);
|
|
m_displayRollupCtrl.InsertPage("Render Settings",renderPanel );
|
|
|
|
CPanelDisplayLayer *layerPanel = new CPanelDisplayLayer(this);
|
|
m_displayRollupCtrl.InsertPage( "Layers Settings",layerPanel );
|
|
|
|
m_objectRollupCtrl.ExpandAllPages( TRUE );
|
|
m_terrainRollupCtrl.ExpandAllPages(TRUE);
|
|
m_displayRollupCtrl.ExpandAllPages(TRUE);
|
|
}
|
|
|
|
SelectRollUpBar( ROLLUP_OBJECTS );
|
|
|
|
//FloatControlBar(&m_editModeBar, CPoint(100,80),CBRS_ALIGN_TOP );
|
|
|
|
if (GetIEditor()->IsInPreviewMode())
|
|
{
|
|
m_ReBar.ShowWindow( SW_HIDE );
|
|
SetMenu( NULL );
|
|
}
|
|
*/
|
|
|
|
/*
|
|
if (!IsPreview())
|
|
{
|
|
//////////////////////////////////////////////////////////////////////////
|
|
VERIFY( g_CmdManager->SetBasicCommands( pApp->m_pszProfileName,g_statBasicCommands ) );
|
|
|
|
CExtControlBar::ProfileBarStateLoad(
|
|
this,
|
|
pApp->m_pszRegistryKey,
|
|
pApp->m_pszProfileName,
|
|
pApp->m_pszProfileName,
|
|
&m_dataFrameWP
|
|
);
|
|
//////////////////////////////////////////////////////////////////////////
|
|
}
|
|
else
|
|
{
|
|
CExtControlBar::ProfileBarStateLoad( this,pApp->m_pszRegistryKey,pApp->m_pszProfileName,"Preview",&m_dataFrameWP);
|
|
// Hide all menus.
|
|
ShowControlBar( &m_wndMenuBar,FALSE,0 );
|
|
ShowControlBar( &m_wndToolBar,FALSE,0 );
|
|
ShowControlBar( &m_editModeBar,FALSE,0 );
|
|
ShowControlBar( &m_missionToolBar,FALSE,0 );
|
|
ShowControlBar( &m_objectModifyBar,FALSE,0 );
|
|
ShowControlBar( &m_wndTrackViewBar,FALSE,0 );
|
|
ShowControlBar( &m_wndTerrainToolBar,FALSE,0 );
|
|
}
|
|
*/
|
|
|
|
m_bXPLook = xtAfxData.bXPMode;
|
|
|
|
return 0;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::LoadTrueColorToolbar( CXTToolBar &bar,UINT nImageResource )
|
|
{
|
|
CBitmap toolbarBitmap;
|
|
CImageList toolbarImageList;
|
|
|
|
VERIFY(bar.LoadToolBar(nImageResource));
|
|
|
|
/*
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Use 24Bit toolbars.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
toolbarBitmap.LoadBitmap(nImageResource);
|
|
toolbarImageList.Create(16, 15, ILC_COLORDDB|ILC_MASK, 13, 1);
|
|
toolbarImageList.Add(&toolbarBitmap,TOOLBAR_TRANSPARENT_COLOR);
|
|
bar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)toolbarImageList.m_hImageList);
|
|
*/
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnSoundPresets()
|
|
{
|
|
m_wndSoundPresets.ShowWindow(true);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnEAXPresets()
|
|
{
|
|
m_wndEAXPresets.ShowWindow(true);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnMusicInfo()
|
|
{
|
|
m_wndMusicInfo.ShowWindow(true);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
//if( m_wndMenuBar.TranslateMainFrameMessage(pMsg) )
|
|
// return TRUE;
|
|
|
|
return CXTFrameWnd::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::DestroyWindow()
|
|
{
|
|
if (m_autoSaveTimer)
|
|
KillTimer( m_autoSaveTimer );
|
|
if (m_autoRemindTimer)
|
|
KillTimer( m_autoRemindTimer );
|
|
|
|
SaveConfig();
|
|
|
|
return CXTFrameWnd::DestroyWindow();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::SaveConfig()
|
|
{
|
|
CXTRegistryManager regMgr;
|
|
regMgr.WriteProfileInt(_T("Settings"), _T("bXPMode"), xtAfxData.bXPMode);
|
|
|
|
// Save frame window size and position.
|
|
m_wndPosition.SaveWindowPos(this);
|
|
|
|
if (!IsPreview())
|
|
{
|
|
m_wndReBar.SaveState(BAR_SECTION);
|
|
|
|
// Save control bar postion.
|
|
SaveBarState(_T("Bar State"));
|
|
|
|
if (m_layoutWnd)
|
|
m_layoutWnd->SaveConfig();
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// WARNING uses undocumented MFC code!!!
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::DockControlBarNextTo(CControlBar* pBar,
|
|
CControlBar* pTargetBar)
|
|
{
|
|
ASSERT(pBar != NULL);
|
|
ASSERT(pTargetBar != NULL);
|
|
ASSERT(pBar != pTargetBar);
|
|
|
|
// the neighbour must be already docked
|
|
CDockBar* pDockBar = pTargetBar->m_pDockBar;
|
|
ASSERT(pDockBar != NULL);
|
|
UINT nDockBarID = pTargetBar->m_pDockBar->GetDlgCtrlID();
|
|
ASSERT(nDockBarID != AFX_IDW_DOCKBAR_FLOAT);
|
|
|
|
bool bHorz = (nDockBarID == AFX_IDW_DOCKBAR_TOP ||
|
|
nDockBarID == AFX_IDW_DOCKBAR_BOTTOM);
|
|
|
|
// dock normally (inserts a new row)
|
|
DockControlBar(pBar, nDockBarID);
|
|
|
|
// delete the new row (the bar pointer and the row end mark)
|
|
pDockBar->m_arrBars.RemoveAt(pDockBar->m_arrBars.GetSize() - 1);
|
|
pDockBar->m_arrBars.RemoveAt(pDockBar->m_arrBars.GetSize() - 1);
|
|
|
|
// find the target bar
|
|
for (int i = 0; i < pDockBar->m_arrBars.GetSize(); i++)
|
|
{
|
|
void* p = pDockBar->m_arrBars[i];
|
|
if (p == pTargetBar) // and insert the new bar after it
|
|
pDockBar->m_arrBars.InsertAt(i + 1, pBar);
|
|
}
|
|
|
|
// move the new bar into position
|
|
CRect rBar;
|
|
pTargetBar->GetWindowRect(rBar);
|
|
rBar.OffsetRect(bHorz ? 1 : 0, bHorz ? 0 : 1);
|
|
pBar->MoveWindow(rBar);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::VerifyBarState( CDockState &state )
|
|
{
|
|
for (int i = 0; i < state.m_arrBarInfo.GetSize(); i++)
|
|
{
|
|
CControlBarInfo* pInfo = (CControlBarInfo*)state.m_arrBarInfo[i];
|
|
ASSERT(pInfo != NULL);
|
|
int nDockedCount = pInfo->m_arrBarID.GetSize();
|
|
if (nDockedCount > 0)
|
|
{
|
|
// dockbar
|
|
for (int j = 0; j < nDockedCount; j++)
|
|
{
|
|
UINT_PTR nID = (UINT_PTR) pInfo->m_arrBarID[j];
|
|
if (nID == 0) continue; // row separator
|
|
if (nID > 0xFFFF)
|
|
nID &= 0xFFFF; // placeholder - get the ID
|
|
if (GetControlBar(nID) == NULL)
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
if (!pInfo->m_bFloating) // floating dockbars can be created later
|
|
if (GetControlBar(pInfo->m_nBarID) == NULL)
|
|
return FALSE; // invalid bar ID
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::CreateRollupBar()
|
|
{
|
|
CSize sz(220,500);
|
|
CRect rc(CPoint(0,0),sz);
|
|
m_wndRollUpBar.Create( this,IDW_VIEW_ROLLUP_BAR,_T("RollupBar"),sz,CBRS_RIGHT );
|
|
//m_wndRollUpBar.Create( _T("RollupBar"),this,IDW_VIEW_ROLLUP_BAR );
|
|
//m_wndRollUpBar.SetInitDesiredSizeVertical(sz);
|
|
//m_wndRollUpBar.SetInitDesiredSizeFloating(sz);
|
|
|
|
m_wndRollUp.Create( NULL,NULL,WS_CHILD|WS_VISIBLE,rc,&m_wndRollUpBar,m_wndRollUpBar.GetDlgCtrlID() );
|
|
m_wndRollUpBar.SetChild( &m_wndRollUp );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Create our RollupCtrl into DialogBar and register it
|
|
m_objectRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_OBJECTS,&m_objectRollupCtrl);
|
|
|
|
m_terrainRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_TERRAIN,&m_terrainRollupCtrl );
|
|
|
|
m_displayRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_DISPLAY,&m_displayRollupCtrl );
|
|
|
|
m_layersRollupCtrl.Create(WS_VISIBLE | WS_CHILD, CRect(4, 4, 187, 362), &m_wndRollUp, NULL);
|
|
m_wndRollUp.SetRollUpCtrl( ROLLUP_LAYERS,&m_layersRollupCtrl );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
if (!IsPreview())
|
|
{
|
|
// Insert the main rollup
|
|
m_mainTools = new CMainTools;
|
|
m_mainTools->Create(MAKEINTRESOURCE(CMainTools::IDD),this);
|
|
m_objectRollupCtrl.InsertPage("Objects",m_mainTools);
|
|
|
|
// m_objectRollupCtrl.InsertPage("Main Tools",MAKEINTRESOURCE(CMainTools::IDD),RUNTIME_CLASS(CMainTools) );
|
|
|
|
m_terrainPanel = new CTerrainPanel(this);
|
|
m_terrainRollupCtrl.InsertPage("Terrain",m_terrainPanel );
|
|
|
|
CPanelDisplayHide *hidePanel = new CPanelDisplayHide(this);
|
|
m_displayRollupCtrl.InsertPage("Hide by Category",hidePanel );
|
|
|
|
CPanelDisplayRender *renderPanel = new CPanelDisplayRender(this);
|
|
m_displayRollupCtrl.InsertPage("Render Settings",renderPanel );
|
|
|
|
CPanelDisplayLayer *layerPanel = new CPanelDisplayLayer(this);
|
|
m_layersRollupCtrl.InsertPage( "Layers Settings",layerPanel );
|
|
|
|
m_objectRollupCtrl.ExpandAllPages( TRUE );
|
|
m_terrainRollupCtrl.ExpandAllPages(TRUE);
|
|
m_displayRollupCtrl.ExpandAllPages(TRUE);
|
|
m_layersRollupCtrl.ExpandAllPages(TRUE);
|
|
|
|
SelectRollUpBar( ROLLUP_OBJECTS );
|
|
}
|
|
else
|
|
{
|
|
// Hide all menus.
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::CreateMissionsBar()
|
|
{
|
|
DWORD dwToolBarFlags = WS_CHILD|WS_VISIBLE|CBRS_ALIGN_ANY|CBRS_TOOLTIPS|CBRS_FLYBY;
|
|
CRect nullRc(0,0,0,0);
|
|
m_missionToolBar.CreateEx( this,TBSTYLE_TRANSPARENT|TBSTYLE_FLAT,dwToolBarFlags,CRect(0,0,0,0),IDW_VIEW_MISSION_BAR );
|
|
m_missionToolBar.LoadToolBar(IDR_MISSION_BAR);
|
|
m_missionToolBar.SetWindowText( _T("Mission ToolBar") );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Use 24Bit toolbar.
|
|
CImageList toolbarImageList;
|
|
CBitmap toolbarBitmap;
|
|
toolbarBitmap.LoadBitmap(IDR_MISSION_BAR);
|
|
toolbarImageList.Create(16, 15, ILC_COLORDDB|ILC_MASK, 13, 1);
|
|
toolbarImageList.Add(&toolbarBitmap,TOOLBAR_TRANSPARENT_COLOR);
|
|
m_objectModifyBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)toolbarImageList.m_hImageList);
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// Create controls in the mission bar
|
|
CRect rect(0,0,100,200);
|
|
// Get the index of the keyframe slider position in the toolbar
|
|
int iIndex = m_missionToolBar.CommandToIndex(IDC_MISSION);
|
|
assert( iIndex >= 0 );
|
|
|
|
m_missions.Create( WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST|CBS_SORT,rect,this,IDC_MISSION );
|
|
m_missions.SetParent( &m_missionToolBar );
|
|
|
|
m_missionToolBar.InsertControl( &m_missions );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnMissionUpdate()
|
|
{
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnMissionChanged()
|
|
{
|
|
if (IsPreview())
|
|
return;
|
|
|
|
int sel = m_missions.GetCurSel();
|
|
if (sel != LB_ERR)
|
|
{
|
|
CString str;
|
|
m_missions.GetLBText( sel,str );
|
|
CCryEditDoc *doc = (CCryEditDoc*)GetActiveDocument();
|
|
CMission *mission = doc->FindMission(str);
|
|
if (mission)
|
|
{
|
|
doc->SetCurrentMission( mission );
|
|
|
|
m_currentMission = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnMissionCancelChanged()
|
|
{
|
|
if (IsPreview())
|
|
return;
|
|
|
|
CCryEditDoc *doc = GetIEditor()->GetDocument();
|
|
if (!doc)
|
|
return;
|
|
int sel = m_missions.FindStringExact( -1,doc->GetCurrentMission()->GetName() );
|
|
if (sel != LB_ERR)
|
|
m_missions.SetCurSel(sel);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnMissionDropDown()
|
|
{
|
|
// When mission control is about to display all missions items.
|
|
m_missions.ResetContent();
|
|
CCryEditDoc *doc = GetIEditor()->GetDocument();
|
|
if (!doc)
|
|
return;
|
|
for (int i = 0; i < doc->GetMissionCount(); i++)
|
|
{
|
|
m_missions.AddString( doc->GetMission(i)->GetName() );
|
|
}
|
|
|
|
int sel = m_missions.FindStringExact( -1,doc->GetCurrentMission()->GetName() );
|
|
if (sel != LB_ERR)
|
|
m_missions.SetCurSel(sel);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
// Use our own window class (Needed to dected single application instance).
|
|
cs.lpszClass = _T("CryEditorClass");
|
|
|
|
// Init the window with the lowest possible resolution
|
|
cs.cx = 800;
|
|
cs.cy = 600;
|
|
cs.x = 10;
|
|
cs.y = 10;
|
|
|
|
if( !CXTFrameWnd::PreCreateWindow(cs) )
|
|
return FALSE;
|
|
|
|
cs.dwExStyle = 0;
|
|
|
|
//cs.lpszClass = AfxRegisterWndClass( 0, NULL, NULL,AfxGetApp()->LoadIcon(IDR_MAINFRAME));
|
|
//cs.style &= ~FWS_ADDTOTITLE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CMainFrame::IdleUpdate()
|
|
{
|
|
if (m_infoBarHolder.m_hWnd)
|
|
m_infoBarHolder.IdleUpdate();
|
|
|
|
IEditor *iface = GetIEditor();
|
|
|
|
if (IsPreview())
|
|
return;
|
|
|
|
if (m_wndTrackView.m_hWnd)
|
|
{
|
|
m_wndTrackView.Update();
|
|
}
|
|
if (m_wndDataBase.m_hWnd)
|
|
m_wndDataBase.Update();
|
|
|
|
if (m_terrainPanel)
|
|
{
|
|
if (::IsWindowVisible(m_terrainPanel->GetSafeHwnd()))
|
|
m_terrainPanel->OnIdleUpdate();
|
|
}
|
|
|
|
if (GetIEditor()->GetSelection()->GetName() != m_selectionName)
|
|
{
|
|
m_selectionName = GetIEditor()->GetSelection()->GetName();
|
|
SetSelectionName( m_selectionName );
|
|
}
|
|
|
|
if (m_missions.m_hWnd)
|
|
{
|
|
CCryEditDoc *doc = GetIEditor()->GetDocument();
|
|
if (doc->GetCurrentMission() != m_currentMission)
|
|
{
|
|
m_currentMission = GetIEditor()->GetDocument()->GetCurrentMission();
|
|
//CString str;
|
|
//m_missions.SetWindowText( m_currentMission->GetName() );
|
|
if (m_missions.m_hWnd)
|
|
{
|
|
m_missions.ResetContent();
|
|
for (int i = 0; i < doc->GetMissionCount(); i++)
|
|
{
|
|
m_missions.AddString( doc->GetMission(i)->GetName() );
|
|
}
|
|
int sel = m_missions.FindStringExact( -1,m_currentMission->GetName() );
|
|
if (sel != LB_ERR)
|
|
m_missions.SetCurSel(sel);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (m_editModeBar.m_hWnd)
|
|
{
|
|
if (iface->GetObjectManager()->GetLayersManager()->GetCurrentLayer() != m_currentLayer)
|
|
{
|
|
m_currentLayer = iface->GetObjectManager()->GetLayersManager()->GetCurrentLayer();
|
|
m_editModeBar.SetCurrentLayer( m_currentLayer->GetName() );
|
|
RecalcLayout();
|
|
}
|
|
|
|
float gridSize = iface->GetViewManager()->GetGrid()->size;
|
|
if (gridSize != m_gridSize)
|
|
{
|
|
m_gridSize = gridSize;
|
|
m_editModeBar.SetGridSize( m_gridSize );
|
|
RecalcLayout();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMainFrame::UncheckMainTools()
|
|
{
|
|
if (m_mainTools)
|
|
{
|
|
m_mainTools->UncheckAll();
|
|
}
|
|
}
|
|
|
|
void CMainFrame::DockControlBarLeftOf(CControlBar *Bar, CControlBar *LeftOf)
|
|
{
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Dock a control bar left of another
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
CRect rect;
|
|
DWORD dw;
|
|
UINT n;
|
|
|
|
// Get MFC to adjust the dimensions of all docked ToolBars
|
|
// so that GetWindowRect will be accurate
|
|
RecalcLayout(TRUE);
|
|
|
|
LeftOf->GetWindowRect(&rect);
|
|
rect.OffsetRect(1, 0);
|
|
dw = LeftOf->GetBarStyle();
|
|
n = 0;
|
|
n = (dw & CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
|
|
n = (dw & CBRS_ALIGN_BOTTOM && n == 0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
|
|
n = (dw & CBRS_ALIGN_LEFT && n == 0) ? AFX_IDW_DOCKBAR_LEFT : n;
|
|
n = (dw & CBRS_ALIGN_RIGHT && n == 0) ? AFX_IDW_DOCKBAR_RIGHT : n;
|
|
|
|
// When we take the default parameters on rect, DockControlBar will dock
|
|
// each Toolbar on a seperate line. By calculating a rectangle, we
|
|
// are simulating a Toolbar being dragged to that location and docked.
|
|
DockControlBar(Bar, n, &rect);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CMainFrame::AssertValid() const
|
|
{
|
|
CXTFrameWnd::AssertValid();
|
|
}
|
|
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
|
{
|
|
CXTFrameWnd::Dump(dc);
|
|
}
|
|
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMainFrame message handlers
|
|
|
|
void CMainFrame::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
CXTFrameWnd::OnSize(nType, cx, cy);
|
|
}
|
|
|
|
void CMainFrame::OnUpdateToolbar(CCmdUI* pCmdUI)
|
|
{
|
|
//pCmdUI->SetCheck(m_ReBar.IsWindowVisible());
|
|
}
|
|
|
|
void CMainFrame::OnToolbar()
|
|
{
|
|
//ShowControlBar(&m_ReBar, !m_ReBar.IsWindowVisible(), FALSE);
|
|
}
|
|
|
|
void CMainFrame::OnUpdateConsole(CCmdUI* pCmdUI)
|
|
{
|
|
//pCmdUI->SetCheck(m_cConsole.IsWindowVisible());
|
|
}
|
|
|
|
void CMainFrame::OnConsoleWindow()
|
|
{
|
|
/*
|
|
if (GetIEditor()->IsInGameMode())
|
|
return;
|
|
|
|
// Control the visibility of the console
|
|
ShowControlBar(&m_cConsole, !m_cConsole.IsVisible(), FALSE);
|
|
if (m_cConsole.IsVisible())
|
|
{
|
|
m_cConsole.SetInputFocus();
|
|
}
|
|
*/
|
|
}
|
|
|
|
bool CMainFrame::ShowConsole( bool enable )
|
|
{
|
|
/*
|
|
// Control the visibility of the console
|
|
if (m_cConsole.IsFloating())
|
|
{
|
|
ShowControlBar(&m_cConsole, enable, FALSE);
|
|
bool result = m_consoleVisible;
|
|
m_consoleVisible = enable;
|
|
}
|
|
m_consoleVisible = true;
|
|
*/
|
|
return true;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnUpdateTrackView(CCmdUI* pCmdUI)
|
|
{
|
|
//pCmdUI->SetCheck(m_wndTrackView.IsWindowVisible());
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnTrackView()
|
|
{
|
|
//ShowControlBar(&m_wndTrackView, !m_wndTrackView.IsVisible(), FALSE);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnUpdateStatusBar(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->SetCheck(m_wndStatusBar.IsWindowVisible());
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnStatusBar()
|
|
{
|
|
ShowControlBar(&m_wndStatusBar, !m_wndStatusBar.IsVisible(), TRUE);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnUpdateRollUpBar(CCmdUI* pCmdUI)
|
|
{
|
|
//pCmdUI->SetCheck(m_wndRollUp.IsWindowVisible());
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnRollUpBar()
|
|
{
|
|
//ShowControlBar(&m_wndRollUp, !m_wndRollUp.IsVisible(), FALSE);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
|
|
{
|
|
// TODO: Add your specialized code here and/or call the base class
|
|
//m_layoutWnd.Create( this,2,2,CSize(10,10),pContext );
|
|
m_layoutWnd = new CLayoutWnd;
|
|
CRect rc;
|
|
m_layoutWnd->CreateEx( 0,NULL,NULL,WS_CHILD|WS_VISIBLE,rc,this,AFX_IDW_PANE_FIRST );
|
|
if (IsPreview())
|
|
{
|
|
m_layoutWnd->CreateLayout( ET_Layout0,true,ET_ViewportModel );
|
|
}
|
|
else
|
|
{
|
|
if (!m_layoutWnd->LoadConfig())
|
|
m_layoutWnd->CreateLayout( ET_Layout2 );
|
|
}
|
|
|
|
return TRUE;
|
|
//return CXTFrameWnd::OnCreateClient(lpcs, pContext);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
|
|
{
|
|
// TODO: Add your message handler code here and/or call default
|
|
if (pCopyDataStruct->dwData = 100 && pCopyDataStruct->lpData != NULL)
|
|
{
|
|
char str[1024];
|
|
memcpy( str,pCopyDataStruct->lpData,pCopyDataStruct->cbData );
|
|
str[pCopyDataStruct->cbData] = 0;
|
|
|
|
// Load this file.
|
|
((CCryEditApp*)AfxGetApp())->LoadFile( str );
|
|
}
|
|
|
|
return CXTFrameWnd::OnCopyData(pWnd, pCopyDataStruct);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CString CMainFrame::GetSelectionName()
|
|
{
|
|
return m_editModeBar.GetSelection();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::AddSelectionName( const CString &name )
|
|
{
|
|
m_editModeBar.AddSelection( name );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::RemoveSelectionName( const CString &name )
|
|
{
|
|
m_editModeBar.RemoveSelection( name );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::SetSelectionName( const CString &name )
|
|
{
|
|
if (m_editModeBar.m_hWnd)
|
|
m_editModeBar.SetSelection( name );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
int CMainFrame::SelectRollUpBar( int rollupBarId )
|
|
{
|
|
if (m_wndRollUp.m_hWnd)
|
|
m_wndRollUp.Select( rollupBarId );
|
|
return rollupBarId;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnClose()
|
|
{
|
|
if (!GetIEditor()->GetDocument()->CanCloseFrame(this))
|
|
return;
|
|
GetIEditor()->GetDocument()->SetModifiedFlag(FALSE);
|
|
|
|
GetIEditor()->GetSystem()->Quit();
|
|
|
|
// Close all edit panels.
|
|
GetIEditor()->ClearSelection();
|
|
GetIEditor()->SetEditTool(0);
|
|
GetIEditor()->GetObjectManager()->EndEditParams();
|
|
|
|
SaveConfig();
|
|
|
|
CXTFrameWnd::OnClose();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CRollupCtrl* CMainFrame::GetRollUpControl( int rollupBarId )
|
|
{
|
|
if (m_hWnd == 0)
|
|
return 0;
|
|
if (rollupBarId == ROLLUP_OBJECTS)
|
|
{
|
|
return &m_objectRollupCtrl;
|
|
} else if (rollupBarId == ROLLUP_TERRAIN)
|
|
{
|
|
return &m_terrainRollupCtrl;
|
|
} else if (rollupBarId == ROLLUP_DISPLAY)
|
|
{
|
|
return &m_displayRollupCtrl;
|
|
} else if (rollupBarId == ROLLUP_LAYERS)
|
|
{
|
|
return &m_layersRollupCtrl;
|
|
}
|
|
// Default.
|
|
return &m_objectRollupCtrl;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::EnableProgressBar( bool bEnable )
|
|
{
|
|
m_infoBarHolder.EnableProgressBar(bEnable);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CInfoProgressBar* CMainFrame::GetProgressBar()
|
|
{
|
|
return m_infoBarHolder.GetProgressBar();
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CTrackViewDialog* CMainFrame::GetTrackView()
|
|
{
|
|
return &m_wndTrackView;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::SetStatusText( LPCTSTR pszText)
|
|
{
|
|
if (m_wndStatusBar.m_hWnd)
|
|
m_wndStatusBar.SetPaneText(0, pszText);
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::ActivateFrame(int nCmdShow)
|
|
{
|
|
CXTFrameWnd::ActivateFrame(nCmdShow);
|
|
}
|
|
|
|
void CMainFrame::ShowWindowEx(int nCmdShow)
|
|
{
|
|
if (!IsPreview())
|
|
{
|
|
// Restore control bar postion.
|
|
LoadBarState(_T("Bar State"));
|
|
}
|
|
|
|
// Restore frame window size and position.
|
|
if (!m_wndPosition.LoadWindowPos(this))
|
|
{
|
|
nCmdShow = m_wndPosition.showCmd;
|
|
}
|
|
|
|
CXTFrameWnd::ShowWindow(nCmdShow);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnXPLook()
|
|
{
|
|
xtAfxData.bXPMode = !xtAfxData.bXPMode;
|
|
|
|
m_bXPLook = xtAfxData.bXPMode;
|
|
|
|
RedrawWindow( NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN );
|
|
|
|
/*
|
|
m_bXPLook = !m_bXPLook;
|
|
if (m_bXPLook)
|
|
{
|
|
// Install XP paint manager.
|
|
VERIFY( g_PaintManager.InstallPaintManager( new CExtPaintManagerXP ) );
|
|
CExtPopupMenuWnd::g_bMenuWithShadows = true;
|
|
}
|
|
else
|
|
{
|
|
// Install w2k paint manager.
|
|
VERIFY( g_PaintManager.InstallPaintManager( new CExtPaintManager ) );
|
|
CExtPopupMenuWnd::g_bMenuWithShadows = false;
|
|
}
|
|
RecalcLayout();
|
|
RedrawWindow( NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_FRAME|RDW_ALLCHILDREN );
|
|
*/
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnUpdateXPLook( CCmdUI* pCmdUI )
|
|
{
|
|
if (m_bXPLook)
|
|
pCmdUI->SetCheck(TRUE);
|
|
else
|
|
pCmdUI->SetCheck(FALSE);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
bool CMainFrame::IsPreview() const
|
|
{
|
|
return GetIEditor()->IsInPreviewMode();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
|
|
{
|
|
if (!CXTFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
|
|
return FALSE;
|
|
|
|
CXTAccelManager &accelManager = CXTAccelManager::Get();
|
|
/*
|
|
AddToolbarToAccel( _T("Toolbar EditMode"),&m_editModeBar );
|
|
AddToolbarToAccel( _T("Toolbar ObjectModify"),&m_objectModifyBar );
|
|
AddToolbarToAccel( _T("Toolbar Mission"),&m_missionToolBar );
|
|
AddToolbarToAccel( _T("Toolbar Terrain"),&m_wndTerrainToolBar );
|
|
|
|
// Add tag points.
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC1,_T("Tag Location 1") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC2,_T("Tag Location 2") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC3,_T("Tag Location 3") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC4,_T("Tag Location 4") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC5,_T("Tag Location 5") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC6,_T("Tag Location 6") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC7,_T("Tag Location 7") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC8,_T("Tag Location 8") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC9,_T("Tag Location 9") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC10,_T("Tag Location 10") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC11,_T("Tag Location 11") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_TAG_LOC12,_T("Tag Location 12") );
|
|
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC1,_T("Goto Tagged Location 1") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC2,_T("Goto Tagged Location 2") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC3,_T("Goto Tagged Location 3") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC4,_T("Goto Tagged Location 4") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC5,_T("Goto Tagged Location 5") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC6,_T("Goto Tagged Location 6") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC7,_T("Goto Tagged Location 7") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC8,_T("Goto Tagged Location 8") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC9,_T("Goto Tagged Location 9") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC10,_T("Goto Tagged Location 10") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC11,_T("Goto Tagged Location 11") );
|
|
accelManager.AddExtraCommand( _T("Tag Location"),ID_GOTO_LOC12,_T("Goto Tagged Location 12") );
|
|
*/
|
|
|
|
/*
|
|
// Tools extra commands.
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL1,_T("Tool1") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL2,_T("Tool2") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL3,_T("Tool3") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL4,_T("Tool4") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL5,_T("Tool5") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL6,_T("Tool6") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL7,_T("Tool7") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL8,_T("Tool8") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL9,_T("Tool9") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL10,_T("Tool10") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL11,_T("Tool11") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL12,_T("Tool12") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL13,_T("Tool13") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL14,_T("Tool14") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL15,_T("Tool15") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL16,_T("Tool16") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL17,_T("Tool17") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL18,_T("Tool18") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL19,_T("Tool19") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL20,_T("Tool20") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL21,_T("Tool21") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL22,_T("Tool22") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL23,_T("Tool23") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL24,_T("Tool24") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL25,_T("Tool25") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL26,_T("Tool26") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL27,_T("Tool27") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL28,_T("Tool28") );
|
|
accelManager.AddExtraCommand( _T("Tools"),ID_TOOL29,_T("Tool29") );
|
|
*/
|
|
|
|
// Initialize accelerator key manager.
|
|
//accelManager.Init(this, IDR_MAINFRAME, _T("Main Frame"), _T("MainFrameKeys"));
|
|
// initialize accelerator manager.
|
|
if (!InitAccelManager() )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::EnableAccelerator( bool bEnable )
|
|
{
|
|
if (bEnable)
|
|
{
|
|
CXTAccelManager &accelManager = CXTAccelManager::Get();
|
|
//LoadAccelTable( MAKEINTRESOURCE(IDR_MAINFRAME) );
|
|
accelManager.UpdateWindowAccelerator();
|
|
CLogFile::WriteLine( "Enable Accelerators" );
|
|
}
|
|
else
|
|
{
|
|
if (m_hAccelTable)
|
|
DestroyAcceleratorTable( m_hAccelTable );
|
|
m_hAccelTable = NULL;
|
|
LoadAccelTable( MAKEINTRESOURCE(IDR_GAMEACCELERATOR) );
|
|
CLogFile::WriteLine( "Disable Accelerators" );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::EditAccelerator()
|
|
{
|
|
// Open accelerator key manager dialog.
|
|
//accelManager.EditKeyboardShortcuts(this);
|
|
OnCustomizeBar();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::AddToolbarToAccel( const CString &name,CXTToolBar *toolbar )
|
|
{
|
|
assert( toolbar );
|
|
CXTAccelManager &accelManager = CXTAccelManager::Get();
|
|
for (int i = 0; i < toolbar->GetButtonCount(); i++)
|
|
{
|
|
CString str;
|
|
UINT cmdId = toolbar->GetItemID(i);
|
|
if (str.LoadString(cmdId) != 0)
|
|
{
|
|
accelManager.AddExtraCommand( name,cmdId,str );
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
bool CMainFrame::FindMenuPos(CMenu *pBaseMenu, UINT myID, CMenu * & pMenu, int & mpos)
|
|
{
|
|
// REMARK: pMenu is a pointer to a Cmenu-Pointer
|
|
int myPos;
|
|
if( pBaseMenu == NULL )
|
|
{
|
|
// Sorry, Wrong Number
|
|
pMenu = NULL;
|
|
mpos = -1;
|
|
return false;
|
|
}
|
|
for( myPos = pBaseMenu->GetMenuItemCount() -1; myPos >= 0; myPos-- )
|
|
{
|
|
int Status = pBaseMenu->GetMenuState( myPos, MF_BYPOSITION);
|
|
CMenu* mNewMenu;
|
|
|
|
if( Status == 0xFFFFFFFF )
|
|
{
|
|
// That was not an legal Menu/Position-Combination
|
|
pMenu = NULL;
|
|
mpos = -1;
|
|
return false;
|
|
}
|
|
// Is this the real one?
|
|
if( pBaseMenu->GetMenuItemID(myPos) == myID )
|
|
{
|
|
// Yep!
|
|
pMenu = pBaseMenu;
|
|
mpos = myPos;
|
|
return true;
|
|
}
|
|
// Maybe a subMenu?
|
|
mNewMenu = pBaseMenu->GetSubMenu(myPos);
|
|
// This function will return NULL if ther is NO SubMenu
|
|
if( mNewMenu != NULL )
|
|
{
|
|
// rekursive!
|
|
bool found = FindMenuPos( mNewMenu, myID, pMenu, mpos);
|
|
if(found)
|
|
return true; // return this loop
|
|
}
|
|
// I have to check the next in my loop
|
|
}
|
|
return false; // iterate in the upper stackframe
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::DeleteToolsFromMenu( CMenu *menu )
|
|
{
|
|
int pos = 0;
|
|
while (pos < menu->GetMenuItemCount())
|
|
{
|
|
int status = menu->GetMenuState( pos, MF_BYPOSITION);
|
|
if (status == 0xFFFFFFFF)
|
|
{
|
|
// That was not an legal Menu/Position-Combination
|
|
return;
|
|
}
|
|
UINT mId = menu->GetMenuItemID(pos);
|
|
if (mId >= ID_TOOL2 && mId <= ID_TOOL30)
|
|
{
|
|
// Delete this item.
|
|
menu->DeleteMenu( pos,MF_BYPOSITION );
|
|
}
|
|
else
|
|
{
|
|
pos++;
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::UpdateTools()
|
|
{
|
|
CMenu *pMenu = m_wndMenuBar.GetMenu();
|
|
int m_Pos = 0;
|
|
CMenu *pmMenu = pMenu;
|
|
|
|
bool res = FindMenuPos( pMenu, ID_TOOL1, pmMenu, m_Pos );
|
|
if (pmMenu && res)
|
|
{
|
|
DeleteToolsFromMenu( pmMenu );
|
|
//pmMenu->DeleteMenu( m_Pos,MF_BYPOSITION );
|
|
CExternalToolsManager *pTools = GetIEditor()->GetExternalToolsManager();
|
|
for (int i = 0; i < pTools->GetToolsCount(); i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
// Replace Tool1.
|
|
pmMenu->ModifyMenu( m_Pos+i,MF_BYPOSITION|MF_STRING, ID_TOOL1+i, pTools->GetTool(i)->m_title );
|
|
}
|
|
else
|
|
pmMenu->InsertMenu( m_Pos+i,MF_BYPOSITION|MF_STRING, ID_TOOL1+i, pTools->GetTool(i)->m_title );
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
|
|
{
|
|
if (nIDEvent == AUTOSAVE_TIMER_EVENT && gSettings.autoBackupEnabled)
|
|
{
|
|
// Call autosave function of CryEditApp.
|
|
((CCryEditApp*)AfxGetApp())->SaveAutoBackup();
|
|
}
|
|
if (nIDEvent == AUTOREMIND_TIMER_EVENT && gSettings.autoRemindTime > 0)
|
|
{
|
|
// Remind to save.
|
|
((CCryEditApp*)AfxGetApp())->SaveAutoRemind();
|
|
}
|
|
|
|
CXTFrameWnd::OnTimer(nIDEvent);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnEditNextSelectionMask()
|
|
{
|
|
m_editModeBar.NextSelectMask();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::ShowDataBaseDialog( bool bShow )
|
|
{
|
|
ShowControlBar( &m_wndDataBaseBar,bShow,TRUE );
|
|
m_wndDataBaseBar.Invalidate();
|
|
//m_wndDataBase.RedrawWindow( NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
bool CMainFrame::IsDockedWindowChild( CWnd *pWnd )
|
|
{
|
|
if (!pWnd)
|
|
return false;
|
|
if (pWnd->IsChild(&m_wndDataBaseBar))
|
|
return true;
|
|
if (pWnd->IsChild(&m_wndRollUpBar))
|
|
return true;
|
|
if (pWnd->IsChild(&m_wndConsoleBar))
|
|
return true;
|
|
if (pWnd->IsChild(&m_wndTrackViewBar))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CMainFrame::OnProgressBarCancel()
|
|
{
|
|
CWaitProgress::CancelCurrent();
|
|
}
|