/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program 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 3 of the License, or
(at your option) any later version.
This program 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 this program. If not, see .
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include "hsWindows.h"
#include "hsTypes.h"
#include "hsTemplates.h"
#include
#include
using std::vector;
class ISpinnerControl;
class plAgeDescription;
class plAgeFile;
typedef struct _TREEITEM *HTREEITEM;
class MaxAssBranchAccess;
class plAgeDescInterface
{
protected:
HWND fhDlg;
bool fDirty;
int fCurAge;
ISpinnerControl *fSpin;
ISpinnerControl *fCapSpin;
ISpinnerControl *fSeqPrefixSpin;
HTREEITEM fCurrAgeItem;
bool fCurrAgeCheckedOut;
char fCheckedOutPath[ MAX_PATH ];
bool fForceSeqNumLocal;
HTREEITEM fAssetManBranch, fLocalBranch;
HFONT fBoldFont;
HBRUSH fHiliteBrush;
vector fAgeFiles;
// vector<_variant_t> fAssetIds;
MaxAssBranchAccess *fAssetManIface;
plAgeDescInterface();
public:
~plAgeDescInterface();
static plAgeDescInterface& Instance();
// Open the dialog
void Open();
static BOOL CALLBACK ForwardDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
static void BuildAgeFileList( hsTArray &ageList );
protected:
static int IFindAge(const char* ageName, vector& ageFiles);
static void IGetAgeFiles(vector& ageFiles);
static void IClearAgeFiles(vector& ageFiles);
void IResetParams();
void IInitControls();
void ISetControlDefaults();
void IEnableControls(bool enable);
void IEnablePageControls(bool enable);
void ICheckedPageFlag(int ctrlID);
// Save the settings for the last age and load the settings for the currently one
void IUpdateCurAge();
void ISaveCurAge( const char *path, hsBool checkSeqNum = false );
void ILoadAge( const char *path, hsBool checkSeqNum = false );
static bool IGetLocalAgePath(char *path);
// Fill out the age tree view
void IFillAgeTree( void );
// Create a new age file and select it in the browser
void INewAge();
void INewPage();
UInt32 IGetNextFreeSequencePrefix( hsBool getReservedPrefix );
UInt32 IGetFreePageSeqSuffix( HWND pageCombo );
void ICheckOutCurrentAge( void );
void ICheckInCurrentAge( void );
void IUndoCheckOutCurrentAge( void );
hsBool IMakeSureCheckedIn( void );
plAgeFile* IGetCurrentAge( void );
void IInvalidateCheckOutIndicator( void );
void ICheckSequenceNumber( plAgeDescription &aged );
};