a lot of stuff:
authorkoda
Tue, 14 Jul 2009 20:02:07 +0000
changeset 2261 57e99c908e7c
parent 2260 31756e21c436
child 2262 0dc94341bf42
a lot of stuff: - added an autoupdater option * works in mac osx only * the xml file should be hosted on official webserver * checkbox could be moved in a "updates section" of the option page * only english and italian translation provided for new option - reverted openalbridge type for compatibility - german translation fix
QTfrontend/CMakeLists.txt
QTfrontend/CocoaInitializer.h
QTfrontend/CocoaInitializer.mm
QTfrontend/SparkleAutoUpdater.h
QTfrontend/SparkleAutoUpdater.mm
QTfrontend/gameuiconfig.cpp
QTfrontend/gameuiconfig.h
QTfrontend/hwform.cpp
QTfrontend/main.cpp
QTfrontend/pages.cpp
QTfrontend/pages.h
cmake_modules/FindSparkle.cmake
openalbridge/endianness.h
openalbridge/globals.h
openalbridge/openalwrap.c
openalbridge/openalwrap.h
share/Info.plist.in
share/hedgewars/Data/Locale/de.txt
share/hedgewars/Data/Locale/hedgewars_it.qm
share/hedgewars/Data/Locale/hedgewars_it.ts
tools/CreateMacBundle.cmake.in
--- a/QTfrontend/CMakeLists.txt	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/CMakeLists.txt	Tue Jul 14 20:02:07 2009 +0000
@@ -137,6 +137,12 @@
 	bgwidget.h
 	)
 
+if(APPLE)
+find_package(Sparkle REQUIRED)
+set(hwfr_src ${hwfr_src} AutoUpdater.cpp CocoaInitializer.mm SparkleAutoUpdater.mm)
+#set(hwfr_moc_hdrs ${hwfr_moc_hdrs} AutoUpdater.h CocoaInitializer.h SparkleAutoUpdater.h)
+endif(APPLE)
+
 set(hwfr_hdrs
 	binds.h
 	ui_hwform.h
@@ -183,6 +189,7 @@
 		${OGG_LIBRARY}
 		${VORBIS_LIBRARY}
 		${HW_LINK_LIBS}
+		${SPARKLE_LIBRARY}
 		)
 endif(APPLE)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/CocoaInitializer.h	Tue Jul 14 20:02:07 2009 +0000
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2008 Remko Troncon
+ */
+
+#ifndef COCOAINITIALIZER_H
+#define COCOAINITIALIZER_H
+
+class CocoaInitializer
+{
+	public:
+		CocoaInitializer();
+		~CocoaInitializer();
+	
+	private:
+		class Private;
+		Private* d;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/CocoaInitializer.mm	Tue Jul 14 20:02:07 2009 +0000
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 Remko Troncon
+ */
+
+#include "CocoaInitializer.h"
+
+#include <AppKit/AppKit.h>
+#include <Cocoa/Cocoa.h>
+#include <QtDebug>
+
+class CocoaInitializer::Private 
+{
+	public:
+		NSAutoreleasePool* autoReleasePool_;
+};
+
+CocoaInitializer::CocoaInitializer()
+{
+	d = new CocoaInitializer::Private();
+	NSApplicationLoad();
+	d->autoReleasePool_ = [[NSAutoreleasePool alloc] init];
+}
+
+CocoaInitializer::~CocoaInitializer()
+{
+	[d->autoReleasePool_ release];
+	delete d;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/SparkleAutoUpdater.h	Tue Jul 14 20:02:07 2009 +0000
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 Remko Troncon
+ */
+
+#ifndef SPARKLEAUTOUPDATER_H
+#define SPARKLEAUTOUPDATER_H
+
+#include <QString>
+
+#include "AutoUpdater.h"
+
+class SparkleAutoUpdater : public AutoUpdater
+{
+	public:
+		SparkleAutoUpdater(const QString& url);
+		~SparkleAutoUpdater();
+
+		void checkForUpdates();
+	
+	private:
+		class Private;
+		Private* d;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/SparkleAutoUpdater.mm	Tue Jul 14 20:02:07 2009 +0000
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 Remko Troncon
+ */
+
+#include "SparkleAutoUpdater.h"
+
+#include <Cocoa/Cocoa.h>
+#include <Sparkle/Sparkle.h>
+
+class SparkleAutoUpdater::Private
+{
+	public:
+		SUUpdater* updater;
+};
+
+SparkleAutoUpdater::SparkleAutoUpdater(const QString& aUrl)
+{
+	d = new Private;
+
+	d->updater = [SUUpdater sharedUpdater];
+	[d->updater retain];
+
+	NSURL* url = [NSURL URLWithString:
+			[NSString stringWithUTF8String: aUrl.toUtf8().data()]];
+	[d->updater setFeedURL: url];
+}
+
+SparkleAutoUpdater::~SparkleAutoUpdater()
+{
+	[d->updater release];
+	delete d;
+}
+
+void SparkleAutoUpdater::checkForUpdates()
+{
+	[d->updater checkForUpdatesInBackground];
+}
--- a/QTfrontend/gameuiconfig.cpp	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/gameuiconfig.cpp	Tue Jul 14 20:02:07 2009 +0000
@@ -64,7 +64,12 @@
 
 	Form->ui.pageOptions->CBAltDamage->setChecked(value("misc/altdamage", false).toBool());
 	Form->ui.pageOptions->CBNameWithDate->setChecked(value("misc/appendTimeToRecords", false).toBool());
-
+    
+#ifdef __APPLE__
+    //autoupdate
+    Form->ui.pageOptions->CBAutoUpdate->setChecked(value("misc/autoUpdate", true).toBool());
+#endif
+    
 	depth = QApplication::desktop()->depth();
 	if (depth < 16) depth = 16;
 	else if (depth > 16) depth = 32;
@@ -120,6 +125,11 @@
 
 	setValue("misc/altdamage", isAltDamageEnabled());
 	setValue("misc/appendTimeToRecords", appendDateTimeToRecordName());
+    
+#ifdef __APPLE__
+    //autoupdate
+    setValue("misc/autoUpdate", isAutoUpdateEnabled());
+#endif 
 }
 
 QRect GameUIConfig::vid_Resolution()
@@ -178,6 +188,14 @@
 	return Form->ui.pageOptions->CBNameWithDate->isChecked();
 }
 
+#ifdef __APPLE__
+//autoupdate
+bool GameUIConfig::isAutoUpdateEnabled()
+{
+    return Form->ui.pageOptions->CBAutoUpdate->isChecked();
+}
+#endif
+
 quint8 GameUIConfig::timerInterval()
 {
 	return 35 - Form->ui.pageOptions->fpsedit->value();
--- a/QTfrontend/gameuiconfig.h	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/gameuiconfig.h	Tue Jul 14 20:02:07 2009 +0000
@@ -48,7 +48,12 @@
 	bool isFrontendEffects() const;
 	bool isFrontendFullscreen() const;
 	void resizeToConfigValues();
-
+    
+#ifdef __APPLE__
+    //autoupdate
+    bool isAutoUpdateEnabled();
+#endif
+    
  signals:
 	void frontendFullscreen(bool value);
 
--- a/QTfrontend/hwform.cpp	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/hwform.cpp	Tue Jul 14 20:02:07 2009 +0000
@@ -55,6 +55,12 @@
 #include "ammoSchemeModel.h"
 #include "bgwidget.h"
 
+#ifdef __APPLE__
+//autoupdate
+#include "CocoaInitializer.h"
+#include "SparkleAutoUpdater.h"
+#endif
+
 // I started handing this down to each place it touches, but it was getting ridiculous
 // and this one flag does not warrant a static class
 bool frontendEffects = true;
@@ -74,7 +80,16 @@
 	config = new GameUIConfig(this, cfgdir->absolutePath() + "/hedgewars.ini");
 	
 	namegen = new HWNamegen();
-
+    
+#ifdef __APPLE__
+        //autoupdate
+        AutoUpdater* updater;
+        CocoaInitializer initializer;
+        updater = new SparkleAutoUpdater("http://files.getdropbox.com/u/24468/appcast.xml"); //this has to change before release!!!
+        if(updater && config->isAutoUpdateEnabled())
+            updater->checkForUpdates();
+#endif
+    
 	UpdateTeamsLists();
 	UpdateWeapons();
 
--- a/QTfrontend/main.cpp	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/main.cpp	Tue Jul 14 20:02:07 2009 +0000
@@ -24,6 +24,8 @@
 #include <QRegExp>
 #include <QMap>
 
+
+
 #include "hwform.h"
 #include "hwconsts.h"
 
@@ -44,7 +46,7 @@
 
 int main(int argc, char *argv[])
 {
-	QApplication app(argc, argv);
+    QApplication app(argc, argv);
 
     QStringList arguments = app.arguments();
     QMap<QString, QString> parsedArgs;
@@ -286,6 +288,8 @@
 
 	cfgdir->setPath(cfgdir->homePath());
 #ifdef __APPLE__
+
+    
 	if (checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars"))
 	{
 		checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Demos");
@@ -336,6 +340,8 @@
 	mapList = new QStringList(tmpdir.entryList(QStringList("*")));
 
 	HWForm *Form = new HWForm();
+    
+
 	Form->show();
 	return app.exec();
 }
--- a/QTfrontend/pages.cpp	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/pages.cpp	Tue Jul 14 20:02:07 2009 +0000
@@ -389,11 +389,12 @@
 	{
 		AGGroupBox = new IconedGroupBox(this);
 		AGGroupBox->setIcon(QIcon(":/res/graphicsicon.png"));
-		AGGroupBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+		AGGroupBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
 		AGGroupBox->setTitle(QGroupBox::tr("Audio/Graphic options"));
 
 		QVBoxLayout * GBAlayout = new QVBoxLayout(AGGroupBox);
 		QHBoxLayout * GBAreslayout = new QHBoxLayout(0);
+            
 		QLabel * resolution = new QLabel(AGGroupBox);
 		resolution->setText(QLabel::tr("Resolution"));
 		GBAreslayout->addWidget(resolution);
@@ -444,7 +445,6 @@
 		volumeBox->setSingleStep(5);
 		volumeBox->setEnabled(openal_ready());
 		GBAvollayout->addWidget(volumeBox);
-		
 
 		CBShowFPS = new QCheckBox(AGGroupBox);
 		CBShowFPS->setText(QCheckBox::tr("Show FPS"));
@@ -458,9 +458,16 @@
 		CBNameWithDate->setText(QCheckBox::tr("Append date and time to record file name"));
 		GBAlayout->addWidget(CBNameWithDate);
 
-		fpsedit = new FPSEdit(AGGroupBox);
-		GBAfpslayout->addWidget(fpsedit);
-		gbTBLayout->addWidget(AGGroupBox, 0, 1, 2, 1);
+#ifdef __APPLE__
+            //autoupdate
+		CBAutoUpdate = new QCheckBox(AGGroupBox);
+		CBAutoUpdate->setText(QCheckBox::tr("Check for updates at startup"));
+		GBAlayout->addWidget(CBAutoUpdate);
+#endif
+            
+            fpsedit = new FPSEdit(AGGroupBox);
+            GBAfpslayout->addWidget(fpsedit);
+            gbTBLayout->addWidget(AGGroupBox, 0, 1, 2, 1);
 	}
 
 	BtnSaveOptions = addButton(":/res/Save.png", pageLayout, 2, 2, true);
--- a/QTfrontend/pages.h	Sun Jul 12 19:12:08 2009 +0000
+++ b/QTfrontend/pages.h	Tue Jul 14 20:02:07 2009 +0000
@@ -221,6 +221,10 @@
 	QCheckBox *CBShowFPS;
 	QCheckBox *CBAltDamage;
 	QCheckBox *CBNameWithDate;
+#ifdef __APPLE__
+    QCheckBox *CBAutoUpdate;
+#endif
+    
 	FPSEdit *fpsedit;
 	QPushButton *BtnSaveOptions;
 	QLabel *labelNN;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake_modules/FindSparkle.cmake	Tue Jul 14 20:02:07 2009 +0000
@@ -0,0 +1,40 @@
+### SuperTux - Removed unused vorbisenc library
+
+# - Try to find the OggVorbis libraries
+# Once done this will define
+#
+#  OGGVORBIS_FOUND - system has OggVorbis
+#  OGGVORBIS_VERSION - set either to 1 or 2
+#  OGGVORBIS_INCLUDE_DIR - the OggVorbis include directory
+#  OGGVORBIS_LIBRARIES - The libraries needed to use OggVorbis
+#  OGG_LIBRARY         - The Ogg library
+#  VORBIS_LIBRARY      - The Vorbis library
+#  VORBISFILE_LIBRARY  - The VorbisFile library
+# Copyright (c) 2006, Richard Laerkaeng, <richard@goteborg.utfors.se>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+include (CheckLibraryExists)
+find_path(SPARKLE_INCLUDE_DIR Sparkle.h)
+find_library(SPARKLE_LIBRARY NAMES Sparkle)
+
+if (SPARKLE_INCLUDE_DIR AND SPARKLE_LIBRARY)
+   set(SPARKLE_FOUND TRUE)
+else ()
+   set(SPARKLE_FOUND FALSE)
+endif ()
+
+if (SPARKLE_FOUND)
+   if (NOT Sparkle_FIND_QUIETLY)
+      message(STATUS "Found Sparkle: ${SPARKLE_LIBRARY}")
+   endif ()
+else ()
+   if (Sparkle_FIND_REQUIRED)
+      message(FATAL_ERROR "Could NOT find Sparkle framework")
+   endif ()
+   if (NOT Sparkle_FIND_QUIETLY)
+      message(STATUS "Could NOT find Sparkle framework")
+   endif ()
+endif ()
+
--- a/openalbridge/endianness.h	Sun Jul 12 19:12:08 2009 +0000
+++ b/openalbridge/endianness.h	Tue Jul 14 20:02:07 2009 +0000
@@ -25,9 +25,7 @@
 #ifdef __CPLUSPLUS
 extern "C" {
 #endif 
-    
-#pragma once
-    
+        
     int invert_endianness(uint32_t number);
     
 #ifdef __CPLUSPLUS
--- a/openalbridge/globals.h	Sun Jul 12 19:12:08 2009 +0000
+++ b/openalbridge/globals.h	Tue Jul 14 20:02:07 2009 +0000
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
-#include <stdbool.h>
 #include <string.h>
 
 #ifndef _WIN32
@@ -102,8 +101,8 @@
 #pragma pack()
     
     /*other defines*/
-#define FADE_IN	 true
-#define FADE_OUT false
+#define FADE_IN	 AL_TRUE
+#define FADE_OUT AL_FALSE
     
 #ifdef __CPLUSPLUS
 }
--- a/openalbridge/openalwrap.c	Sun Jul 12 19:12:08 2009 +0000
+++ b/openalbridge/openalwrap.c	Tue Jul 14 20:02:07 2009 +0000
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
 
-#include "globals.h"
+#include "openalwrap.h"
 #include "wrappers.h"
 #include "alc.h"
 #include "loaders.h"
@@ -312,7 +312,7 @@
     }
     
     
-    ALboolean openal_fade (uint32_t index, uint16_t quantity, bool direction) {
+    ALboolean openal_fade (uint32_t index, uint16_t quantity, ALboolean direction) {
         /*Fade in or out by calling a helper thread*/
 #ifndef _WIN32
         pthread_t thread;
--- a/openalbridge/openalwrap.h	Sun Jul 12 19:12:08 2009 +0000
+++ b/openalbridge/openalwrap.h	Tue Jul 14 20:02:07 2009 +0000
@@ -18,26 +18,27 @@
 
 #ifndef _OALB_INTERFACE_H
 #define _OALB_INTERFACE_H
-#include <stdbool.h>
+
+#include "globals.h"
 
 #ifdef __CPLUSPLUS
 extern "C" {
 #endif 
     
-    bool openal_init		(unsigned int memorysize);
-    bool openal_close		(void);
-    int  openal_loadfile	(const char *filename);
-    bool openal_toggleloop	(unsigned int index);
-    bool openal_setposition	(unsigned int index, float x, float y, float z);
-    bool openal_setvolume	(unsigned int index, unsigned char percentage);
-    bool openal_setglobalvolume	(unsigned char percentage);
-    bool openal_togglemute	(void);
-    bool openal_fadeout		(unsigned int index, unsigned short int quantity);
-    bool openal_fadein		(unsigned int index, unsigned short int quantity);
-    bool openal_fade		(unsigned int index, unsigned short int quantity, bool direction);
-    bool openal_playsound	(unsigned int index);	
-    bool openal_pausesound	(unsigned int index);
-    bool openal_stopsound	(unsigned int index);
+    ALboolean openal_init		(unsigned int memorysize);
+    ALboolean openal_close		(void);
+    ALint     openal_loadfile           (const char *filename);
+    ALboolean openal_toggleloop         (unsigned int index);
+    ALboolean openal_setposition	(unsigned int index, float x, float y, float z);
+    ALboolean openal_setvolume          (unsigned int index, unsigned char percentage);
+    ALboolean openal_setglobalvolume	(unsigned char percentage);
+    ALboolean openal_togglemute         (void);
+    ALboolean openal_fadeout            (unsigned int index, unsigned short int quantity);
+    ALboolean openal_fadein             (unsigned int index, unsigned short int quantity);
+    ALboolean openal_fade               (unsigned int index, unsigned short int quantity, ALboolean direction);
+    ALboolean openal_playsound          (unsigned int index);	
+    ALboolean openal_pausesound         (unsigned int index);
+    ALboolean openal_stopsound          (unsigned int index);
     
 #ifdef __CPLUSPLUS
 }
--- a/share/Info.plist.in	Sun Jul 12 19:12:08 2009 +0000
+++ b/share/Info.plist.in	Tue Jul 14 20:02:07 2009 +0000
@@ -21,7 +21,7 @@
 	<key>NSAppleScriptEnabled</key>
 	<false/>
 	<key>LSExecutableArchitectures</key>
-   	<string>i386, ppc</string>
+   	<string>i386</string>
 	<key>LSMinimumSystemVersion</key>
 	<string>10.4.0</string>
 	<key>LSRequiresNativeExecution</key>
--- a/share/hedgewars/Data/Locale/de.txt	Sun Jul 12 19:12:08 2009 +0000
+++ b/share/hedgewars/Data/Locale/de.txt	Tue Jul 14 20:02:07 2009 +0000
@@ -22,7 +22,7 @@
 00:19=Teleporter
 00:20=Igel wechseln
 00:21=Mörser
-00:22=Stoßen
+00:22=Peitsche
 00:23=Kamikaze
 00:24=Torte
 00:25=Verführung
@@ -93,4 +93,5 @@
 02:09=%1 sollte besser Zielen üben!
 02:09=%1 scheint sich zu hassen.
 02:09=%1 steht auf der falschen Seite!
-02:09=%1 lebt gefährlich!
\ No newline at end of file
+02:09=%1 lebt gefährlich!
+
Binary file share/hedgewars/Data/Locale/hedgewars_it.qm has changed
--- a/share/hedgewars/Data/Locale/hedgewars_it.ts	Sun Jul 12 19:12:08 2009 +0000
+++ b/share/hedgewars/Data/Locale/hedgewars_it.ts	Tue Jul 14 20:02:07 2009 +0000
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS><TS version="1.1" language="it_IT">
+<defaultcodec></defaultcodec>
 <context>
     <name>AmmoSchemeModel</name>
     <message>
@@ -16,12 +17,10 @@
         <translation>Mai</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Every turn</source>
         <translation type="obsolete">Ogni turno</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Each %1 turn</source>
         <translation type="obsolete">Ogni %1 turni</translation>
     </message>
@@ -177,7 +176,6 @@
 <context>
     <name>HWNewNet</name>
     <message>
-        <location filename="" line="0"/>
         <source>Error</source>
         <translation type="obsolete">Errore</translation>
     </message>
@@ -237,7 +235,7 @@
     <message>
         <location filename="../../../../QTfrontend/KB.h" line="32"/>
         <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It&apos;s recommended to update your freetype lib.</source>
-        <translation>SDL_ttf ha ritornato un errore durante l&apos;esecuzione del testo, probabilmente relativo ad un bug in freetype2. Si raccomanda di aggiornare le proprie librerie freetype.</translation>
+        <translation>SDL_ttf ha ritornato un errore durante il rendering del testo, probabilmente relativo ad un bug in freetype2. Si raccomanda di aggiornare le proprie librerie freetype.</translation>
     </message>
 </context>
 <context>
@@ -269,12 +267,10 @@
 <context>
     <name>PageEditTeam</name>
     <message>
-        <location filename="" line="0"/>
         <source>Discard</source>
         <translation type="obsolete">Annulla</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Save</source>
         <translation type="obsolete">Salva</translation>
     </message>
@@ -316,42 +312,34 @@
 <context>
     <name>PageMain</name>
     <message>
-        <location filename="" line="0"/>
         <source>Single Player</source>
         <translation type="obsolete">Giocatore Singolo</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Multiplayer</source>
         <translation type="obsolete">Multigiocatore</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Net game</source>
         <translation type="obsolete">Gioco in rete</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Saved games</source>
         <translation type="obsolete">Partite salvate</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Demos</source>
         <translation type="obsolete">Demo</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Setup</source>
         <translation type="obsolete">Impostazioni</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>About</source>
         <translation type="obsolete">Crediti</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Exit</source>
         <translation type="obsolete">Esci</translation>
     </message>
@@ -369,7 +357,6 @@
 <context>
     <name>PageMultiplayer</name>
     <message>
-        <location filename="" line="0"/>
         <source>Back</source>
         <translation type="obsolete">Indietro</translation>
     </message>
@@ -382,12 +369,10 @@
 <context>
     <name>PageNet</name>
     <message>
-        <location filename="" line="0"/>
         <source>Local</source>
         <translation type="obsolete">Locale</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Internet</source>
         <translation type="obsolete">Internet</translation>
     </message>
@@ -436,12 +421,10 @@
         <translation>Modifica squadra</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Save</source>
         <translation type="obsolete">Salva</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Back</source>
         <translation type="obsolete">Indietro</translation>
     </message>
@@ -618,7 +601,6 @@
 <context>
     <name>PageSelectWeapon</name>
     <message>
-        <location filename="" line="0"/>
         <source>Back</source>
         <translation type="obsolete">Indietro</translation>
     </message>
@@ -633,7 +615,6 @@
         <translation>Elimina</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Save</source>
         <translation type="obsolete">Salva</translation>
     </message>
@@ -641,27 +622,22 @@
 <context>
     <name>PageSinglePlayer</name>
     <message>
-        <location filename="" line="0"/>
         <source>Simple Game</source>
         <translation type="obsolete">Partita semplice</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Training</source>
         <translation type="obsolete">Allenamento</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Multiplayer</source>
         <translation type="obsolete">Multigiocatore</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Saved games</source>
         <translation type="obsolete">Partite salvate</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Demos</source>
         <translation type="obsolete">Demo</translation>
     </message>
@@ -727,7 +703,6 @@
 <context>
     <name>QCheckBox</name>
     <message>
-        <location filename="" line="0"/>
         <source>Forts mode</source>
         <translation type="obsolete">Modalità Fortino</translation>
     </message>
@@ -752,6 +727,11 @@
         <translation>Mostra danno in maniera alternativa</translation>
     </message>
     <message>
+        <location filename="../../../../QTfrontend/pages.cpp" line="462"/>
+        <source>Check for updates at startup</source>
+        <translation>Controlla aggiornamenti all&apos;avvio</translation>
+    </message>
+    <message>
         <location filename="../../../../QTfrontend/pages.cpp" line="428"/>
         <source>Enable music</source>
         <translation>Abilita musica</translation>
@@ -762,22 +742,19 @@
         <translation>Frontend schermo intero</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Divide teams</source>
         <translation type="obsolete">Dividi le squadre</translation>
     </message>
     <message>
-        <location filename="../../../../QTfrontend/pages.cpp" line="451"/>
+        <location filename="../../../../QTfrontend/pages.cpp" line="458"/>
         <source>Append date and time to record file name</source>
         <translation>Concatena data e ora di registrazione al nome file</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Solid land</source>
         <translation type="obsolete">Terreno solido</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Add Border</source>
         <translation type="obsolete">Aggiungi bordo</translation>
     </message>
@@ -805,27 +782,22 @@
         <translation>Umano</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Level 5</source>
         <translation type="obsolete">Livello 5</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Level 4</source>
         <translation type="obsolete">Livello 4</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Level 3</source>
         <translation type="obsolete">Livello 3</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Level 2</source>
         <translation type="obsolete">Livello 2</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Level 1</source>
         <translation type="obsolete">Livello 1</translation>
     </message>
@@ -838,12 +810,10 @@
 <context>
     <name>QGroupBox</name>
     <message>
-        <location filename="" line="0"/>
         <source>Landscape</source>
         <translation type="obsolete">Paesaggio</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Game scheme</source>
         <translation type="obsolete">Schema di gioco</translation>
     </message>
@@ -863,12 +833,10 @@
         <translation>Associazione dei tasti</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Grave</source>
         <translation type="obsolete">Lapide</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Team level</source>
         <translation type="obsolete">Livello della squadra</translation>
     </message>
@@ -893,12 +861,10 @@
         <translation>Armi</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Net options</source>
         <translation type="obsolete">Opzioni di rete</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Servers list</source>
         <translation type="obsolete">Lista dei server</translation>
     </message>
@@ -913,7 +879,6 @@
         <translation>Squadre in gioco</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Scheme options</source>
         <translation type="obsolete">Opzioni di schema</translation>
     </message>
@@ -941,7 +906,6 @@
         <translation>Mine</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>&lt;h3&gt;Version 0.9.2&lt;/h3&gt;</source>
         <translation type="obsolete">&lt;h3&gt;Versione 0.9.2&lt;/h3&gt;</translation>
     </message>
@@ -971,12 +935,10 @@
         <translation>Ringraziamenti speciali:</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Turn time</source>
         <translation type="obsolete">Tempo del turno</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Initial health</source>
         <translation type="obsolete">Salute iniziale</translation>
     </message>
@@ -986,12 +948,10 @@
         <translation>Armi</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>&lt;p&gt;The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; pts.&lt;/p&gt;</source>
         <translation type="obsolete">&lt;p&gt;Il premio per il miglior colpo è vinto da &lt;b&gt;%1&lt;/b&gt; , con &lt;b&gt;%2&lt;/b&gt; punti.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>&lt;p&gt;A total of &lt;b&gt;%1&lt;/b&gt; Hedgehog(s) were killed during this round.&lt;/p&gt;</source>
         <translation type="obsolete">&lt;p&gt;Un totale di &lt;b&gt;%1&lt;/b&gt; Hedgehog(s) sono stati uccisi durante questo round.&lt;/p&gt;</translation>
     </message>
@@ -1036,7 +996,6 @@
         <translation>Versione</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>&lt;p&gt;The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; kills.&lt;/p&gt;</source>
         <translation type="obsolete">&lt;p&gt;Il premio per il miglior colpo è stato vinto da &lt;b&gt;%1&lt;/b&gt; con &lt;b&gt;%2&lt;/b&gt; hedgehog uccisi.&lt;/p&gt;</translation>
     </message>
@@ -1046,12 +1005,10 @@
         <translation>Suoni:</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Turns before SD</source>
         <translation type="obsolete">Turni prima del SD</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Crate drops</source>
         <translation type="obsolete">Caduta casse</translation>
     </message>
@@ -1081,7 +1038,6 @@
         <translation>Timeout del sudden death</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Case Probability</source>
         <translation type="obsolete">Probabilità di casse</translation>
     </message>
@@ -1112,7 +1068,6 @@
 <context>
     <name>QMainWindow</name>
     <message>
-        <location filename="" line="0"/>
         <source>Hedgewars</source>
         <translation type="obsolete">Hedgewars</translation>
     </message>
@@ -1190,7 +1145,6 @@
 <context>
     <name>QPushButton</name>
     <message>
-        <location filename="" line="0"/>
         <source>Waiting</source>
         <translation type="obsolete">In attesa</translation>
     </message>
@@ -1235,7 +1189,6 @@
         <translation>Specifica</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Back</source>
         <translation type="obsolete">Indietro</translation>
     </message>
@@ -1245,12 +1198,10 @@
         <translation>Gioca</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Simple Game</source>
         <translation type="obsolete">Partita semplice</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Training</source>
         <translation type="obsolete">Allenamento</translation>
     </message>
@@ -1280,7 +1231,6 @@
         <translation>Impostazioni</translation>
     </message>
     <message>
-        <location filename="" line="0"/>
         <source>Join official server</source>
         <translation type="obsolete">Entra nel server ufficiale</translation>
     </message>
--- a/tools/CreateMacBundle.cmake.in	Sun Jul 12 19:12:08 2009 +0000
+++ b/tools/CreateMacBundle.cmake.in	Tue Jul 14 20:02:07 2009 +0000
@@ -1,4 +1,4 @@
-execute_process(COMMAND ${macdeployqt_EXE} ${CMAKE_BINARY_DIR}/${bundle_name} OUTPUT_QUIET)
+execute_process(COMMAND ${macdeployqt_EXE} ${CMAKE_BINARY_DIR}/${bundle_name} OUTPUT_QUIET ERROR_QUIET)
 
 execute_process(COMMAND cp -pPR /Library/Frameworks/SDL.framework/	  ${CMAKE_BINARY_DIR}/${frameworks_dir}/SDL.framework)
 execute_process(COMMAND cp -pPR /Library/Frameworks/SDL_image.framework/  ${CMAKE_BINARY_DIR}/${frameworks_dir}/SDL_image.framework)
@@ -6,7 +6,8 @@
 execute_process(COMMAND cp -pPR /Library/Frameworks/SDL_ttf.framework/    ${CMAKE_BINARY_DIR}/${frameworks_dir}/SDL_ttf.framework)
 execute_process(COMMAND cp -pPR /Library/Frameworks/Ogg.framework/  	  ${CMAKE_BINARY_DIR}/${frameworks_dir}/Ogg.framework)
 execute_process(COMMAND cp -pPR /Library/Frameworks/Vorbis.framework/	  ${CMAKE_BINARY_DIR}/${frameworks_dir}/Vorbis.framework)
+execute_process(COMMAND cp -pPR /Library/Frameworks/Sparkle.framework/	  ${CMAKE_BINARY_DIR}/${frameworks_dir}/Sparkle.framework)
 
 if(${HAVE_NETSERVER})
-execute_process(COMMAND cp -pPR /Library/Frameworks/SDL_ttf.framework/ ${CMAKE_BINARY_DIR}/${frameworks_dir}/GMP.framework)
+execute_process(COMMAND cp -pPR /Library/Frameworks/GMP.framework/ ${CMAKE_BINARY_DIR}/${frameworks_dir}/GMP.framework)
 endif()