summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutil.h
blob: c1816d5d0bc06646e6dd3740b5cc504ad95c185e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * Module: rbutil
 * File: rbutil.h
 *
 * Copyright (C) 2005 Christi Alice Scarborough
 *
 * All files in this archive are subject to the GNU General Public License.
 * See the file COPYING in the source tree root for full license agreement.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/

#include <wx/wxprec.h>
#ifdef __BORLANDC__
        #pragma hdrstop
#endif
#ifndef WX_PRECOMP
        #include <wx/wx.h>
#endif

#ifndef __rbutil_HPP_
#define __rbutil_HPP_

#include <wx/config.h>
#include <wx/confbase.h>
#include <wx/fileconf.h>
#include <wx/stdpaths.h>
#include <wx/wfstream.h>
#include <wx/filesys.h>
#include <wx/fs_inet.h>
#include <wx/fs_zip.h>
#include <wx/progdlg.h>
#include <wx/protocol/http.h>
#include <wx/string.h>
#include <wx/url.h>
#include <wx/ptr_scpd.h>
#include <wx/zipstrm.h>
#include <wx/dir.h>
#include <wx/filefn.h>
#include <wx/sstream.h>
#include <wx/msgdlg.h>
#include <wx/log.h>
#include <wx/file.h>
#include <wx/wizard.h>
#include <wx/event.h>

#ifdef __WXMSW__
#define PATH_SEP "\\"
#define PATH_SEP_CHR '\\'
#define EXE_NAME "rbutil.exe"
#else
#define PATH_SEP "/"
#define PATH_SEP_CHR '/'
#define EXE_NAME "rbutil"
#endif

#define UNINSTALL_FILE ".rockbox" PATH_SEP ".rbutil_install_data"
#define MAX_PLATFORMS 50
#define SYSTEM_CONFIG rbutil.ini
#define FILE_BUFFER_SIZE 1024

//WX_DEFINE_OBJARRAY(bool, wxArrayBool);

class GlobalVars
{
public:
    // Program configuration data (rbutil.ini and environment)
    wxFileConfig*           GlobalConfig;
    wxFileConfig*           UserConfig;
    wxString                UserConfigFile;
    wxString                GlobalConfigFile;
    wxString                AppDir;
    wxString                ResourceDir;

    wxString*               ErrStr;
    wxStandardPaths*        stdpaths;
    wxArrayString           plat_id;
    wxArrayString           plat_name;
    wxArrayInt              plat_released;
    wxString                download_url;
    wxString                daily_url;
    wxString                bleeding_url;
    wxString                server_conf_url;
    wxString                font_url;
    wxString                last_release;
    wxString                prog_name;

    // User configuration data.
    wxString                curplat;
    unsigned int            curplatnum;
    wxString                curdestdir;
    unsigned int            curbuild;
    bool                    curisfull;
    bool                    nocache;
    bool                    portable;

    // Global system variables
    wxFFile*                 logfile;
    wxLogStderr*             logstderr;
    wxLogChain*              logchain;
    wxLogGui*                loggui;
};

extern GlobalVars* gv;

wxString wxFindAppPath(const wxString& argv0, const wxString& cwd,
    const wxString& appVariableName);
int DownloadURL(wxString src, wxString dest);
int UnzipFile(wxString src, wxString destdir, bool isInstall = false);
int Uninstall(const wxString dir, bool isFullUninstall = false);
bool InstallRbutil(wxString dest);
wxString stream_err_str(int errnum);
bool rm_rf(wxString file);

#define ERR_DIALOG(msg, title) \
    wxLogError("%s: %s", ((wxString) title).c_str(), ((wxString) msg).c_str())

#define WARN_DIALOG(msg, title) \
    wxLogWarning("%s: %s", ((wxString) title).c_str(), ((wxString) msg).c_str())

#define MESG_DIALOG(msg) \
   wxLogMessage(msg)

#define INFO_DIALOG(msg) \
    wxLogInfo(msg)

#define BUILD_RELEASE       0
#define BUILD_DAILY         1
#define BUILD_BLEEDING      2

#endif