summaryrefslogtreecommitdiffstats
path: root/rbutil
diff options
context:
space:
mode:
authorChristi Scarborough <christi@coraline.org>2006-12-14 03:55:15 +0000
committerChristi Scarborough <christi@coraline.org>2006-12-14 03:55:15 +0000
commit5003669541a59137750498d2b5503b9c93cc12d6 (patch)
tree56f81eebf30e20605e2dc66cac4cdc514d993d71 /rbutil
parent8f08f29a6607c529c627855a0753f76da73e13c0 (diff)
downloadrockbox-5003669541a59137750498d2b5503b9c93cc12d6.tar.gz
rockbox-5003669541a59137750498d2b5503b9c93cc12d6.tar.bz2
rockbox-5003669541a59137750498d2b5503b9c93cc12d6.zip
Newer shinier install log file which is more intelligent and better able to cope with multiple packages being installed. This breaks compatibility with the old uninstall file format.
Various bug fixes and tidy ups. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11757 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil')
-rw-r--r--rbutil/Makefile4
-rw-r--r--rbutil/credits.h4
-rw-r--r--rbutil/installlog.cpp153
-rw-r--r--rbutil/installlog.h61
-rw-r--r--rbutil/rbutil-rc.rc10
-rw-r--r--rbutil/rbutil.cpp127
-rw-r--r--rbutil/rbutil.iss6
-rw-r--r--rbutil/rbutilApp.cpp1
-rw-r--r--rbutil/rbutilApp.h26
-rw-r--r--rbutil/rbutilFrm.cpp15
-rw-r--r--rbutil/wizard_pages.cpp20
-rw-r--r--rbutil/wizard_pages.h21
-rw-r--r--rbutil/wx_pch.h20
13 files changed, 385 insertions, 83 deletions
diff --git a/rbutil/Makefile b/rbutil/Makefile
index a665e182fd..f436b7a8be 100644
--- a/rbutil/Makefile
+++ b/rbutil/Makefile
@@ -7,11 +7,11 @@
# $Id$
#
-# Unix-style Makefile for rbutil
+# Unix-style Makefile for rbutil
CXX=$(shell $(PREFIX)wx-config --cxx)
-OBJS=rbutil.o rbutilApp.o rbutilFrm.o wizard_pages.o
+OBJS=rbutil.o rbutilApp.o rbutilFrm.o wizard_pages.o installog.o
# type "make WIN=1" for a Windows build using the Debian mingw cross-compiler
diff --git a/rbutil/credits.h b/rbutil/credits.h
index fe9bdb18f5..52ce7c599c 100644
--- a/rbutil/credits.h
+++ b/rbutil/credits.h
@@ -26,7 +26,7 @@
static char* rbutil_developers[] = {
"Christi Alice Scarborough",
- ""
+ "Dave Chapman"
};
//static char* rbutil_translators[] = (
@@ -37,7 +37,7 @@ static char* rbutil_developers[] = {
#define RBUTIL_COPYRIGHT "(C) 2005-6 The Rockbox Team - " \
"released under the GNU Public License v2"
#define RBUTIL_DESCRIPTION "Utility for performing housekeepng tasks for" \
- "the Rockbox audio jukebox firmware."
+ "the Rockbox open\nsource digital audio player firmware."
class AboutDlg: public wxDialog
diff --git a/rbutil/installlog.cpp b/rbutil/installlog.cpp
new file mode 100644
index 0000000000..e9dad794cb
--- /dev/null
+++ b/rbutil/installlog.cpp
@@ -0,0 +1,153 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * Module: rbutil
+ * File: installlog.cpp
+ *
+ * Copyright (C) 2006 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 "installlog.h"
+#include "rbutil.h"
+
+InstallLog::InstallLog(wxString logname, bool CreateLog)
+{
+ wxString buf;
+ dirtyflag = true;
+
+ if (! CreateLog && ! wxFileExists(logname) ) return;
+
+ logfile = new wxFileConfig(wxEmptyString, wxEmptyString, logname);
+
+
+ if (!logfile)
+ {
+ buf.Printf(_("Failed to create install log file: %s"), logname.c_str());
+ wxLogWarning(buf);
+ return;
+ }
+
+ logfile->SetPath("/InstallLog");
+ if (logfile->Exists("Version") &&
+ logfile->Read("Version", 0l) != LOGFILE_VERSION )
+ {
+ buf.Printf(_("Logfile version mismatch: %s"), logname.c_str() );
+ wxLogWarning(buf);
+ delete logfile;
+ return;
+ }
+
+ logfile->Write("Version", LOGFILE_VERSION);
+ dirtyflag = false;
+}
+
+InstallLog::~InstallLog()
+{
+ if (dirtyflag) return;
+
+ delete logfile;
+}
+
+unsigned int InstallLog::WriteFile(wxString filepath, bool isDir)
+{
+ wxString key, buf;
+ long installcount = 0;
+
+ if (dirtyflag) return true;
+
+ filepath.Replace(PATH_SEP, wxT("/") );
+
+ if (filepath.GetChar(0) == '/')
+ filepath = filepath.Right(filepath.Len() - 1);
+
+ logfile->SetPath(wxT("/FilePaths"));
+ installcount = logfile->Read(filepath, 0l);
+
+ if (isDir)
+ {
+ filepath.Append(wxT("/" DIRECTORY_KLUDGE) ); // Needed for empty dirs
+ }
+
+ logfile->Write(filepath, ++installcount);
+
+ return false;
+}
+
+unsigned int InstallLog::WriteFile(wxArrayString filepaths)
+{
+ unsigned long i;
+ unsigned int finalrc = false;
+ wxString thisone;
+
+ if (dirtyflag) return true;
+
+ for (i = 0; i < filepaths.GetCount(); i++);
+ {
+ if ( WriteFile(filepaths[i]) )
+ {
+ finalrc++;
+ }
+ }
+
+ return finalrc;
+}
+
+wxArrayString* InstallLog::GetInstalledFiles()
+{
+ wxString curdir = "";
+
+ if (dirtyflag) return NULL;
+ workingAS.Clear();
+
+ EnumerateCurDir("");
+
+ wxArrayString* out = new wxArrayString(workingAS);
+ return out;
+}
+
+void InstallLog::EnumerateCurDir(wxString curdir)
+{
+ bool contflag;
+ wxString curname, buf, buf2, pathcache;
+ long dummy;
+
+ buf.Printf(wxT("/FilePaths/%s"), curdir.c_str());
+ pathcache = logfile->GetPath();
+ logfile->SetPath(buf);
+
+ contflag = logfile->GetFirstGroup(curname, dummy);
+ while (contflag)
+ {
+ buf.Printf("%s/%s", curdir.c_str(), curname.c_str() );
+ buf2 = buf; buf2.Replace(wxT("/"), wxT(PATH_SEP));
+ workingAS.Add(buf2);
+ EnumerateCurDir(buf);
+ contflag = logfile->GetNextGroup(curname, dummy);
+ }
+
+ contflag = logfile->GetFirstEntry(curname, dummy);
+ while (contflag)
+ {
+ if (curname != wxT(DIRECTORY_KLUDGE) )
+ {
+ buf.Printf("%s/%s", curdir.c_str(), curname.c_str() );
+ buf2 = buf; buf2.Replace(wxT("/"), wxT(PATH_SEP));
+ workingAS.Add(buf2);
+ }
+ contflag = logfile->GetNextEntry(curname, dummy);
+ }
+
+ logfile->SetPath(pathcache);
+}
+
diff --git a/rbutil/installlog.h b/rbutil/installlog.h
new file mode 100644
index 0000000000..cb85e08359
--- /dev/null
+++ b/rbutil/installlog.h
@@ -0,0 +1,61 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * Module: rbutil
+ * File: installlog.h
+ *
+ * Copyright (C) 2006 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.
+ *
+ ****************************************************************************/
+
+
+#ifndef INSTALLLOG_H_INCLUDED
+#define INSTALLLOG_H_INCLUDED
+
+#include <wx/wxprec.h>
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+#ifndef WX_PRECOMP
+ #include <wx/wx.h>
+#endif
+
+#include <wx/confbase.h>
+#include <wx/fileconf.h>
+
+#define LOGFILE_VERSION 1
+#define DIRECTORY_KLUDGE "_DIRECTORY_MARKER_RECORD_KLUDGE_"
+class InstallLog
+{
+ // Class variables
+ wxFileConfig* logfile;
+
+ // Methods
+ public:
+ InstallLog(wxString logname, bool CreateLog = true);
+ ~InstallLog();
+ unsigned int WriteFile(wxString filepath, bool isDir = false);
+ unsigned int WriteFile(wxArrayString filepaths);
+ wxArrayString* GetInstalledFiles();
+
+ private:
+ bool dirtyflag;
+ wxArrayString workingAS;
+// long dummy;
+
+ private:
+ void EnumerateCurDir(wxString curdir);
+}; // InstallLog
+
+
+#endif // INSTALLLOG_H_INCLUDED
diff --git a/rbutil/rbutil-rc.rc b/rbutil/rbutil-rc.rc
index 13513fb2fc..986bd583b4 100644
--- a/rbutil/rbutil-rc.rc
+++ b/rbutil/rbutil-rc.rc
@@ -1,8 +1,8 @@
#define RBUTIL 1
#include <wx/msw/wx.rc>
RBUTIL VERSIONINFO
-FILEVERSION 0,2,0,0
-PRODUCTVERSION 0,2,0,0
+FILEVERSION 0,2,1,0
+PRODUCTVERSION 0,2,1,0
FILEOS 0x00000004
FILETYPE 0x00000001
BEGIN
@@ -10,12 +10,12 @@ BEGIN
BEGIN
BLOCK "FFFF0000"
BEGIN
- VALUE "FileVersion", "0.2.0.0\0"
- VALUE "ProductVersion", "0.2.0.0\0"
+ VALUE "FileVersion", "0.2.1.0\0"
+ VALUE "ProductVersion", "0.2.1.0\0"
VALUE "CompanyName", "Rockbox Team\0"
VALUE "FileDescription", "Rockbox Utility\0"
VALUE "InternalName", "rbutil\0"
- VALUE "LegalCopyright", "(C) 2005,5 Rockbox Team\0"
+ VALUE "LegalCopyright", "(C) 2005,6 Rockbox Team\0"
VALUE "ProductName", "Rockbox Utility\0"
END
END
diff --git a/rbutil/rbutil.cpp b/rbutil/rbutil.cpp
index 4344690d01..0adee683ec 100644
--- a/rbutil/rbutil.cpp
+++ b/rbutil/rbutil.cpp
@@ -19,6 +19,7 @@
****************************************************************************/
#include "rbutil.h"
+#include "installlog.h"
// This class allows us to return directories as well as files to
// wxDir::Traverse
@@ -195,9 +196,11 @@ int DownloadURL(wxString src, wxString dest)
int UnzipFile(wxString src, wxString destdir, bool isInstall)
{
- wxZipEntryPtr entry;
- wxString in_str, progress_msg, buf, logfile = wxT("");
- int errnum = 0, curfile = 0, totalfiles = 0;
+ wxZipEntryPtr entry;
+ wxString in_str, progress_msg, buf;
+ int errnum = 0, curfile = 0, totalfiles = 0;
+ InstallLog* log = NULL;
+
wxLogVerbose(_("===begin UnzipFile(%s,%s,%i)"),
src.c_str(), destdir.c_str(), isInstall);
@@ -245,6 +248,13 @@ int UnzipFile(wxString src, wxString destdir, bool isInstall)
wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
progress->Update(0);
+ // We're not overly worried if the logging fails
+ if (isInstall)
+ {
+ buf.Printf(wxT("%s" PATH_SEP UNINSTALL_FILE), destdir.c_str());
+ log = new InstallLog(buf);
+ }
+
while (! errnum &&
(entry.reset(in_zip->GetNextEntry()), entry.get() != NULL) )
{
@@ -260,15 +270,11 @@ int UnzipFile(wxString src, wxString destdir, bool isInstall)
}
in_str.Printf(wxT("%s" PATH_SEP "%s"), destdir.c_str(), name.c_str());
- buf = logfile;
- // We leave space for adding a future CRC check, if we ever
- // feel particularly enthunsiastic.
- logfile.Printf(wxT("0 %s\n%s"), name.c_str(), buf.c_str());
if (entry->IsDir() ) {
wxDir* dirname = new wxDir(in_str);
if (! dirname->Exists(in_str) ) {
- if (wxMkDir(in_str, 0777) ) {
+ if (! wxMkdir(in_str, 0777) ) {
buf.Printf(_("Unable to create directory %s"),
in_str.c_str() );
errnum = 100;
@@ -276,6 +282,7 @@ int UnzipFile(wxString src, wxString destdir, bool isInstall)
break;
}
}
+ log->WriteFile(name, true); // Directory
delete dirname;
continue;
}
@@ -286,6 +293,9 @@ int UnzipFile(wxString src, wxString destdir, bool isInstall)
buf.Printf(_("Can't open file %s for writing"), in_str.c_str() );
delete out;
return 100;
+ } else if (isInstall)
+ {
+ log->WriteFile(name);
}
in_zip->Read(*out);
@@ -316,21 +326,9 @@ int UnzipFile(wxString src, wxString destdir, bool isInstall)
if (errnum)
{
ERR_DIALOG(buf, _("Unzip File"));
- } else if (isInstall)
- {
- // If this fails, we have no log. No biggie.
- buf = logfile;
- logfile.Printf(wxT("%s " PATH_SEP "\n%s"), gv->curplat.c_str(),
- buf.c_str());
-
- buf.Printf(wxT("%s" PATH_SEP UNINSTALL_FILE),
- destdir.c_str());
- wxFFileOutputStream* out = new wxFFileOutputStream(buf);
- out->Write(logfile, logfile.Len());
- out->Close();
- delete out;
}
+ if (log) delete log;
wxLogVerbose(_("=== end UnzipFile"));
return(errnum);
}
@@ -340,6 +338,8 @@ int Uninstall(const wxString dir, bool isFullUninstall) {
bool gooddata = false;
unsigned int i;
bool errflag = false;
+ InstallLog *log = NULL;
+ wxArrayString* FilesToRemove = NULL;
wxLogVerbose(_("=== begin Uninstall(%s,%i)"), dir.c_str(), isFullUninstall);
@@ -351,25 +351,13 @@ int Uninstall(const wxString dir, bool isFullUninstall) {
if (! isFullUninstall)
{
- buf.Printf(wxT("%s" PATH_SEP UNINSTALL_FILE), dir.c_str());
- if ( wxFileExists(buf) )
- {
- wxFFileInputStream* uninst_data = new wxFFileInputStream(buf);
- if (uninst_data->Ok() )
- {
- wxStringOutputStream* out = new wxStringOutputStream(&uninst);
- uninst_data->Read(*out);
- if (uninst_data->GetLastError() == wxSTREAM_EOF &&
- ! out->GetLastError() )
- {
- gooddata = true;
- }
- delete out;
- }
- delete uninst_data;
- }
- if (! gooddata) {
+ buf.Printf(wxT("%s" PATH_SEP UNINSTALL_FILE), dir.c_str());
+ log = new InstallLog(buf, false); // Don't create the log
+ FilesToRemove = log->GetInstalledFiles();
+ if (log) delete log;
+
+ if (FilesToRemove == NULL || FilesToRemove->GetCount() < 1) {
wxLogNull lognull;
if ( wxMessageDialog(NULL,
_("Rockbox Utility can't find any uninstall data on this "
@@ -439,25 +427,16 @@ int Uninstall(const wxString dir, bool isFullUninstall) {
{
wxString instplat, this_path_sep;
unsigned int totalfiles, rc;
+ totalfiles = FilesToRemove->GetCount();
+ FilesToRemove->Sort(true); // Reverse alphabetical ie dirs after files
- // First line is "<platform><space><path seperator>\n"
- instplat = uninst.BeforeFirst(wxT(' '));
- this_path_sep = uninst.AfterFirst(wxT(' ')).BeforeFirst(wxT('\n'));
- uninst = uninst.AfterFirst(wxT('\n'));
- totalfiles = uninst.Freq(wxT('\n'));
-
- i = 0;
- while ((buf = uninst.BeforeFirst(wxT('\n'))) != "" )
+ for (i = 0; i < totalfiles; i++)
{
- // These lines are all "<crc (unused)><space><filename>\n"
- buf = buf.AfterFirst(wxT(' '));
- buf = buf.Format(wxT("%s" PATH_SEP "%s"), dir.c_str(), buf.c_str());
- // So we can install under Linux and still uninstall under Win
- buf.Replace(this_path_sep, PATH_SEP);
-
wxString* buf2 = new wxString;
+ buf.Printf("%s%s", dir.c_str() , FilesToRemove->Item(i).c_str() );
buf2->Format(_("Deleting %s"), buf.c_str());
- if (! progress->Update(++i * 100 / totalfiles, *buf2) )
+
+ if (! progress->Update((i + 1) * 100 / totalfiles, *buf2) )
{
WARN_DIALOG(_("Cancelled by user"), _("Normal Uninstall"));
delete progress;
@@ -468,7 +447,7 @@ int Uninstall(const wxString dir, bool isFullUninstall) {
{
// If we're about to attempt to remove .rockbox. delete
// install data first
- buf2->Printf(wxT("%s" PATH_SEP ".rockbox" PATH_SEP), dir.c_str() );
+ buf2->Printf(wxT("%s" PATH_SEP ".rockbox"), dir.c_str() );
if ( buf.IsSameAs(buf2->c_str()) )
{
buf2->Printf(wxT("%s" PATH_SEP UNINSTALL_FILE), dir.c_str());
@@ -503,10 +482,12 @@ int Uninstall(const wxString dir, bool isFullUninstall) {
}
if (errflag)
{
- ERR_DIALOG(_("Unable to remove some files"),
- _("Standard uninstall")) ;
+ ERR_DIALOG(_("Unable to remove some files"),
+ _("Standard uninstall")) ;
}
- }
+
+ if (FilesToRemove != NULL) delete FilesToRemove;
+ }
delete progress;
wxLogVerbose(_("=== end Uninstall"));
@@ -541,21 +522,35 @@ wxString stream_err_str(int errnum)
bool InstallRbutil(wxString dest)
{
wxArrayString filestocopy;
- wxString str, buf, dstr, destdir;
+ wxString str, buf, dstr, localpath, destdir;
unsigned int i;
wxDir dir;
- bool copied_exe = false;
+ bool copied_exe = false, made_rbdir = false;
+ InstallLog* log;
+
+ buf.Printf(wxT("%s" PATH_SEP ".rockbox"), dest.c_str() );
+
+ if (! wxDirExists(buf) )
+ {
+ wxMkdir(buf);
+ made_rbdir = true;
+ }
+
+ buf.Printf(wxT("%s" PATH_SEP UNINSTALL_FILE), dest.c_str() );
+ log = new InstallLog(buf);
+ if (made_rbdir) log->WriteFile(wxT(".rockbox"), true);
destdir.Printf(wxT("%s" PATH_SEP "RockboxUtility"), dest.c_str());
if (! wxDirExists(destdir) )
{
- if (! wxMkdir(destdir) )
+ if (! wxMkdir(destdir, 0777) )
{
buf.Printf(wxT("%s (%s)"),
_("Unable to create directory for installer"), destdir.c_str());
WARN_DIALOG(buf , _("Portable install") );
return false;
}
+ log->WriteFile(wxT("RockboxUtility"), true);
}
dir.GetAllFiles(gv->ResourceDir, &filestocopy, wxT("*"),
@@ -583,6 +578,9 @@ bool InstallRbutil(wxString dest)
WARN_DIALOG(buf, _("Portable Install") );
return false;
}
+ buf = dstr;
+ buf.Replace(dest, wxEmptyString, false);
+ log->WriteFile(buf);
}
if (! copied_exe)
@@ -597,6 +595,9 @@ bool InstallRbutil(wxString dest)
WARN_DIALOG(buf, _("Portable Install") );
return false;
}
+ buf = dstr;
+ buf.Replace(dest, wxEmptyString, false);
+ log->WriteFile(buf);
}
// Copy the local ini file so that it knows that it's a portable copy
@@ -610,7 +611,11 @@ bool InstallRbutil(wxString dest)
WARN_DIALOG(buf, _("Portable Install") );
return false;
}
+ buf = dstr;
+ buf.Replace(dest, wxEmptyString, false);
+ log->WriteFile(buf);
+ delete log;
return true;
}
diff --git a/rbutil/rbutil.iss b/rbutil/rbutil.iss
index 0f7ae04708..d945d85336 100644
--- a/rbutil/rbutil.iss
+++ b/rbutil/rbutil.iss
@@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Rockbox Utility"
-#define MyAppVerName "Rockbox Utility v0.2"
+#define MyAppVerName "Rockbox Utility v0.2.1"
#define MyAppPublisher "Rockbox Team"
#define MyAppURL "http://www.rockbox.org/"
#define MyAppExeName "rbutil.exe"
@@ -17,8 +17,8 @@ AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
-LicenseFile=C:\Documents and Settings\christi\My Documents\devel\rbutil\copying.txt
-OutputBaseFilename=rbutil-0.2-setup
+LicenseFile=copying.txt
+OutputBaseFilename=rbutil-0.2.1-setup
Compression=lzma/ultra
SolidCompression=true
OutputDir=.
diff --git a/rbutil/rbutilApp.cpp b/rbutil/rbutilApp.cpp
index ef18af0d53..8b7a722a1e 100644
--- a/rbutil/rbutilApp.cpp
+++ b/rbutil/rbutilApp.cpp
@@ -216,6 +216,7 @@ void rbutilFrmApp::ReadUserConfig()
gv->UserConfig = new wxFileConfig(wxEmptyString, wxEmptyString, buf);
gv->UserConfigFile = buf;
+ gv->UserConfig->Set(gv->UserConfig); // Store wxWidgets internal settings
stack = gv->UserConfig->GetPath();
gv->UserConfig->SetPath(wxT("/defaults"));
diff --git a/rbutil/rbutilApp.h b/rbutil/rbutilApp.h
index bac6dc2c32..b20e39eb90 100644
--- a/rbutil/rbutilApp.h
+++ b/rbutil/rbutilApp.h
@@ -1,10 +1,22 @@
-//---------------------------------------------------------------------------
-//
-// Name: rbutilApp.h
-// Author: Christi Scarborough
-// Created: 03/12/2005 00:35:02
-//
-//---------------------------------------------------------------------------
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * Module: rbutil
+ * File: rbutilApp.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__
diff --git a/rbutil/rbutilFrm.cpp b/rbutil/rbutilFrm.cpp
index 09e94a04b3..49ff6248b5 100644
--- a/rbutil/rbutilFrm.cpp
+++ b/rbutil/rbutilFrm.cpp
@@ -259,7 +259,7 @@ void rbutilFrm::OnFileWipeCache(wxCommandEvent& event)
MESG_DIALOG(_("Errors occured deleting the local download cache."));
}
- wxMkDir(cacheloc, 0777);
+ wxMkdir(cacheloc, 0777);
}
@@ -416,7 +416,16 @@ void rbutilFrm::OnFontBtn(wxCommandEvent& event)
if (wizard->RunWizard(page1) )
{
- dest.Printf("%s" PATH_SEP "download" PATH_SEP "build-info",
+ buf.Printf(wxT("%s" PATH_SEP ".rockbox"), gv->curdestdir.c_str()) ;
+ if (! wxDirExists(buf) )
+ {
+ buf.Printf(_("Rockbox is not yet installed on %s - install "
+ "Rockbox first."), buf.c_str() );
+ WARN_DIALOG(buf, _("Can't install fonts") );
+ return;
+ }
+
+ dest.Printf(wxT("%s" PATH_SEP "download" PATH_SEP "build-info"),
gv->stdpaths->GetUserDataDir().c_str());
if (DownloadURL(gv->server_conf_url, dest))
{
@@ -463,7 +472,7 @@ void rbutilFrm::OnFontBtn(wxCommandEvent& event)
}
}
- if ( !UnzipFile(dest, gv->curdestdir) )
+ if ( !UnzipFile(dest, gv->curdestdir, true) )
{
MESG_DIALOG(_("The Rockbox fonts have been installed on your device.") );
} else
diff --git a/rbutil/wizard_pages.cpp b/rbutil/wizard_pages.cpp
index 29aafffed7..7cd38cf004 100644
--- a/rbutil/wizard_pages.cpp
+++ b/rbutil/wizard_pages.cpp
@@ -1,3 +1,23 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * Module: rbutil
+ * File: wizardpages.cpp
+ *
+ * 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 "wizard_pages.h"
wxPlatformPage::wxPlatformPage(wxWizard *parent) : wxWizardPageSimple(parent)
diff --git a/rbutil/wizard_pages.h b/rbutil/wizard_pages.h
index 6fa6b88034..d0fd4459e0 100644
--- a/rbutil/wizard_pages.h
+++ b/rbutil/wizard_pages.h
@@ -1,3 +1,24 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * Module: rbutil
+ * File: wizard_pages.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.
+ *
+ ****************************************************************************/
+
+
#ifndef __wizard_pages_HPP_
#define __wizard_pages_HPP_
diff --git a/rbutil/wx_pch.h b/rbutil/wx_pch.h
index a8514fde56..c4da9a20ef 100644
--- a/rbutil/wx_pch.h
+++ b/rbutil/wx_pch.h
@@ -1,3 +1,23 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * Module: rbutil
+ * File: wx_pch.h
+ *
+ * Copyright (C) 2005 wxWidgets team
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
#ifndef WX_PCH_H_INCLUDED
#define WX_PCH_H_INCLUDED