2009-05-08 13:28:41 +00:00
/*
* OpenClonk , http : //www.openclonk.org
*
2009-06-05 13:41:20 +00:00
* Copyright ( c ) 2005 - 2006 Sven Eberhardt
* Copyright ( c ) 2007 Matthes Bender
* Copyright ( c ) 2008 G ü nther Brammer
* Copyright ( c ) 2009 Nicolas Hake
2009-05-08 13:28:41 +00:00
* Copyright ( c ) 2005 - 2009 , RedWolf Design GmbH , http : //www.clonk.de
*
* Portions might be copyrighted by other authors who have contributed
* to OpenClonk .
*
* Permission to use , copy , modify , and / or distribute this software for any
* purpose with or without fee is hereby granted , provided that the above
* copyright notice and this permission notice appear in all copies .
* See isc_license . txt for full license and disclaimer .
*
* " Clonk " is a registered trademark of Matthes Bender .
* See clonk_trademark_license . txt for full license .
*/
// Startup screen for non-parameterized engine start: Scenario selection dialog
# ifndef INC_C4StartupScenSelDlg
# define INC_C4StartupScenSelDlg
# include "C4Startup.h"
# include "C4Scenario.h"
# include "C4Folder.h"
# include <list>
# include <string>
class C4StartupScenSelDlg ;
const int32_t C4StartupScenSel_DefaultIcon_Scenario = 14 ,
2010-03-28 17:58:21 +00:00
C4StartupScenSel_DefaultIcon_Folder = 0 ,
C4StartupScenSel_DefaultIcon_WinFolder = 44 ,
C4StartupScenSel_DefaultIcon_OldIconBG = 18 ,
C4StartupScenSel_IconCount = 45 ,
C4StartupScenSel_TitlePictureWdt = 200 ,
C4StartupScenSel_TitlePictureHgt = 150 ,
C4StartupScenSel_TitlePicturePadding = 10 ,
C4StartupScenSel_TitleOverlayMargin = 10 ; // number of pixels to each side of title overlay picture
2009-05-08 13:28:41 +00:00
// a list of loaded scenarios
class C4ScenarioListLoader
2010-03-28 17:58:21 +00:00
{
public :
class Folder ;
// either a scenario or scenario folder; manages singly linked tree
class Entry
2009-05-08 13:28:41 +00:00
{
2010-03-28 17:58:21 +00:00
protected :
Entry * pNext ;
class Folder * pParent ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
friend class Folder ;
protected :
2010-12-05 17:57:06 +00:00
StdStrBuf sName , sFilename , sDesc , sVersion , sAuthor ;
2010-03-28 17:58:21 +00:00
C4FacetSurface fctIcon , fctTitle ;
bool fBaseLoaded , fExLoaded ;
int iIconIndex ;
int iDifficulty ;
int iFolderIndex ;
2009-05-08 13:28:41 +00:00
public :
2010-03-28 17:58:21 +00:00
Entry ( class Folder * pParent ) ;
virtual ~ Entry ( ) ; // dtor: unlink from tree
bool Load ( C4Group * pFromGrp , const StdStrBuf * psFilename , bool fLoadEx ) ; // load as child if pFromGrp, else directly from filename
virtual bool LoadCustom ( C4Group & rGrp , bool fNameLoaded , bool fIconLoaded ) { return true ; } // load custom data for entry type (e.g. scenario title fallback in Scenario.txt)
virtual bool LoadCustomPre ( C4Group & rGrp ) { return true ; } // preload stuff that's early in the group (Scenario.txt)
virtual bool Start ( ) = 0 ; // start/open entry
virtual Folder * GetIsFolder ( ) { return NULL ; } // return this if this is a folder
const StdStrBuf & GetName ( ) const { return sName ; }
const StdStrBuf & GetEntryFilename ( ) const { return sFilename ; }
const StdStrBuf & GetVersion ( ) const { return sVersion ; }
const StdStrBuf & GetAuthor ( ) const { return sAuthor ; }
const C4Facet & GetIconFacet ( ) const { return fctIcon ; }
const C4Facet & GetTitlePicture ( ) const { return fctTitle ; }
const StdStrBuf & GetDesc ( ) const { return sDesc ; }
int GetIconIndex ( ) { return iIconIndex ; }
int GetDifficulty ( ) { return iDifficulty ; }
int GetFolderIndex ( ) { return iFolderIndex ; }
Entry * GetNext ( ) const { return pNext ; }
class Folder * GetParent ( ) const { return pParent ; }
virtual StdStrBuf GetTypeName ( ) = 0 ;
static Entry * CreateEntryForFile ( const StdStrBuf & sFilename , Folder * pParent ) ; // create correct entry type based on file extension
virtual bool CanOpen ( StdStrBuf & sError ) { return true ; } // whether item can be started/opened (e.g. mission access, unregistered)
virtual bool IsGrayed ( ) { return false ; } // additional condition for graying out - notice unreg folders are grayed but can still be opened
virtual bool HasMissionAccess ( ) const { return true ; }
virtual bool HasUnregisteredAccess ( ) const { return false ; }
virtual StdStrBuf GetOpenText ( ) = 0 ; // get open button text
virtual StdStrBuf GetOpenTooltip ( ) = 0 ;
virtual const char * GetDefaultExtension ( ) { return NULL ; } // extension to be added when item is renamed
virtual bool SetTitleInGroup ( C4Group & rGrp , const char * szNewTitle ) ;
bool RenameTo ( const char * szNewName ) ; // change name+filename
virtual bool IsScenario ( ) { return false ; }
} ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
// a loaded scenario to be started
class Scenario : public Entry
{
2009-05-08 13:28:41 +00:00
private :
2010-03-28 17:58:21 +00:00
C4Scenario C4S ;
bool fNoMissionAccess ;
int32_t iMinPlrCount ;
2009-05-08 13:28:41 +00:00
public :
2010-03-28 17:58:21 +00:00
Scenario ( class Folder * pParent ) : Entry ( pParent ) , fNoMissionAccess ( false ) , iMinPlrCount ( 0 ) { }
virtual ~ Scenario ( ) { }
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
virtual bool LoadCustom ( C4Group & rGrp , bool fNameLoaded , bool fIconLoaded ) ; // do fallbacks for title and icon; check whether scenario is valid
virtual bool LoadCustomPre ( C4Group & rGrp ) ; // load scenario core
virtual bool Start ( ) ; // launch scenario!
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
virtual bool CanOpen ( StdStrBuf & sError ) ; // check mission access, player count, etc.
virtual bool IsGrayed ( ) { return false ; } // additional option for graying out
virtual bool HasMissionAccess ( ) const { return ! fNoMissionAccess ; } ; // check mission access only
virtual StdStrBuf GetOpenText ( ) ; // get open button text
virtual StdStrBuf GetOpenTooltip ( ) ;
const C4Scenario & GetC4S ( ) const { return C4S ; } // get scenario core
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
virtual StdStrBuf GetTypeName ( ) { return StdCopyStrBuf ( LoadResStr ( " IDS_TYPE_SCENARIO " ) , true ) ; }
2009-05-08 13:28:41 +00:00
2011-03-13 15:11:55 +00:00
virtual const char * GetDefaultExtension ( ) { return " ocs " ; }
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
virtual bool IsScenario ( ) { return true ; }
} ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
// scenario folder
class Folder : public Entry
{
protected :
C4Folder C4F ;
bool fContentsLoaded ; // if set, directory contents are already loaded
Entry * pFirst ; // tree structure
class C4MapFolderData * pMapData ; // if set, contains gfx and data for special map-style folders
friend class Entry ;
2009-05-08 13:28:41 +00:00
public :
2010-03-28 17:58:21 +00:00
Folder ( Folder * pParent ) : Entry ( pParent ) , fContentsLoaded ( false ) , pFirst ( NULL ) , pMapData ( NULL ) { }
virtual ~ Folder ( ) ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
virtual bool LoadCustomPre ( C4Group & rGrp ) ; // load folder core
bool LoadContents ( C4ScenarioListLoader * pLoader , C4Group * pFromGrp , const StdStrBuf * psFilename , bool fLoadEx , bool fReload ) ; // load folder contents as child if pFromGrp, else directly from filename
uint32_t GetEntryCount ( ) const ;
2009-05-08 13:28:41 +00:00
protected :
2010-03-28 17:58:21 +00:00
void ClearChildren ( ) ;
void Sort ( ) ;
virtual bool DoLoadContents ( C4ScenarioListLoader * pLoader , C4Group * pFromGrp , const StdStrBuf & sFilename , bool fLoadEx ) = 0 ; // load folder contents as child if pFromGrp, else directly from filename
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
public :
virtual bool Start ( ) ; // open as subfolder
virtual Folder * GetIsFolder ( ) { return this ; } // this is a folder
Entry * GetFirstEntry ( ) const { return pFirst ; }
void Resort ( ) { Sort ( ) ; }
Entry * FindEntryByName ( const char * szFilename ) const ; // find entry by filename comparison
virtual bool CanOpen ( StdStrBuf & sError ) { return true ; } // can always open folders
virtual bool IsGrayed ( ) ; // unreg folders can be opened to view stuff but they are still grayed out for clarity
virtual StdStrBuf GetOpenText ( ) ; // get open button text
virtual StdStrBuf GetOpenTooltip ( ) ;
C4MapFolderData * GetMapData ( ) const { return pMapData ; }
} ;
2009-05-08 13:28:41 +00:00
2011-03-13 15:38:33 +00:00
// .ocf subfolder: Read through by group
2010-03-28 17:58:21 +00:00
class SubFolder : public Folder
{
2009-05-08 13:28:41 +00:00
public :
2010-03-28 17:58:21 +00:00
SubFolder ( Folder * pParent ) : Folder ( pParent ) { }
virtual ~ SubFolder ( ) { }
2011-03-13 15:38:33 +00:00
virtual const char * GetDefaultExtension ( ) { return " ocf " ; }
2010-03-28 17:58:21 +00:00
virtual StdStrBuf GetTypeName ( ) { return StdCopyStrBuf ( LoadResStr ( " IDS_TYPE_FOLDER " ) , true ) ; }
protected :
virtual bool LoadCustom ( C4Group & rGrp , bool fNameLoaded , bool fIconLoaded ) ; // load custom data for entry type - icon fallback to folder icon
virtual bool DoLoadContents ( C4ScenarioListLoader * pLoader , C4Group * pFromGrp , const StdStrBuf & sFilename , bool fLoadEx ) ; // load folder contents as child if pFromGrp, else directly from filename
} ;
// regular, open folder: Read through by directory iterator
class RegularFolder : public Folder
{
public :
RegularFolder ( Folder * pParent ) : Folder ( pParent ) { }
virtual ~ RegularFolder ( ) ;
virtual StdStrBuf GetTypeName ( ) { return StdCopyStrBuf ( LoadResStr ( " IDS_TYPE_DIRECTORY " ) , true ) ; }
void Merge ( const char * szPath ) ;
protected :
virtual bool LoadCustom ( C4Group & rGrp , bool fNameLoaded , bool fIconLoaded ) ; // load custom data for entry type - icon fallback to folder icon
virtual bool DoLoadContents ( C4ScenarioListLoader * pLoader , C4Group * pFromGrp , const StdStrBuf & sFilename , bool fLoadEx ) ; // load folder contents as child if pFromGrp, else directly from filename
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
typedef std : : list < std : : string > NameList ;
NameList contents ;
2009-05-08 13:28:41 +00:00
} ;
2010-03-28 17:58:21 +00:00
private :
RegularFolder * pRootFolder ;
Folder * pCurrFolder ; // scenario list in working directory
int32_t iLoading , iProgress , iMaxProgress ;
bool fAbortThis , fAbortPrevious ; // activity state
public :
C4ScenarioListLoader ( ) ;
~ C4ScenarioListLoader ( ) ;
private :
// activity control (to be replaced by true multithreading)
bool BeginActivity ( bool fAbortPrevious ) ;
void EndActivity ( ) ;
public :
bool DoProcessCallback ( int32_t iProgress , int32_t iMaxProgress ) ; // returns false if the activity was aborted
public :
bool Load ( const StdStrBuf & sRootFolder ) ; // (unthreaded) loading of all entries in root folder
bool Load ( Folder * pSpecifiedFolder , bool fReload ) ; // (unthreaded) loading of all entries in subfolder
bool LoadExtended ( Entry * pEntry ) ; // (unthreaded) loading of desc and title image of specified entry
bool FolderBack ( ) ; // go upwards by one folder
bool ReloadCurrent ( ) ; // reload file list
bool IsLoading ( ) const { return ! ! iLoading ; }
Entry * GetFirstEntry ( ) const { return pCurrFolder ? pCurrFolder - > GetFirstEntry ( ) : NULL ; }
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
Folder * GetCurrFolder ( ) const { return pCurrFolder ; }
Folder * GetRootFolder ( ) const { return pRootFolder ; }
int32_t GetProgress ( ) const { return iProgress ; }
int32_t GetMaxProgress ( ) const { return iMaxProgress ; }
int32_t GetProgressPercent ( ) const { return iProgress * 100 / Max < int32_t > ( iMaxProgress , 1 ) ; }
} ;
2009-05-08 13:28:41 +00:00
// -----------------------------------------------
2010-03-28 17:58:21 +00:00
// for map-style folders: Data for map display
class C4MapFolderData
{
private :
struct Scenario
2009-05-08 13:28:41 +00:00
{
2010-03-28 17:58:21 +00:00
// compiled data
StdStrBuf sFilename ;
StdStrBuf sBaseImage , sOverlayImage ;
// parameters for title as drawn on the map (if desired; otherwise sTitle empty)
StdStrBuf sTitle ;
int32_t iTitleFontSize ;
uint32_t dwTitleInactClr , dwTitleActClr ;
int32_t iTitleOffX , iTitleOffY ;
uint8_t byTitleAlign ;
bool fTitleBookFont ;
bool fImgDump ; // developer help: Dump background image part
C4Rect rcOverlayPos ;
FLOAT_RECT rcfOverlayPos ;
// set during initialization
C4FacetSurface fctBase , fctOverlay ;
C4ScenarioListLoader : : Entry * pScenEntry ;
C4GUI : : Button * pBtn ; // used to resolve button events to scenario
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
void CompileFunc ( StdCompiler * pComp ) ;
} ;
struct AccessGfx
{
// compiled data
StdStrBuf sPassword ;
StdStrBuf sOverlayImage ;
C4Rect rcOverlayPos ;
FLOAT_RECT rcfOverlayPos ;
// set during initialization
C4FacetSurface fctOverlay ;
void CompileFunc ( StdCompiler * pComp ) ;
} ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
// non-interactive map item
class MapPic : public C4GUI : : Picture
{
2009-05-08 13:28:41 +00:00
private :
2010-03-28 17:58:21 +00:00
FLOAT_RECT rcfBounds ; // drawing bounds
public :
MapPic ( const FLOAT_RECT & rcfBounds , const C4Facet & rfct ) ; // ctor
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
protected :
virtual void MouseInput ( C4GUI : : CMouse & rMouse , int32_t iButton , int32_t iX , int32_t iY , DWORD dwKeyParam ) ; // input: mouse movement or buttons - deselect everything if clicked
virtual void DrawElement ( C4TargetFacet & cgo ) ; // draw the image
} ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
private :
C4FacetSurface fctBackgroundPicture ; FLOAT_RECT rcfBG ;
bool fCoordinatesAdjusted ;
C4Rect rcScenInfoArea ; // area in which scenario info is displayed
class C4ScenarioListLoader : : Folder * pScenarioFolder ;
class C4ScenarioListLoader : : Entry * pSelectedEntry ;
C4GUI : : TextWindow * pSelectionInfoBox ;
int32_t MinResX , MinResY ; // minimum resolution for display of the map
bool fUseFullscreenMap ;
Scenario * * ppScenList ; int32_t iScenCount ;
AccessGfx * * ppAccessGfxList ; int32_t iAccessGfxCount ;
class C4StartupScenSelDlg * pMainDlg ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
public :
C4MapFolderData ( ) : fCoordinatesAdjusted ( false ) , ppScenList ( NULL ) , iScenCount ( 0 ) , ppAccessGfxList ( NULL ) , iAccessGfxCount ( 0 ) , pMainDlg ( NULL ) { }
~ C4MapFolderData ( ) { Clear ( ) ; }
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
private :
void ConvertFacet2ScreenCoord ( const C4Rect & rc , FLOAT_RECT * pfrc , float fBGZoomX , float fBGZoomY , int iOffX , int iOffY ) ;
void ConvertFacet2ScreenCoord ( int32_t * piValue , float fBGZoom , int iOff ) ;
void ConvertFacet2ScreenCoord ( C4Rect & rcMapArea , bool fAspect ) ; // adjust coordinates of loaded facets so they match given area
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
protected :
void OnButtonScenario ( C4GUI : : Control * pEl ) ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
friend class C4StartupScenSelDlg ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
public :
void Clear ( ) ;
bool Load ( C4Group & hGroup , C4ScenarioListLoader : : Folder * pScenLoaderFolder ) ;
void CompileFunc ( StdCompiler * pComp ) ;
void CreateGUIElements ( C4StartupScenSelDlg * pMainDlg , C4GUI : : Window & rContainer ) ;
void ResetSelection ( ) ;
C4GUI : : TextWindow * GetSelectionInfoBox ( ) const { return pSelectionInfoBox ; }
C4ScenarioListLoader : : Entry * GetSelectedEntry ( ) const { return pSelectedEntry ; }
} ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
// -----------------------------------------------
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
// startup dialog: Scenario selection
class C4StartupScenSelDlg : public C4StartupDlg
{
public :
// one item in the scenario list
class ScenListItem : public C4GUI : : Window
{
2009-05-08 13:28:41 +00:00
private :
2010-03-28 17:58:21 +00:00
typedef C4GUI : : Window BaseClass ;
// subcomponents
C4GUI : : Picture * pIcon ; // item icon
C4GUI : : Label * pNameLabel ; // item caption
C4ScenarioListLoader : : Entry * pScenListEntry ; // associated, loaded item info
2009-05-08 13:28:41 +00:00
public :
2010-03-28 17:58:21 +00:00
ScenListItem ( C4GUI : : ListBox * pForListBox , C4ScenarioListLoader : : Entry * pForEntry , C4GUI : : Element * pInsertBeforeElement = NULL ) ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
protected :
struct RenameParams { } ;
void AbortRenaming ( RenameParams par ) ;
C4GUI : : RenameEdit : : RenameResult DoRenaming ( RenameParams par , const char * szNewName ) ;
public :
bool KeyRename ( ) ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
protected :
virtual void UpdateOwnPos ( ) ; // recalculate item positioning
virtual void MouseInput ( C4GUI : : CMouse & rMouse , int32_t iButton , int32_t iX , int32_t iY , DWORD dwKeyParam ) ;
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
void Update ( ) { }
2009-05-08 13:28:41 +00:00
2010-03-28 17:58:21 +00:00
public :
C4ScenarioListLoader : : Entry * GetEntry ( ) const { return pScenListEntry ; }
ScenListItem * GetNext ( ) { return static_cast < ScenListItem * > ( BaseClass : : GetNext ( ) ) ; }
virtual bool CheckNameHotkey ( const char * c ) ; // return whether this item can be selected by entering given char
2009-05-08 13:28:41 +00:00
} ;
2010-03-28 17:58:21 +00:00
public :
C4StartupScenSelDlg ( bool fNetwork ) ; // ctor
~ C4StartupScenSelDlg ( ) ; // dtor
private :
enum { ShowStyle_Book = 0 , ShowStyle_Map = 1 } ;
enum { IconLabelSpacing = 2 } ; // space between an icon and its text
// book style scenario selection
C4GUI : : Label * pScenSelCaption ; // caption label atop scenario list; indicating current folder
C4GUI : : ListBox * pScenSelList ; // left page of book: Scenario selection
C4GUI : : Label * pScenSelProgressLabel ; // progress label shown while scenario list is being generated
C4GUI : : TextWindow * pSelectionInfo ; // used to display the description of the current selection
C4KeyBinding * pKeyRefresh , * pKeyBack , * pKeyForward , * pKeyRename , * pKeyDelete , * pKeyCheat ;
class C4GameOptionButtons * pGameOptionButtons ;
C4GUI : : Button * pOpenBtn ;
C4GUI : : Tabular * pScenSelStyleTabular ;
C4ScenarioListLoader * pScenLoader ;
// map style scenario selection
C4MapFolderData * pMapData ;
C4Facet * pfctBackground ;
bool fIsInitialLoading ;
bool fStartNetworkGame ;
C4GUI : : RenameEdit * pRenameEdit ;
public :
static C4StartupScenSelDlg * pInstance ; // singleton
protected :
virtual int32_t GetMarginTop ( ) { return ( rcBounds . Hgt / 7 ) ; }
virtual bool HasBackground ( ) { return true ; }
virtual void DrawElement ( C4TargetFacet & cgo ) ;
virtual bool OnEnter ( ) { DoOK ( ) ; return true ; }
virtual bool OnEscape ( ) { DoBack ( true ) ; return true ; }
bool KeyBack ( ) { return DoBack ( true ) ; }
bool KeyRefresh ( ) { DoRefresh ( ) ; return true ; }
bool KeyForward ( ) { DoOK ( ) ; return true ; }
bool KeyRename ( ) ;
bool KeyDelete ( ) ;
bool KeyCheat ( ) ;
void KeyCheat2 ( const StdStrBuf & rsCheatCode ) ;
void DeleteConfirm ( ScenListItem * pSel ) ;
virtual void OnShown ( ) ; // callback when shown: Init file list
virtual void OnClosed ( bool fOK ) ; // callback when dlg got closed: Return to main screen
void OnBackBtn ( C4GUI : : Control * btn ) { DoBack ( true ) ; }
void OnNextBtn ( C4GUI : : Control * btn ) { DoOK ( ) ; }
void OnSelChange ( class C4GUI : : Element * pEl ) { UpdateSelection ( ) ; }
void OnSelDblClick ( class C4GUI : : Element * pEl ) { DoOK ( ) ; }
void OnButtonScenario ( C4GUI : : Control * pEl ) ;
friend class C4MapFolderData ;
private :
void UpdateList ( ) ;
void UpdateSelection ( ) ;
void ResortFolder ( ) ;
ScenListItem * GetSelectedItem ( ) ;
C4ScenarioListLoader : : Entry * GetSelectedEntry ( ) ;
void SetOpenButtonDefaultText ( ) ;
void FocusScenList ( ) ;
public :
bool StartScenario ( C4ScenarioListLoader : : Scenario * pStartScen ) ;
bool OpenFolder ( C4ScenarioListLoader : : Folder * pNewFolder ) ;
void ProcessCallback ( ) { UpdateList ( ) ; } // process callback by loader
bool DoOK ( ) ; // open/start currently selected item
bool DoBack ( bool fAllowClose ) ; // back folder, or abort dialog
void DoRefresh ( ) ; // refresh file list
void DeselectAll ( ) ; // reset focus and update selection info
void StartRenaming ( C4GUI : : RenameEdit * pNewRenameEdit ) ;
void AbortRenaming ( ) ;
bool IsRenaming ( ) const { return ! ! pRenameEdit ; }
void SetRenamingDone ( ) { pRenameEdit = NULL ; }
void SetBackground ( C4Facet * pNewBG ) { pfctBackground = pNewBG ; }
bool IsNetworkStart ( ) const { return fStartNetworkGame ; }
friend class ScenListItem ;
} ;
2009-05-08 13:28:41 +00:00
# endif // INC_C4StartupScenSelDlg