From e8be8e8a2bc538728f150fccf3ffc01b0bcab0ae Mon Sep 17 00:00:00 2001 From: tarek_saidi Date: Thu, 28 Feb 2008 16:17:38 +0000 Subject: [PATCH] cleaned up qmake project file, improved mac app bundle generation git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@161 b624d157-de02-0410-bad0-e51aec6abb33 --- share/{keepass => keepassx}/doc/css/style.css | 0 .../doc/images/headerbackground.png | Bin .../{keepass => keepassx}/doc/images/logo.png | Bin share/{keepass => keepassx}/doc/index.html | 0 share/{keepass => keepassx}/doc/keepassx.adp | 0 .../icons/alarmclock.png | Bin .../icons/appsettings.png | Bin .../{keepass => keepassx}/icons/autotype.png | Bin .../{keepass => keepassx}/icons/bookmark.png | Bin .../icons/bookmark_add.png | Bin .../icons/bookmark_del.png | Bin .../icons/bookmark_edit.png | Bin .../icons/bookmark_folder.png | Bin .../icons/bookmark_this.png | Bin .../{keepass => keepassx}/icons/clientic.png | Bin share/{keepass => keepassx}/icons/clock.png | Bin .../icons/cloneentry.png | Bin share/{keepass => keepassx}/icons/copypwd.png | Bin .../icons/copyusername.png | Bin .../{keepass => keepassx}/icons/dbsearch.png | Bin .../icons/dbsettings.png | Bin share/{keepass => keepassx}/icons/delete.png | Bin .../icons/deleteentry.png | Bin .../icons/deletegroup.png | Bin share/{keepass => keepassx}/icons/dice.png | Bin .../{keepass => keepassx}/icons/document.png | Bin share/{keepass => keepassx}/icons/down.png | Bin .../{keepass => keepassx}/icons/editentry.png | Bin .../{keepass => keepassx}/icons/editgroup.png | Bin share/{keepass => keepassx}/icons/exit.png | Bin share/{keepass => keepassx}/icons/expired.png | Bin .../{keepass => keepassx}/icons/fileclose.png | Bin .../icons/filedelete.png | Bin share/{keepass => keepassx}/icons/filenew.png | Bin .../{keepass => keepassx}/icons/fileopen.png | Bin .../{keepass => keepassx}/icons/filesave.png | Bin .../icons/filesaveas.png | Bin .../icons/filesavedisabled.png | Bin .../{keepass => keepassx}/icons/generator.png | Bin .../icons/groupsearch.png | Bin share/{keepass => keepassx}/icons/help.png | Bin share/{keepass => keepassx}/icons/i18n.png | Bin .../{keepass => keepassx}/icons/keepassx.png | Bin .../icons/keepassx_large.png | Bin .../icons/keepassx_locked.png | Bin share/{keepass => keepassx}/icons/key.png | Bin share/{keepass => keepassx}/icons/lock.png | Bin share/{keepass => keepassx}/icons/manual.png | Bin .../{keepass => keepassx}/icons/newentry.png | Bin .../{keepass => keepassx}/icons/newgroup.png | Bin share/{keepass => keepassx}/icons/ok.png | Bin share/{keepass => keepassx}/icons/openurl.png | Bin .../{keepass => keepassx}/icons/pwd_hide.png | Bin .../{keepass => keepassx}/icons/pwd_show.png | Bin share/{keepass => keepassx}/icons/restore.png | Bin share/{keepass => keepassx}/icons/search.png | Bin share/{keepass => keepassx}/icons/swap.png | Bin .../{keepass => keepassx}/icons/templates.png | Bin .../icons/text_block.png | Bin .../{keepass => keepassx}/icons/text_bold.png | Bin .../icons/text_center.png | Bin .../icons/text_italic.png | Bin .../{keepass => keepassx}/icons/text_left.png | Bin .../icons/text_right.png | Bin .../icons/text_under.png | Bin .../{keepass => keepassx}/icons/trashcan.png | Bin share/{keepass => keepassx}/icons/up.png | Bin share/{keepass => keepassx}/license.html | 0 share/macx_bundle/icon.icns | Bin 0 -> 69424 bytes src/main.cpp | 26 +++-- src/main.h | 1 + src/src.pro | 96 +++++++++--------- 72 files changed, 64 insertions(+), 59 deletions(-) rename share/{keepass => keepassx}/doc/css/style.css (100%) rename share/{keepass => keepassx}/doc/images/headerbackground.png (100%) rename share/{keepass => keepassx}/doc/images/logo.png (100%) rename share/{keepass => keepassx}/doc/index.html (100%) rename share/{keepass => keepassx}/doc/keepassx.adp (100%) rename share/{keepass => keepassx}/icons/alarmclock.png (100%) rename share/{keepass => keepassx}/icons/appsettings.png (100%) rename share/{keepass => keepassx}/icons/autotype.png (100%) rename share/{keepass => keepassx}/icons/bookmark.png (100%) rename share/{keepass => keepassx}/icons/bookmark_add.png (100%) rename share/{keepass => keepassx}/icons/bookmark_del.png (100%) rename share/{keepass => keepassx}/icons/bookmark_edit.png (100%) rename share/{keepass => keepassx}/icons/bookmark_folder.png (100%) rename share/{keepass => keepassx}/icons/bookmark_this.png (100%) rename share/{keepass => keepassx}/icons/clientic.png (100%) rename share/{keepass => keepassx}/icons/clock.png (100%) rename share/{keepass => keepassx}/icons/cloneentry.png (100%) rename share/{keepass => keepassx}/icons/copypwd.png (100%) rename share/{keepass => keepassx}/icons/copyusername.png (100%) rename share/{keepass => keepassx}/icons/dbsearch.png (100%) rename share/{keepass => keepassx}/icons/dbsettings.png (100%) rename share/{keepass => keepassx}/icons/delete.png (100%) rename share/{keepass => keepassx}/icons/deleteentry.png (100%) rename share/{keepass => keepassx}/icons/deletegroup.png (100%) rename share/{keepass => keepassx}/icons/dice.png (100%) rename share/{keepass => keepassx}/icons/document.png (100%) rename share/{keepass => keepassx}/icons/down.png (100%) rename share/{keepass => keepassx}/icons/editentry.png (100%) rename share/{keepass => keepassx}/icons/editgroup.png (100%) rename share/{keepass => keepassx}/icons/exit.png (100%) rename share/{keepass => keepassx}/icons/expired.png (100%) rename share/{keepass => keepassx}/icons/fileclose.png (100%) rename share/{keepass => keepassx}/icons/filedelete.png (100%) rename share/{keepass => keepassx}/icons/filenew.png (100%) rename share/{keepass => keepassx}/icons/fileopen.png (100%) rename share/{keepass => keepassx}/icons/filesave.png (100%) rename share/{keepass => keepassx}/icons/filesaveas.png (100%) rename share/{keepass => keepassx}/icons/filesavedisabled.png (100%) rename share/{keepass => keepassx}/icons/generator.png (100%) rename share/{keepass => keepassx}/icons/groupsearch.png (100%) rename share/{keepass => keepassx}/icons/help.png (100%) rename share/{keepass => keepassx}/icons/i18n.png (100%) rename share/{keepass => keepassx}/icons/keepassx.png (100%) rename share/{keepass => keepassx}/icons/keepassx_large.png (100%) rename share/{keepass => keepassx}/icons/keepassx_locked.png (100%) rename share/{keepass => keepassx}/icons/key.png (100%) rename share/{keepass => keepassx}/icons/lock.png (100%) rename share/{keepass => keepassx}/icons/manual.png (100%) rename share/{keepass => keepassx}/icons/newentry.png (100%) rename share/{keepass => keepassx}/icons/newgroup.png (100%) rename share/{keepass => keepassx}/icons/ok.png (100%) rename share/{keepass => keepassx}/icons/openurl.png (100%) rename share/{keepass => keepassx}/icons/pwd_hide.png (100%) rename share/{keepass => keepassx}/icons/pwd_show.png (100%) rename share/{keepass => keepassx}/icons/restore.png (100%) rename share/{keepass => keepassx}/icons/search.png (100%) rename share/{keepass => keepassx}/icons/swap.png (100%) rename share/{keepass => keepassx}/icons/templates.png (100%) rename share/{keepass => keepassx}/icons/text_block.png (100%) rename share/{keepass => keepassx}/icons/text_bold.png (100%) rename share/{keepass => keepassx}/icons/text_center.png (100%) rename share/{keepass => keepassx}/icons/text_italic.png (100%) rename share/{keepass => keepassx}/icons/text_left.png (100%) rename share/{keepass => keepassx}/icons/text_right.png (100%) rename share/{keepass => keepassx}/icons/text_under.png (100%) rename share/{keepass => keepassx}/icons/trashcan.png (100%) rename share/{keepass => keepassx}/icons/up.png (100%) rename share/{keepass => keepassx}/license.html (100%) create mode 100644 share/macx_bundle/icon.icns diff --git a/share/keepass/doc/css/style.css b/share/keepassx/doc/css/style.css similarity index 100% rename from share/keepass/doc/css/style.css rename to share/keepassx/doc/css/style.css diff --git a/share/keepass/doc/images/headerbackground.png b/share/keepassx/doc/images/headerbackground.png similarity index 100% rename from share/keepass/doc/images/headerbackground.png rename to share/keepassx/doc/images/headerbackground.png diff --git a/share/keepass/doc/images/logo.png b/share/keepassx/doc/images/logo.png similarity index 100% rename from share/keepass/doc/images/logo.png rename to share/keepassx/doc/images/logo.png diff --git a/share/keepass/doc/index.html b/share/keepassx/doc/index.html similarity index 100% rename from share/keepass/doc/index.html rename to share/keepassx/doc/index.html diff --git a/share/keepass/doc/keepassx.adp b/share/keepassx/doc/keepassx.adp similarity index 100% rename from share/keepass/doc/keepassx.adp rename to share/keepassx/doc/keepassx.adp diff --git a/share/keepass/icons/alarmclock.png b/share/keepassx/icons/alarmclock.png similarity index 100% rename from share/keepass/icons/alarmclock.png rename to share/keepassx/icons/alarmclock.png diff --git a/share/keepass/icons/appsettings.png b/share/keepassx/icons/appsettings.png similarity index 100% rename from share/keepass/icons/appsettings.png rename to share/keepassx/icons/appsettings.png diff --git a/share/keepass/icons/autotype.png b/share/keepassx/icons/autotype.png similarity index 100% rename from share/keepass/icons/autotype.png rename to share/keepassx/icons/autotype.png diff --git a/share/keepass/icons/bookmark.png b/share/keepassx/icons/bookmark.png similarity index 100% rename from share/keepass/icons/bookmark.png rename to share/keepassx/icons/bookmark.png diff --git a/share/keepass/icons/bookmark_add.png b/share/keepassx/icons/bookmark_add.png similarity index 100% rename from share/keepass/icons/bookmark_add.png rename to share/keepassx/icons/bookmark_add.png diff --git a/share/keepass/icons/bookmark_del.png b/share/keepassx/icons/bookmark_del.png similarity index 100% rename from share/keepass/icons/bookmark_del.png rename to share/keepassx/icons/bookmark_del.png diff --git a/share/keepass/icons/bookmark_edit.png b/share/keepassx/icons/bookmark_edit.png similarity index 100% rename from share/keepass/icons/bookmark_edit.png rename to share/keepassx/icons/bookmark_edit.png diff --git a/share/keepass/icons/bookmark_folder.png b/share/keepassx/icons/bookmark_folder.png similarity index 100% rename from share/keepass/icons/bookmark_folder.png rename to share/keepassx/icons/bookmark_folder.png diff --git a/share/keepass/icons/bookmark_this.png b/share/keepassx/icons/bookmark_this.png similarity index 100% rename from share/keepass/icons/bookmark_this.png rename to share/keepassx/icons/bookmark_this.png diff --git a/share/keepass/icons/clientic.png b/share/keepassx/icons/clientic.png similarity index 100% rename from share/keepass/icons/clientic.png rename to share/keepassx/icons/clientic.png diff --git a/share/keepass/icons/clock.png b/share/keepassx/icons/clock.png similarity index 100% rename from share/keepass/icons/clock.png rename to share/keepassx/icons/clock.png diff --git a/share/keepass/icons/cloneentry.png b/share/keepassx/icons/cloneentry.png similarity index 100% rename from share/keepass/icons/cloneentry.png rename to share/keepassx/icons/cloneentry.png diff --git a/share/keepass/icons/copypwd.png b/share/keepassx/icons/copypwd.png similarity index 100% rename from share/keepass/icons/copypwd.png rename to share/keepassx/icons/copypwd.png diff --git a/share/keepass/icons/copyusername.png b/share/keepassx/icons/copyusername.png similarity index 100% rename from share/keepass/icons/copyusername.png rename to share/keepassx/icons/copyusername.png diff --git a/share/keepass/icons/dbsearch.png b/share/keepassx/icons/dbsearch.png similarity index 100% rename from share/keepass/icons/dbsearch.png rename to share/keepassx/icons/dbsearch.png diff --git a/share/keepass/icons/dbsettings.png b/share/keepassx/icons/dbsettings.png similarity index 100% rename from share/keepass/icons/dbsettings.png rename to share/keepassx/icons/dbsettings.png diff --git a/share/keepass/icons/delete.png b/share/keepassx/icons/delete.png similarity index 100% rename from share/keepass/icons/delete.png rename to share/keepassx/icons/delete.png diff --git a/share/keepass/icons/deleteentry.png b/share/keepassx/icons/deleteentry.png similarity index 100% rename from share/keepass/icons/deleteentry.png rename to share/keepassx/icons/deleteentry.png diff --git a/share/keepass/icons/deletegroup.png b/share/keepassx/icons/deletegroup.png similarity index 100% rename from share/keepass/icons/deletegroup.png rename to share/keepassx/icons/deletegroup.png diff --git a/share/keepass/icons/dice.png b/share/keepassx/icons/dice.png similarity index 100% rename from share/keepass/icons/dice.png rename to share/keepassx/icons/dice.png diff --git a/share/keepass/icons/document.png b/share/keepassx/icons/document.png similarity index 100% rename from share/keepass/icons/document.png rename to share/keepassx/icons/document.png diff --git a/share/keepass/icons/down.png b/share/keepassx/icons/down.png similarity index 100% rename from share/keepass/icons/down.png rename to share/keepassx/icons/down.png diff --git a/share/keepass/icons/editentry.png b/share/keepassx/icons/editentry.png similarity index 100% rename from share/keepass/icons/editentry.png rename to share/keepassx/icons/editentry.png diff --git a/share/keepass/icons/editgroup.png b/share/keepassx/icons/editgroup.png similarity index 100% rename from share/keepass/icons/editgroup.png rename to share/keepassx/icons/editgroup.png diff --git a/share/keepass/icons/exit.png b/share/keepassx/icons/exit.png similarity index 100% rename from share/keepass/icons/exit.png rename to share/keepassx/icons/exit.png diff --git a/share/keepass/icons/expired.png b/share/keepassx/icons/expired.png similarity index 100% rename from share/keepass/icons/expired.png rename to share/keepassx/icons/expired.png diff --git a/share/keepass/icons/fileclose.png b/share/keepassx/icons/fileclose.png similarity index 100% rename from share/keepass/icons/fileclose.png rename to share/keepassx/icons/fileclose.png diff --git a/share/keepass/icons/filedelete.png b/share/keepassx/icons/filedelete.png similarity index 100% rename from share/keepass/icons/filedelete.png rename to share/keepassx/icons/filedelete.png diff --git a/share/keepass/icons/filenew.png b/share/keepassx/icons/filenew.png similarity index 100% rename from share/keepass/icons/filenew.png rename to share/keepassx/icons/filenew.png diff --git a/share/keepass/icons/fileopen.png b/share/keepassx/icons/fileopen.png similarity index 100% rename from share/keepass/icons/fileopen.png rename to share/keepassx/icons/fileopen.png diff --git a/share/keepass/icons/filesave.png b/share/keepassx/icons/filesave.png similarity index 100% rename from share/keepass/icons/filesave.png rename to share/keepassx/icons/filesave.png diff --git a/share/keepass/icons/filesaveas.png b/share/keepassx/icons/filesaveas.png similarity index 100% rename from share/keepass/icons/filesaveas.png rename to share/keepassx/icons/filesaveas.png diff --git a/share/keepass/icons/filesavedisabled.png b/share/keepassx/icons/filesavedisabled.png similarity index 100% rename from share/keepass/icons/filesavedisabled.png rename to share/keepassx/icons/filesavedisabled.png diff --git a/share/keepass/icons/generator.png b/share/keepassx/icons/generator.png similarity index 100% rename from share/keepass/icons/generator.png rename to share/keepassx/icons/generator.png diff --git a/share/keepass/icons/groupsearch.png b/share/keepassx/icons/groupsearch.png similarity index 100% rename from share/keepass/icons/groupsearch.png rename to share/keepassx/icons/groupsearch.png diff --git a/share/keepass/icons/help.png b/share/keepassx/icons/help.png similarity index 100% rename from share/keepass/icons/help.png rename to share/keepassx/icons/help.png diff --git a/share/keepass/icons/i18n.png b/share/keepassx/icons/i18n.png similarity index 100% rename from share/keepass/icons/i18n.png rename to share/keepassx/icons/i18n.png diff --git a/share/keepass/icons/keepassx.png b/share/keepassx/icons/keepassx.png similarity index 100% rename from share/keepass/icons/keepassx.png rename to share/keepassx/icons/keepassx.png diff --git a/share/keepass/icons/keepassx_large.png b/share/keepassx/icons/keepassx_large.png similarity index 100% rename from share/keepass/icons/keepassx_large.png rename to share/keepassx/icons/keepassx_large.png diff --git a/share/keepass/icons/keepassx_locked.png b/share/keepassx/icons/keepassx_locked.png similarity index 100% rename from share/keepass/icons/keepassx_locked.png rename to share/keepassx/icons/keepassx_locked.png diff --git a/share/keepass/icons/key.png b/share/keepassx/icons/key.png similarity index 100% rename from share/keepass/icons/key.png rename to share/keepassx/icons/key.png diff --git a/share/keepass/icons/lock.png b/share/keepassx/icons/lock.png similarity index 100% rename from share/keepass/icons/lock.png rename to share/keepassx/icons/lock.png diff --git a/share/keepass/icons/manual.png b/share/keepassx/icons/manual.png similarity index 100% rename from share/keepass/icons/manual.png rename to share/keepassx/icons/manual.png diff --git a/share/keepass/icons/newentry.png b/share/keepassx/icons/newentry.png similarity index 100% rename from share/keepass/icons/newentry.png rename to share/keepassx/icons/newentry.png diff --git a/share/keepass/icons/newgroup.png b/share/keepassx/icons/newgroup.png similarity index 100% rename from share/keepass/icons/newgroup.png rename to share/keepassx/icons/newgroup.png diff --git a/share/keepass/icons/ok.png b/share/keepassx/icons/ok.png similarity index 100% rename from share/keepass/icons/ok.png rename to share/keepassx/icons/ok.png diff --git a/share/keepass/icons/openurl.png b/share/keepassx/icons/openurl.png similarity index 100% rename from share/keepass/icons/openurl.png rename to share/keepassx/icons/openurl.png diff --git a/share/keepass/icons/pwd_hide.png b/share/keepassx/icons/pwd_hide.png similarity index 100% rename from share/keepass/icons/pwd_hide.png rename to share/keepassx/icons/pwd_hide.png diff --git a/share/keepass/icons/pwd_show.png b/share/keepassx/icons/pwd_show.png similarity index 100% rename from share/keepass/icons/pwd_show.png rename to share/keepassx/icons/pwd_show.png diff --git a/share/keepass/icons/restore.png b/share/keepassx/icons/restore.png similarity index 100% rename from share/keepass/icons/restore.png rename to share/keepassx/icons/restore.png diff --git a/share/keepass/icons/search.png b/share/keepassx/icons/search.png similarity index 100% rename from share/keepass/icons/search.png rename to share/keepassx/icons/search.png diff --git a/share/keepass/icons/swap.png b/share/keepassx/icons/swap.png similarity index 100% rename from share/keepass/icons/swap.png rename to share/keepassx/icons/swap.png diff --git a/share/keepass/icons/templates.png b/share/keepassx/icons/templates.png similarity index 100% rename from share/keepass/icons/templates.png rename to share/keepassx/icons/templates.png diff --git a/share/keepass/icons/text_block.png b/share/keepassx/icons/text_block.png similarity index 100% rename from share/keepass/icons/text_block.png rename to share/keepassx/icons/text_block.png diff --git a/share/keepass/icons/text_bold.png b/share/keepassx/icons/text_bold.png similarity index 100% rename from share/keepass/icons/text_bold.png rename to share/keepassx/icons/text_bold.png diff --git a/share/keepass/icons/text_center.png b/share/keepassx/icons/text_center.png similarity index 100% rename from share/keepass/icons/text_center.png rename to share/keepassx/icons/text_center.png diff --git a/share/keepass/icons/text_italic.png b/share/keepassx/icons/text_italic.png similarity index 100% rename from share/keepass/icons/text_italic.png rename to share/keepassx/icons/text_italic.png diff --git a/share/keepass/icons/text_left.png b/share/keepassx/icons/text_left.png similarity index 100% rename from share/keepass/icons/text_left.png rename to share/keepassx/icons/text_left.png diff --git a/share/keepass/icons/text_right.png b/share/keepassx/icons/text_right.png similarity index 100% rename from share/keepass/icons/text_right.png rename to share/keepassx/icons/text_right.png diff --git a/share/keepass/icons/text_under.png b/share/keepassx/icons/text_under.png similarity index 100% rename from share/keepass/icons/text_under.png rename to share/keepassx/icons/text_under.png diff --git a/share/keepass/icons/trashcan.png b/share/keepassx/icons/trashcan.png similarity index 100% rename from share/keepass/icons/trashcan.png rename to share/keepassx/icons/trashcan.png diff --git a/share/keepass/icons/up.png b/share/keepassx/icons/up.png similarity index 100% rename from share/keepass/icons/up.png rename to share/keepassx/icons/up.png diff --git a/share/keepass/license.html b/share/keepassx/license.html similarity index 100% rename from share/keepass/license.html rename to share/keepassx/license.html diff --git a/share/macx_bundle/icon.icns b/share/macx_bundle/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..42ebe49972cb105b8cc7a57d5cbbb91792c557f2 GIT binary patch literal 69424 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�!AJN{8bKzkzlYWyc#-; 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 yfAVSgJ|M8^x_x}U%tY!iL literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index cc03d27..22efab0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -70,6 +70,7 @@ QHashIconCache; KpxConfig *config; QString AppDir; QString HomeDir; +QString DataDir; QString PluginLoadError; bool TrActive; QString DetailViewTemplate; @@ -97,6 +98,12 @@ int main(int argc, char **_argv) #else HomeDir = QDir::homePath()+"/.keepassx"; #endif + +#if defined Q_WS_MACX + DataDir=AppDir+"/../Resources/keepassx"; +#else + DataDir=AppDir+"/../share/keepassx"; +#endif bool ArgMin = false; bool ArgLock = false; parseCmdLineArgs(argc,argv,ArgFile,ArgCfg,ArgLang,ArgMin,ArgLock); @@ -182,8 +189,7 @@ int main(int argc, char **_argv) qtTranslator=new QTranslator; if(loadTranslation(translator,"keepass-",loc.name(),QStringList() - << AppDir+"/../share/keepass/i18n/" - << AppDir+"/share/i18n/" + << DataDir+"/i18n/" << HomeDir)) { app->installTranslator(translator); @@ -201,8 +207,7 @@ int main(int argc, char **_argv) if(TrActive){ if(loadTranslation(qtTranslator,"qt_",loc.name(),QStringList() << QLibraryInfo::location(QLibraryInfo::TranslationsPath) - << AppDir+"/../share/keepass/i18n/" - << AppDir+"/share/i18n/" + << DataDir+"/i18n/" << HomeDir)) app->installTranslator(qtTranslator); else{ @@ -321,10 +326,8 @@ void openBrowser(const QString& UrlString){ } QString getImageFile(const QString& name){ - if (QFile::exists(AppDir+"/../share/keepass/icons/"+name)) - return AppDir+"/../share/keepass/icons/"+name; - else if (QFile::exists(AppDir+"/share/icons/"+name)) - return AppDir+"/share/icons/"+name; + if (QFile::exists(DataDir+"/icons/"+name)) + return DataDir+"/icons/"+name; else{ QMessageBox::critical(0,QApplication::translate("Main","Error"), QApplication::translate("Main","File '%1' could not be found.") @@ -501,12 +504,13 @@ QString applicationFilePath() }); return filePath.filePath(); - #elif defined(Q_WS_MAC) + #elif defined(Q_WS_MAC) + CFURLRef bundleURL(CFBundleCopyExecutableURL(CFBundleGetMainBundle())); - assert(bundleURL); + //assert(bundleURL); CFStringRef cfPath(CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle)); - assert(cfPath); + //assert(cfPath); CFIndex length = CFStringGetLength(cfPath); const UniChar *chars = CFStringGetCharactersPtr(cfPath); if (chars) diff --git a/src/main.h b/src/main.h index 085aab2..ed86c27 100644 --- a/src/main.h +++ b/src/main.h @@ -61,6 +61,7 @@ extern QString PluginLoadError; extern KpxConfig *config; extern QString AppDir; extern QString HomeDir; +extern QString DataDir; extern bool TrActive; extern QString DetailViewTemplate; extern QPixmap *EntryIcons; diff --git a/src/src.pro b/src/src.pro index 2e7b803..1f67fb8 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,35 +1,34 @@ -DEPENDPATH += crypto \ - dialogs \ - export \ - forms \ - import \ - lib \ - translations \ - res +CONFIG = qt uic resources thread stl warn_off release +QT += xml -win32:QMAKE_WIN32 = 1 +DEPENDPATH += crypto dialogs export forms import lib translations res +INCLUDEPATH += . lib crypto plugins/interfaces export import dialogs MOC_DIR = ../build/moc UI_DIR = ../build/ui OBJECTS_DIR = ../build RCC_DIR = ../build/rcc -INSTALLS += target data -data.files += ../share/keepass/* -TARGET = ../bin/keepassx +isEqual(DEBUG,1) { + CONFIG += debug +} -unix : !macx : !isEqual(QMAKE_WIN32,1) { + +#------------------------------------------------------------------------------- +# Platform Specific: Unix (except MacOS X) +#------------------------------------------------------------------------------- +unix : !macx { isEmpty(PREFIX):PREFIX = /usr - !isEqual(AUTOTYPE,0) { DEFINES += AUTOTYPE !isEqual(GLOBAL_AUTOTYPE,0) { DEFINES += GLOBAL_AUTOTYPE } } - target.path = $${PREFIX}/bin - data.path = $${PREFIX}/share/keepass + TARGET = ../bin/keepassx + TARGET.path = $${PREFIX}/bin + data.path = $${PREFIX}/share pixmaps.files = ../share/pixmaps/* pixmaps.path = $${PREFIX}/share/pixmaps desktop.files = ../share/applications/* @@ -44,30 +43,58 @@ unix : !macx : !isEqual(QMAKE_WIN32,1) { SOURCES += Application_X11.cpp HEADERS += Application_X11.h } + isEqual(BUILD_FOR_LSB,1) { + QMAKE_CXX = lsbcc + } } + +#------------------------------------------------------------------------------- +# Platform Specific: MacOS X +#------------------------------------------------------------------------------- macx { isEmpty(PREFIX):PREFIX = /Applications - target.path = $${PREFIX} - data.path = $${PREFIX}/keepassx.app/Contents/share/keepass + TARGET = ../bin/KeePassX + TARGET.path = $${PREFIX} + data.path = Contents/Resources + isEmpty(QT_FRAMEWORK_DIR) : QT_FRAMEWORK_DIR = /Library/Frameworks + private_frameworks.files += $${QT_FRAMEWORK_DIR}/QtCore.framework + private_frameworks.files += $${QT_FRAMEWORK_DIR}/QtGui.framework + private_frameworks.files += $${QT_FRAMEWORK_DIR}/QtXml.framework + private_frameworks.path = Contents/Frameworks + QMAKE_BUNDLE_DATA += data private_frameworks LIBS += -framework CoreFoundation + ICON = ../share/macx_bundle/icon.icns + CONFIG += app_bundle + isEqual(ARCH,UNIVERSAL) : CONFIG += x86 ppc + isEqual(ARCH,INTEL) : CONFIG += x86 + isEqual(ARCH,PPC) : CONFIG += ppc } -isEqual(QMAKE_WIN32,1) { +#------------------------------------------------------------------------------- +# Platform Specific: Windows +#------------------------------------------------------------------------------- +win32 { + CONFIG += windows isEmpty(PREFIX):PREFIX = "C:/Program files/KeePassX" - - target.path = $${PREFIX} + TARGET = ../bin/KeePassX + TARGET.path = $${PREFIX} data.path = $${PREFIX}/share RC_FILE = ../share/ico/keepassx.rc QMAKE_LINK_OBJECT_SCRIPT = $${OBJECTS_DIR}/$${QMAKE_LINK_OBJECT_SCRIPT} } + +data.files += ../share/keepassx +INSTALLS += TARGET data + contains(DEFINES,GLOBAL_AUTOTYPE) { FORMS += forms/AutoTypeDlg.ui HEADERS += dialogs/AutoTypeDlg.h SOURCES += dialogs/AutoTypeDlg.cpp } + FORMS += forms/EditGroupDlg.ui \ forms/SearchDlg.ui \ forms/AboutDlg.ui \ @@ -210,30 +237,3 @@ SOURCES += lib/UrlLabel.cpp \ dialogs/ManageBookmarksDlg.cpp RESOURCES += res/resources.qrc -CONFIG = qt \ - uic \ - resources \ - thread \ - stl \ - warn_off -QT += xml -TEMPLATE = app -INCLUDEPATH += . \ - lib \ - crypto \ - plugins/interfaces \ - export \ - import \ - dialogs \ - ./ - -isEqual(RELEASE,1) { - CONFIG += release -} -else { - CONFIG += debug -} - -isEqual(QMAKE_WIN32,1) { - CONFIG += windows -}