]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/preferences.h
* fixed warnings
[xonotic/netradiant.git] / radiant / preferences.h
index 581c8fe780dcfc464b494553c33d33ab02510d3b..9fc92ac20b9283f5bfe4573ea9564d3ccf71f710 100644 (file)
@@ -50,7 +50,7 @@ public:
   PrefTypes_t mType;
   void *mVal;
 
   PrefTypes_t mType;
   void *mVal;
 
-  CPrefAssignment(char *name, PrefTypes_t Type, void *Val)
+  CPrefAssignment(const char *name, PrefTypes_t Type, void *Val)
   {
     mName = name; mType = Type; mVal = Val;
   }
   {
     mName = name; mType = Type; mVal = Val;
   }
@@ -86,7 +86,7 @@ private:
   /*!
   store assignment in the property list if not already there
   */
   /*!
   store assignment in the property list if not already there
   */
-  void PushAssignment(char *name, PrefTypes_t type, void *pV);
+  void PushAssignment(const char *name, PrefTypes_t type, void *pV);
 
   /*!
   find the xmlnode relating to the epair name
 
   /*!
   find the xmlnode relating to the epair name
@@ -95,7 +95,7 @@ private:
 
 public:
   CXMLPropertyBag();
 
 public:
   CXMLPropertyBag();
-  virtual ~CXMLPropertyBag() 
+  virtual ~CXMLPropertyBag()
   {
     if (InUse())
       Clear();
   {
     if (InUse())
       Clear();
@@ -110,12 +110,12 @@ public:
     (name, type and pointer to value)
     this is used in UpdatePrefTree
   */
     (name, type and pointer to value)
     this is used in UpdatePrefTree
   */
-  void GetPref(char *name, Str *pV, char *V);
-  void GetPref(char *name, int *pV, int V);
-  void GetPref(char *name, bool *pV, bool V);
-  void GetPref(char *name, float *pV, float V);
-  void GetPref(char *name, float *pV, float* V);
-  void GetPref(char *name, window_position_t* pV, window_position_t V);
+  void GetPref(const char *name, Str *pV, const char *V);
+  void GetPref(const char *name, int *pV, int V);
+  void GetPref(const char *name, bool *pV, bool V);
+  void GetPref(const char *name, float *pV, float V);
+  void GetPref(const char *name, float *pV, float* V);
+  void GetPref(const char *name, window_position_t* pV, window_position_t V);
 
   /*!
   returns whether or not the property bag is already open
 
   /*!
   returns whether or not the property bag is already open
@@ -180,6 +180,7 @@ public:
   bool mEClassSingleLoad; ///< only load a single eclass definition file
   bool mNoPatch; ///< this game doesn't support patch technology
   Str mCaulkShader; ///< the shader to use for caulking
   bool mEClassSingleLoad; ///< only load a single eclass definition file
   bool mNoPatch; ///< this game doesn't support patch technology
   Str mCaulkShader; ///< the shader to use for caulking
+  bool quake2; ///< set this to true to get quake2
 
   CGameDescription() { mpDoc = NULL; }
   /*!
 
   CGameDescription() { mpDoc = NULL; }
   /*!
@@ -193,6 +194,50 @@ public:
   void Dump();
 };
 
   void Dump();
 };
 
+/*!
+select games, copy editing assets and write out configuration files
+ */
+
+#define Q3_PACK "Q3Pack"
+#define URT_PACK "UrTPack"
+#define UFOAI_PACK "UFOAIPack"
+#define Q2W_PACK "Q2WPack"
+#define WARSOW_PACK "WarsowPack"
+#define NEXUIZ_PACK "NexuizPack"
+#define Q2_PACK "Q2Pack"
+
+class CGameInstall : public Dialog {
+public:
+       CGameInstall();
+       void ScanGames();
+       void Run();
+       void BuildDialog();
+
+       static void OnBtnBrowseEngine( GtkWidget *widget, gpointer data );
+       static void OnGameSelectChanged( GtkWidget *widget, gpointer data );
+
+       enum gameType_e {
+               GAME_NONE = 0,
+               GAME_Q3 = 1,
+               GAME_URT,
+               GAME_UFOAI,
+               GAME_Q2W,
+               GAME_WARSOW,
+               GAME_NEXUIZ,
+               GAME_Q2,
+               GAME_COUNT
+       };
+
+protected:
+       Str             m_strName;
+       Str             m_strMod;
+       Str             m_strEngine;
+       int             m_nComboSelect;
+
+       // maps from m_nComboSelect to the games
+       int     m_availGames[GAME_COUNT];
+};
+
 /*!
 standalone dialog for games selection, and more generally global settings
 */
 /*!
 standalone dialog for games selection, and more generally global settings
 */
@@ -201,6 +246,7 @@ class CGameDialog : public Dialog
   GtkWidget *mFrame; ///< this is built on-demand first time it's used
   GtkWidget *mTopBox; ///< top level box used to store the dialog frame, must unhook after modal use
 
   GtkWidget *mFrame; ///< this is built on-demand first time it's used
   GtkWidget *mTopBox; ///< top level box used to store the dialog frame, must unhook after modal use
 
+  GtkComboBox  *mGameCombo;    // combo box holds the selection of available game
 
   /*!
   global prefs storage
 
   /*!
   global prefs storage
@@ -217,14 +263,18 @@ class CGameDialog : public Dialog
   static bool m_bNetRun;
 #endif
 
   static bool m_bNetRun;
 #endif
 
+  bool m_bDoGameInstall;
+
+  CGameInstall mGameInstall;
+
 protected:
 protected:
-  
+
   int m_nComboSelect; ///< intermediate int value for combo in dialog box
 
 public:
 
   int m_nComboSelect; ///< intermediate int value for combo in dialog box
 
 public:
 
-  /*! 
-  those settings are saved in the global prefs file 
+  /*!
+  those settings are saved in the global prefs file
   I'm too lazy to wrap behind protected access, not sure this needs to be public
   NOTE: those are preference settings. if you change them it is likely that you would
   have to restart the editor for them to take effect
   I'm too lazy to wrap behind protected access, not sure this needs to be public
   NOTE: those are preference settings. if you change them it is likely that you would
   have to restart the editor for them to take effect
@@ -258,11 +308,18 @@ public:
   */
   list<CGameDescription *> mGames;
 
   */
   list<CGameDescription *> mGames;
 
-  CGameDialog() { mFrame = NULL; m_pCurrentGameDescription = NULL; m_bLogConsole = false; m_bForceLogConsole = false; }
-  virtual ~CGameDialog(); 
+  CGameDialog() {
+         mFrame = NULL;
+         m_pCurrentGameDescription = NULL;
+         m_bLogConsole = false;
+         m_bForceLogConsole = false;
+         m_bDoGameInstall = true;      // go through DoModal at least once
+         mGameCombo = NULL;
+  }
+  virtual ~CGameDialog();
+
+  void AddPacksURL( Str &s );
 
 
-  void AddPacksURL(Str &s);  
-    
   /*!
   intialize the game dialog, called at CPrefsDlg::Init
   will scan for games, load prefs, and do game selection dialog if needed
   /*!
   intialize the game dialog, called at CPrefsDlg::Init
   will scan for games, load prefs, and do game selection dialog if needed
@@ -275,16 +332,21 @@ public:
   void Reset();
 
   /*!
   void Reset();
 
   /*!
-  run the dialog UI for the list of games 
+  run the dialog UI for the list of games
   */
   void DoGameDialog();
 
   */
   void DoGameDialog();
 
+  /*!
+       call out to the game installation dialog
+  */
+  void DoGameInstall();
+
   /*!
   Dialog API
   this is only called when the dialog is built at startup for main engine select
   */
   /*!
   Dialog API
   this is only called when the dialog is built at startup for main engine select
   */
-  void BuildDialog ();
-  void UpdateData (bool retrieve);
+  void BuildDialog();
+  void UpdateData( bool retrieve );
 
   /*!
   construction of the dialog frame
 
   /*!
   construction of the dialog frame
@@ -309,7 +371,7 @@ public:
 
   /*!
   read or set netrun (check file)
 
   /*!
   read or set netrun (check file)
-  \param retrieve 
+  \param retrieve
     if false, will check if netrun file is present and will set m_bNetRun
     if true, will create/erase the netrun file depending on m_bNetRun
     NOTE: this is not backwards, 'retrieve' means 'retrieve from settings dialog' - in terms of UI
     if false, will check if netrun file is present and will set m_bNetRun
     if true, will create/erase the netrun file depending on m_bNetRun
     NOTE: this is not backwards, 'retrieve' means 'retrieve from settings dialog' - in terms of UI
@@ -335,12 +397,19 @@ private:
   uses m_nComboItem to find the right mGames
   */
   CGameDescription *GameDescriptionForComboItem();
   uses m_nComboItem to find the right mGames
   */
   CGameDescription *GameDescriptionForComboItem();
+
+  /*!
+       callback for the game install button
+  */
+  static void SInstallCallback( GtkWidget *widget, gpointer data );
+
+  void UpdateGameCombo();
 };
 
 typedef struct {
   int nEntitySplit1;
   int nEntitySplit2;
 };
 
 typedef struct {
   int nEntitySplit1;
   int nEntitySplit2;
-  
+
   window_position_t position;
 
   window_position_t posEntityWnd;
   window_position_t position;
 
   window_position_t posEntityWnd;
@@ -365,7 +434,7 @@ typedef struct {
 
 class PrefsDlg : public Dialog
 {
 
 class PrefsDlg : public Dialog
 {
-  
+
 public:
   /*!
   local prefs file
 public:
   /*!
   local prefs file
@@ -375,10 +444,10 @@ public:
   // will enable/disable stuff according to the situation
   void DoSensitivity();
   void PreModal() { DoSensitivity(); }
   // will enable/disable stuff according to the situation
   void DoSensitivity();
   void PreModal() { DoSensitivity(); }
-  
+
   // enable/disable custom editor entry
   void DoEditorSensitivity();
   // enable/disable custom editor entry
   void DoEditorSensitivity();
-  
+
   /*!
   this holds global level preferences
   */
   /*!
   this holds global level preferences
   */
@@ -387,7 +456,7 @@ protected:
   // warning about old project files
   bool m_bWarn;
   list<CGameDescription *> mGames;
   // warning about old project files
   bool m_bWarn;
   list<CGameDescription *> mGames;
-  
+
 public:
   // last light intensity used in the CLightPrompt dialog, stored in registry
   int m_iLastLightIntensity;
 public:
   // last light intensity used in the CLightPrompt dialog, stored in registry
   int m_iLastLightIntensity;
@@ -399,15 +468,15 @@ public:
   /*! Preference notebook page numbers */
   enum {PTAB_FRONT = 0, PTAB_GAME_SETTINGS, PTAB_2D, PTAB_CAMERA, PTAB_TEXTURE, PTAB_LAYOUT, PTAB_MOUSE,
         PTAB_EDITING, PTAB_STARTUP, PTAB_PATHS, PTAB_MISC, PTAB_BSPMONITOR} pref_tabs;
   /*! Preference notebook page numbers */
   enum {PTAB_FRONT = 0, PTAB_GAME_SETTINGS, PTAB_2D, PTAB_CAMERA, PTAB_TEXTURE, PTAB_LAYOUT, PTAB_MOUSE,
         PTAB_EDITING, PTAB_STARTUP, PTAB_PATHS, PTAB_MISC, PTAB_BSPMONITOR} pref_tabs;
-  
+
   GtkWidget *notebook;
   GtkWidget *notebook;
-       
+
   void UpdateTextureCompression();
 
 #ifdef ATIHACK_812
   void UpdateATIHack();
 #endif
   void UpdateTextureCompression();
 
 #ifdef ATIHACK_812
   void UpdateATIHack();
 #endif
-        
+
   void LoadPrefs();
   void SavePrefs();
   void LoadTexdefPref(texdef_t* pTexdef, char* pName);
   void LoadPrefs();
   void SavePrefs();
   void LoadTexdefPref(texdef_t* pTexdef, char* pName);
@@ -464,7 +533,7 @@ public:
        // path to the project loaded at startup
        // if g_PrefsDlg can't find the information in the ini file
        // it will try to guess and eventually ask the user
        // path to the project loaded at startup
        // if g_PrefsDlg can't find the information in the ini file
        // it will try to guess and eventually ask the user
-  Str   m_strLastProject;  
+  Str   m_strLastProject;
   /*!
   version of last loaded project file
   says -1 if there's no version loaded
   /*!
   version of last loaded project file
   says -1 if there's no version loaded
@@ -555,7 +624,7 @@ public:
   bool  m_bRunQuake;
   // store prefs setting for automatic sleep mode activation
   bool  m_bDoSleep;
   bool  m_bRunQuake;
   // store prefs setting for automatic sleep mode activation
   bool  m_bDoSleep;
-  
+
   bool m_bClipCaulk;
 
   // make the texture increments match the grid changes
   bool m_bClipCaulk;
 
   // make the texture increments match the grid changes
@@ -604,7 +673,7 @@ public:
   int m_nTextureCompressionFormat;
 
   int m_nLightRadiuses;
   int m_nTextureCompressionFormat;
 
   int m_nLightRadiuses;
-  
+
   bool m_bQ3Map2Texturing;
 
 #ifdef ATIHACK_812
   bool m_bQ3Map2Texturing;
 
 #ifdef ATIHACK_812