From 84f5939d5f534265695f6bf576e5dff7fb05dbb9 Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Fri, 22 Jun 2007 23:46:47 +0000 Subject: [PATCH] rbutil: Add nice Buttons (FS 7294, heavily modified). Buttons are from the gnome-icon-theme (GPL) and are in png format. In rbutil/icons there is bin2c.c which can convert those pngs to *.c and *.h. Call it with bin2c *.png (shell expansion). The Makefile (Linux/ Mac) needs updates to use this. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13690 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/autodetection.h | 2 +- rbutil/icons/bin2c.c | 172 +++++++++++++++++++++++++++++ rbutil/icons/bootloader_btn.png | Bin 0 -> 3345 bytes rbutil/icons/doom_btn.png | Bin 0 -> 3814 bytes rbutil/icons/font_btn.png | Bin 0 -> 1926 bytes rbutil/icons/rbinstall_btn.png | Bin 0 -> 3026 bytes rbutil/icons/rembootloader_btn.png | Bin 0 -> 3693 bytes rbutil/icons/remrb_btn.png | Bin 0 -> 3634 bytes rbutil/icons/themes_btn.png | Bin 0 -> 2238 bytes rbutil/rbutil.cbp | 29 +++++ rbutil/rbutil.cpp | 6 + rbutil/rbutil.h | 4 + rbutil/rbutilApp.cpp | 4 +- rbutil/rbutilFrm.cpp | 31 +++--- rbutil/rbutilFrm.h | 2 + 15 files changed, 233 insertions(+), 17 deletions(-) create mode 100644 rbutil/icons/bin2c.c create mode 100644 rbutil/icons/bootloader_btn.png create mode 100644 rbutil/icons/doom_btn.png create mode 100644 rbutil/icons/font_btn.png create mode 100644 rbutil/icons/rbinstall_btn.png create mode 100644 rbutil/icons/rembootloader_btn.png create mode 100644 rbutil/icons/remrb_btn.png create mode 100644 rbutil/icons/themes_btn.png diff --git a/rbutil/autodetection.h b/rbutil/autodetection.h index a69b9e4bca..cfd0dbab96 100644 --- a/rbutil/autodetection.h +++ b/rbutil/autodetection.h @@ -41,7 +41,7 @@ struct UsbDeviceInfo bool detectDevices(UsbDeviceInfo* tempdevice); -wxArrayString getPossibleMountPoints(); /* this funktion has to be implemented for every OS +wxArrayString getPossibleMountPoints(); /* this funktion has to be implemented for every OS */ /******************************** diff --git a/rbutil/icons/bin2c.c b/rbutil/icons/bin2c.c new file mode 100644 index 0000000000..de4bed8348 --- /dev/null +++ b/rbutil/icons/bin2c.c @@ -0,0 +1,172 @@ + // bin2c.c + // + // convert a binary file into a C source vector + // + // put into the public domain by Sandro Sigala + // + // syntax: bin2c [-c] [-z] + // + // -c add the "const" keyword to definition + // -z terminate the array with a zero (useful for embedded C strings) + // + // examples: + // bin2c -c myimage.png myimage_png.cpp + // bin2c -z sometext.txt sometext_txt.cpp + + #include + #include + #include + #include + + #ifndef PATH_MAX + #define PATH_MAX 1024 + #endif + + int useconst = 0; + int zeroterminated = 0; + + int myfgetc(FILE *f) + { + int c = fgetc(f); + if (c == EOF && zeroterminated) { + zeroterminated = 0; + return 0; + } + return c; + } + + + void process(const char *ifname, const char *ofname) + { + FILE *ifile, *ofile; + /* modified */ + int counter=0; + char buf2[PATH_MAX]; + char* cp2; + char* cp3; + if ((cp3 = strrchr(ofname, '/')) != NULL) + ++cp3; + else { + if ((cp3 = strrchr(ofname, '\\')) != NULL) + ++cp3; + else + cp3 = ofname; + } + + strcpy(buf2, cp3); + cp2 = strrchr(buf2, '.'); + *cp2 = '.'; + cp2++; + *cp2 = 'h'; + cp2++; + *cp2 ='\0'; + + + ifile = fopen(ifname, "rb"); + if (ifile == NULL) { + fprintf(stderr, "cannot open %s for reading\n", ifname); + exit(1); + } + ofile = fopen(ofname, "wb"); + if (ofile == NULL) { + fprintf(stderr, "cannot open %s for writing\n", ofname); + exit(1); + } + char buf[PATH_MAX], *p; + const char *cp; + if ((cp = strrchr(ifname, '/')) != NULL) + ++cp; + else { + if ((cp = strrchr(ifname, '\\')) != NULL) + ++cp; + else + cp = ifname; + } + strcpy(buf, cp); + for (p = buf; *p != '\0'; ++p) + if (!isalnum(*p)) + *p = '_'; + fprintf(ofile,"#include \"%s\" \n\n",buf2); + fprintf(ofile, "%sunsigned char %s[] = {\n", useconst ? "const " : "", buf); + int c, col = 1; + while ((c = myfgetc(ifile)) != EOF) { + counter++; + if (col >= 78 - 6) { + fputc('\n', ofile); + col = 1; + } + fprintf(ofile, "0x%.2x, ", c); + col += 6; + + } + fprintf(ofile, "\n};\n"); + + /* modified */ + fprintf(ofile,"int %s_length = %i; \n",buf,counter); + + + FILE *o2file; + o2file = fopen(buf2, "wb"); + if (o2file == NULL) { + fprintf(stderr, "cannot open %s for writing\n", buf2); + exit(1); + } + + fprintf(o2file, "#ifndef __%s__ \n", buf); + fprintf(o2file, "#define __%s__ \n", buf); + + fprintf(o2file, "extern %sunsigned char %s[]; \n\n", useconst ? "const " : "", buf); + fprintf(o2file, "extern int %s_length; \n\n", buf); + + fprintf(o2file, "#endif \n"); + + fclose(ifile); + fclose(ofile); + fclose(o2file); + } + + void usage(void) + { + fprintf(stderr, "usage: bin2c \n"); + exit(1); + } + + int main(int argc, char **argv) + { + if (argc < 2) { + usage(); + } + int i; + for(i = 1;i < argc ; i++) + { + char buf[PATH_MAX]; + char* cp; + strcpy(buf, argv[i]); + cp = strrchr(buf, '.'); + cp++; + strcpy(cp,"cpp"); + process(argv[i], buf); + } + + + /* + while (argc > 3) { + if (!strcmp(argv[1], "-c")) { + useconst = 1; + --argc; + ++argv; + } else if (!strcmp(argv[1], "-z")) { + zeroterminated = 1; + --argc; + ++argv; + } else { + usage(); + } + } + if (argc != 3) { + usage(); + } + process(argv[1], argv[2]); + */ + return 0; + } diff --git a/rbutil/icons/bootloader_btn.png b/rbutil/icons/bootloader_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..3590c9c4b99f1c605280677cb1154e9e915953f9 GIT binary patch literal 3345 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 UI^#C$0{{R307*qoM6N<$f|*l;YybcN literal 0 HcmV?d00001 diff --git a/rbutil/icons/rembootloader_btn.png b/rbutil/icons/rembootloader_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..8abf1da30eff40b1242c86cef03c7108b6822292 GIT binary patch literal 3693 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 + + + @@ -103,6 +106,32 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rbutil/rbutil.cpp b/rbutil/rbutil.cpp index d7ee3ed529..a36d1a0b94 100644 --- a/rbutil/rbutil.cpp +++ b/rbutil/rbutil.cpp @@ -21,6 +21,12 @@ #include "rbutil.h" #include "installlog.h" +/* this function gets a Bitmap from embedded memory */ +wxBitmap wxGetBitmapFromMemory(const unsigned char *data,int length) +{ + wxMemoryInputStream istream( data,length); + return wxBitmap(wxImage(istream, wxBITMAP_TYPE_ANY, -1), -1); +} // This class allows us to return directories as well as files to // wxDir::Traverse diff --git a/rbutil/rbutil.h b/rbutil/rbutil.h index f8a88d4e8d..3c61bd0c4e 100644 --- a/rbutil/rbutil.h +++ b/rbutil/rbutil.h @@ -59,6 +59,7 @@ #include #include #include +#include #ifdef __WXMSW__ #define PATH_SEP "\\" @@ -132,6 +133,7 @@ public: extern GlobalVars* gv; + wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxString& appVariableName); int DownloadURL(wxString src, wxString dest); @@ -143,6 +145,8 @@ bool checkZip(wxString zipname); wxString stream_err_str(int errnum); bool rm_rf(wxString file); +wxBitmap wxGetBitmapFromMemory(const unsigned char *data,int length); + #define ERR_DIALOG(msg, title) \ wxLogError(wxT("%s: %s"), ((wxString) title).c_str(), ((wxString) msg).c_str()) diff --git a/rbutil/rbutilApp.cpp b/rbutil/rbutilApp.cpp index a9101e2656..3bc5d59305 100644 --- a/rbutil/rbutilApp.cpp +++ b/rbutil/rbutilApp.cpp @@ -78,6 +78,8 @@ bool rbutilFrmApp::OnInit() } ReadUserConfig(); + wxInitAllImageHandlers(); //init Image handlers + rbutilFrm *myFrame = new rbutilFrm(NULL); SetTopWindow(myFrame); @@ -86,8 +88,6 @@ bool rbutilFrmApp::OnInit() initIpodpatcher(); // reserve mem for ipodpatcher initSansaPatcher(); // reserve mem for sansapatcher - wxInitAllImageHandlers(); //init Image handlers - wxLogVerbose(wxT("=== end rbUtilFrmApp::OnInit()")); return TRUE; } diff --git a/rbutil/rbutilFrm.cpp b/rbutil/rbutilFrm.cpp index 0dc85c09b0..2aa2b362ca 100644 --- a/rbutil/rbutilFrm.cpp +++ b/rbutil/rbutilFrm.cpp @@ -22,19 +22,21 @@ #include "credits.h" #include "rbutilFrm_XPM.xpm" -#include "install_3d.xpm" -#include "uninstall_3d.xpm" -#include "fonts_3d.xpm" -#include "tools2_3d.xpm" +#include "icons/rbinstall_btn.h" +#include "icons/remrb_btn.h" +#include "icons/font_btn.h" +#include "icons/bootloader_btn.h" +#include "icons/rembootloader_btn.h" +#include "icons/themes_btn.h" +#include "icons/doom_btn.h" + #include "rblogo.xpm" -#include "untools2_3d.xpm" -#include "themes_3d.xpm" -#include "doom_3d.xpm" #include "bootloaders.h" #include "install_dialogs.h" + //---------------------------------------------------------------------------- // rbutilFrm //---------------------------------------------------------------------------- @@ -125,7 +127,8 @@ void rbutilFrm::CreateGUIControls(void) wxFlexGridSizer* WxFlexGridSizer1 = new wxFlexGridSizer(2,2,0,0); WxStaticBoxSizer3->Add(WxFlexGridSizer1,0,wxGROW | wxALL,0); - wxBitmap BootloaderInstallButton (tools2_3d_xpm); + + wxBitmap BootloaderInstallButton (wxGetBitmapFromMemory(bootloader_btn_png,bootloader_btn_png_length)); WxBitmapButton4 = new wxBitmapButton(installpage, ID_BOOTLOADER_BTN, BootloaderInstallButton, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW, wxDefaultValidator,wxT("Bootloader Installation")); @@ -141,7 +144,7 @@ void rbutilFrm::CreateGUIControls(void) WxFlexGridSizer1->Add(WxStaticText5, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5); - wxBitmap WxBitmapButton1_BITMAP (install_3d_xpm); + wxBitmap WxBitmapButton1_BITMAP (wxGetBitmapFromMemory(rbinstall_btn_png,rbinstall_btn_png_length)); WxBitmapButton1 = new wxBitmapButton(installpage, ID_INSTALL_BTN, WxBitmapButton1_BITMAP, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW, wxDefaultValidator, @@ -172,7 +175,7 @@ void rbutilFrm::CreateGUIControls(void) wxFlexGridSizer* WxFlexGridSizer2 = new wxFlexGridSizer(2,2,0,0); WxStaticBoxSizer4->Add(WxFlexGridSizer2,0,wxGROW | wxALL,0); - wxBitmap FontInstallButton (fonts_3d_xpm); + wxBitmap FontInstallButton (wxGetBitmapFromMemory(font_btn_png,font_btn_png_length)); WxBitmapButton3 = new wxBitmapButton(themepage, ID_FONT_BTN, FontInstallButton, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Font installation")); @@ -189,7 +192,7 @@ void rbutilFrm::CreateGUIControls(void) WxFlexGridSizer2->Add(WxStaticText4, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5); - wxBitmap ThemesInstallButton (themes_3d_xpm); + wxBitmap ThemesInstallButton (wxGetBitmapFromMemory(themes_btn_png,themes_btn_png_length)); WxBitmapButton5 = new wxBitmapButton(themepage, ID_THEMES_BTN, ThemesInstallButton, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Theme installation")); @@ -203,7 +206,7 @@ void rbutilFrm::CreateGUIControls(void) wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5); - wxBitmap DoomInstallButton (doom_3d_xpm); + wxBitmap DoomInstallButton (wxGetBitmapFromMemory(doom_btn_png,doom_btn_png_length)); WxBitmapButton6 = new wxBitmapButton(themepage, ID_DOOM_BTN, DoomInstallButton, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Freedoom installation")); @@ -233,7 +236,7 @@ void rbutilFrm::CreateGUIControls(void) wxFlexGridSizer* WxFlexGridSizer3 = new wxFlexGridSizer(2,2,0,0); WxStaticBoxSizer5->Add(WxFlexGridSizer3,0,wxGROW | wxALL,0); - wxBitmap WxBitmapButton2_BITMAP (uninstall_3d_xpm); + wxBitmap WxBitmapButton2_BITMAP (wxGetBitmapFromMemory(remrb_btn_png,remrb_btn_png_length)); WxBitmapButton2 = new wxBitmapButton(uninstallpage, ID_REMOVE_BTN, WxBitmapButton2_BITMAP, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Rockbox uninstallation")); @@ -246,7 +249,7 @@ void rbutilFrm::CreateGUIControls(void) WxFlexGridSizer3->Add(WxStaticText3,0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5); - wxBitmap WxBitmapButton4_BITMAP (untools2_3d_xpm); + wxBitmap WxBitmapButton4_BITMAP (wxGetBitmapFromMemory(rembootloader_btn_png,rembootloader_btn_png_length)); WxBitmapButton4 = new wxBitmapButton(uninstallpage, ID_BOOTLOADERREMOVE_BTN, WxBitmapButton4_BITMAP, wxPoint(0,0), wxSize(64,54), wxRAISED_BORDER | wxBU_AUTODRAW, wxDefaultValidator, diff --git a/rbutil/rbutilFrm.h b/rbutil/rbutilFrm.h index 0d3b2526e4..64afe97f7a 100644 --- a/rbutil/rbutilFrm.h +++ b/rbutil/rbutilFrm.h @@ -43,6 +43,8 @@ #include "rbutil.h" #include "rbutilCtrls.h" + + class rbutilFrm : public wxFrame { private: