ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/AE/Installer/trunk/source/installer.h
(Generate patch)

Comparing AE/Installer/trunk/source/installer.h (file contents):
Revision 325 by iritscen, Tue May 26 18:51:14 2009 UTC vs.
Revision 499 by iritscen, Wed Mar 3 02:09:02 2010 UTC

# Line 1 | Line 1
1 < #pragma once
2 < /* AE/Mod Installer header file */
1 > /***************************************************************************\
2 > | Project: AE Installer                                                                                                         |
3 > | By: Gumby & Iritscen                                                                                                          |
4 > | File: Installer.h                                                                                                                     |
5 > | Function: Contains the real meat of the installation process.                         |
6 > | Created: 24/05/2009 19:39:00                                                                                          |
7 > \***************************************************************************/
8 >
9   #ifndef DOUBLE_HEADER
10   #define DOUBLE_HEADER
11  
6
12   #include <string>
13   #include <vector>
14 + #include <iostream>
15 + #include "globals.h"
16 + #ifdef WIN32
17 + #ifndef __GUICON_H__
18 + #define __GUICON_H__
19 + #endif
20   #include <fstream>
21 + #include <windows.h>
22 + #include <stdio.h>
23 + #include <fcntl.h>
24 + #include <io.h>
25 +
26 + void RedirectIOToConsole();
27 + // maximum mumber of lines the output console should have
28 + static const WORD MAX_CONSOLE_LINES = 500;
29 + #endif
30  
11 using namespace std;
31  
32 + #pragma mark GLOBALS
33   static string SLASHSLASH = "//";
34   static string DIRSLASH = "\\";
35 < string strInstallCfg = "../GameDataFolder/Add.cfg";
36 <
37 <
38 <
39 < #define STRUCT_DEFS
40 < struct ModPackage
41 < {
42 <        bool    isInstalled; //replace with function
43 <        string  name;
44 <        string  modStringName;
45 <        int     modStringVersion;
26 <        bool    hasOnis;
27 <        bool    hasDeltas;
28 <        bool    hasBSL;
29 <        bool    hasDats;
30 <        string  category;
31 <        string  creator;
32 <        bool    isEngine;
33 <        string  readme;
34 <        bool    globalNeeded;
35 <        ModPackage();
36 <        void doOutput()
37 <        {
38 <                cout << "Mod: " << name; cout << "\n"; // remove this when done
39 <                cout << "       String: " << modStringName << " v." << modStringVersion << "\n";
40 <                cout << "       Category: " << category << "\n";
41 <                cout << "       Creator: " << creator << "\n";
42 <                cout << "       HasOnis: " << hasOnis << "\n";
43 <                cout << "       HasBSL: " << hasBSL << "\n";
44 <                cout << "       HasDeltas: " << hasDeltas << "\n";
45 <                cout << "       HasDats: " << hasDats << "\n";
46 <                cout << "       IsEngine: " << isEngine << "\n";
47 <                cout << "       GlobalNeeded: " << globalNeeded << "\n";
48 <                cout << "       Readme: " << readme << "\n";
49 <                cout << "\n";
50 <        }
51 <        
52 < };
35 > extern bool busy;
36 > extern string strInstallCfg;// = "../GameDataFolder/Add.cfg";
37 > extern Install_info_cfg currentAE, updateAE;
38 > extern bool splitInstances;
39 > extern string strImportOption;
40 > extern string strOniSplit;
41 > extern vector<ModPackage> globalPackages;
42 > extern string strEUFN; // I don't mind long variable names, but even I think strEditionUpdateFolderName is a bit much
43 > #ifndef WIN32
44 > void Sleep(int ms); // crudely converts the Windows sleep() call, which operates in ms, to the Mac sleep() call that operates in seconds
45 > #endif
46  
54 #define METHOD_DEFS
55 // Initialization to default values
56 ModPackage::ModPackage()
57 {
58        isInstalled = true; // replace with function
59        name = "";
60        modStringName = "";
61        modStringVersion = 0;
62        hasOnis = false;
63        hasDeltas = false;
64        hasBSL = false;
65        hasDats = false;
66        category = "";
67        creator = "";
68        isEngine = false;
69        readme = "";
70        globalNeeded = true;
71        //              void doOutput() const
72        //              { };
73 }
47  
48 < #define FUNCTION_PROTOTYPES
48 > #pragma mark PROTOTYPES
49   int mainMenu(void);
50 < int globalizeData(void);
50 > vector<string> getInstallString(string = strInstallCfg);
51   int installPackages(void);
52   int uninstallPackages(void);
53   int listInstalledPackages(void);
54   int printInstallerInfo(void);
82 vector<ModPackage> getPackages(void);
55   ModPackage fileToModPackage(fstream&);
56 < void recompileAll(vector<string>);
57 < vector<string> getInstallString(string = strInstallCfg);
56 > bool StringIsLegalPathForDeletion(string);
57 > vector<ModPackage> getPackages(string packageDir = "./packages");
58 > void MakePathLocalToGlobalize(string*);
59 > bool SortBySize(string, string);
60   void tokenize(const string&, vector<string>&, const string& delimiters = " ");
61 < //bool getDirectoryContents(char , char &);
61 > void StripNewlines(string *);
62   void clearOldDats(void);
63   void writeInstalledMods( vector<string> );
64 < void setStatusArea( string );
65 < void setProgressBar( int );
92 <
93 < //New copy(path, path) function. Too lazy to implement my own, this is basically how I would have done it though.
94 < //No, really. :)
95 < //Move to utilities.cpp when the time comes.
96 < using namespace boost::filesystem;
97 < using namespace std;
98 <
99 < void copy_directory( const path & from_dir_ph,
100 <                                        const path & to_dir_ph );
101 <
102 < void copy( const path & from_file_ph,
103 <                  const path & to_file_ph );
104 <
105 <
106 < // this function copies files and directories. If copying a
107 < // directory to a directory, it copies recursively.
108 <
109 < //pardon the mess, I did this at midnight, and had to fix a bug
110 < void copy( const path & from_ph,
111 <                  const path & to_ph )
112 < {
113 <        cout << to_ph.string() << "\n";
114 <        // Make sure that the destination, if it exists, is a directory
115 <        if((exists(to_ph) && !is_directory(to_ph)) || (!exists(from_ph))) cout << "error";
116 <        if(!is_directory(from_ph))
117 <        {
118 <                
119 <                if(exists(to_ph))
120 <                {
121 <                        copy_file(from_ph,to_ph/from_ph.filename());
122 <                }
123 <                else
124 <                {
125 <                        try{
126 <                                
127 <                                copy_file(from_ph,to_ph);
128 <                        }
129 <                        catch (exception ex){
130 <                                cout << from_ph.string() << " to " << to_ph.string() << "\n";
131 <                        }
132 <                }
133 <                
134 <        }
135 <        else if(from_ph.filename() != ".svn")
136 <        {
137 <                path destination;
138 <                if(!exists(to_ph))
139 <                {
140 <                        destination=to_ph;
141 <                }
142 <                else
143 <                {
144 <                        destination=to_ph/from_ph.filename();
145 <                }
146 <                //not sure what this did, its going away though. probably error checking ;)
147 <                //copy_directory(from_ph,destination);
148 <                
149 <                for(directory_iterator i(from_ph); i!=directory_iterator(); ++i)
150 <                {
151 <                        //the idiot who coded this in the first place (not me)
152 <                        //forgot to make a new directory. Exception city. x_x
153 <                        create_directory(destination);
154 <                        copy(*i,destination/i->filename());
155 <                }
156 <        }
157 < }
158 <
159 < void copy_directory( const path &from_dir_ph,
160 <                                        const path &to_dir_ph)
161 < {
162 <        if(!exists(from_dir_ph) || !is_directory(from_dir_ph)
163 <           || exists(to_dir_ph))
164 <                cout << !exists(from_dir_ph) << " " << !is_directory(from_dir_ph)
165 <                << " " << exists(to_dir_ph);
166 <        //boost::throw_exception( filesystem_error(
167 <        //"boost::filesystem::copy_directory",
168 <        //from_dir_ph, to_dir_ph, boost::system::error_code() ));
169 <        
170 < # ifdef BOOST_POSIX
171 <        struct stat from_stat;
172 <        if ( (::stat( from_dir_ph.string().c_str(), &from_stat ) != 0)
173 <                || ::mkdir(to_dir_ph.native_directory_string().c_str(),
174 <                                   from_stat.st_mode)!=0)
175 < # endif
176 <                //      boost::throw_exception( filesystem_error(
177 <                //      //"boost::filesystem::copy_directory",
178 <                //      from_dir_ph, to_dir_ph, boost::system::error_code()));
179 <                }
180 <
181 < #endif
182 <
183 < #ifdef WIN32
184 <
185 < #ifndef __GUICON_H__
186 <
187 < #define __GUICON_H__
188 <
189 <
190 <
191 < void RedirectIOToConsole();
192 <
193 <
194 <
195 < #endif
64 > void copyBSL( string, vector<string>&, ModPackage );
65 > bool ReadInstallInfoCfg(fstream *, Install_info_cfg *);
66  
67   /* End of File */
68  
199
200 #include <windows.h>
201
202 #include <stdio.h>
203
204 #include <fcntl.h>
205
206 #include <io.h>
207
208 #include <iostream>
209
210 #include <fstream>
211
212 #ifndef _USE_OLD_IOSTREAMS
213
214 using namespace std;
215
216 #endif
217
218 // maximum mumber of lines the output console should have
219
220 static const WORD MAX_CONSOLE_LINES = 500;
221
222
223 void RedirectIOToConsole()
224
225 {
226        
227        int hConHandle;
228        
229        long lStdHandle;
230        
231        CONSOLE_SCREEN_BUFFER_INFO coninfo;
232        
233        FILE *fp;
234        
235        // allocate a console for this app
236        
237        AllocConsole();
238        
239        // set the screen buffer to be big enough to let us scroll text
240        
241        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),
242                                                          
243                                                           &coninfo);
244        
245        coninfo.dwSize.Y = MAX_CONSOLE_LINES;
246        
247        SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),
248                                                          
249                                                           coninfo.dwSize);
250        
251        // redirect unbuffered STDOUT to the console
252        
253        lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
254        
255        hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
256        
257        fp = _fdopen( hConHandle, "w" );
258        
259        *stdout = *fp;
260        
261        setvbuf( stdout, NULL, _IONBF, 0 );
262        
263        // redirect unbuffered STDIN to the console
264        
265        lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
266        
267        hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
268        
269        fp = _fdopen( hConHandle, "r" );
270        
271        *stdin = *fp;
272        
273        setvbuf( stdin, NULL, _IONBF, 0 );
274        
275        // redirect unbuffered STDERR to the console
276        
277        lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
278        
279        hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
280        
281        fp = _fdopen( hConHandle, "w" );
282        
283        *stderr = *fp;
284        
285        setvbuf( stderr, NULL, _IONBF, 0 );
286        
287        
288        // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
289        
290        // point to console as well
291        
292        ios::sync_with_stdio();
293        
294 }
295
296
297
69   //End of File
70  
71 <
301 <
302 <
303 <
304 <
305 < #endif
71 > #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)