[packages/audacity] - new URLs, updated to 2.1.1 - removed obsolete system-libs,wx-fd-constants,wx30 patches - added cas
qboosh
qboosh at pld-linux.org
Sun Oct 18 11:27:58 CEST 2015
commit 5eec20a962bde93cc79b18b8d5c74350405d8950
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sun Oct 18 11:29:01 2015 +0200
- new URLs, updated to 2.1.1
- removed obsolete system-libs,wx-fd-constants,wx30 patches
- added cast patch (add cast to fix build with current g++/wx)
audacity-cast.patch | 11 +
audacity-system-libs.patch | 26 -
audacity.spec | 109 ++--
wx-fd-constants.patch | 73 ---
wx30.patch | 1329 --------------------------------------------
5 files changed, 80 insertions(+), 1468 deletions(-)
---
diff --git a/audacity.spec b/audacity.spec
index 51571ce..afa8f4f 100644
--- a/audacity.spec
+++ b/audacity.spec
@@ -2,79 +2,75 @@
# - internal portaudio crashes when only OSS is available on startup
# - use system portaudio (>= 19, but relies on local changes)
# - use system portSMF?
-# - use system ffmpeg (libavcodec >= 51.53, libavformat >= 52.12), libavutil
+# - use system ffmpeg (libavcodec >= 51.53, libavformat >= 52.12, libavutil)
# - use system sbsms (>= 1.6.0, but relies on local changes)
# - use system libnyquist (if ever; currently it's a part of audacity project)
#
# Conditional build:
-%bcond_with libresample # using libresample for resampling (default is soxr)
-%bcond_with libsamplerate # using libsamplerate for resampling (default is soxr)
%bcond_with ffmpeg # build with ffmpeg support (currently audacity does not support ffmpeg 1.0)
+%bcond_with gtk3 # GTK+ 3.x instead of 2.x
#
-%if %{without libresample} && %{without libsamplerate}
-%define with_soxr 1
-%endif
Summary: Audacity - manipulate digital audio waveforms
Summary(pl.UTF-8): Audacity - narzędzie do obróbki plików dźwiękowych
Summary(ru.UTF-8): Кроссплатформенный звуковой редактор
Name: audacity
-Version: 2.0.5
-Release: 4
+Version: 2.1.1
+Release: 1
License: GPL v2+
Group: X11/Applications/Sound
-#Source0Download: http://code.google.com/p/audacity/downloads/list
-Source0: http://audacity.googlecode.com/files/%{name}-minsrc-%{version}.tar.xz
-# Source0-md5: 657f71a5a214fe84731ed9842e09fa04
-# Link from http://manual.audacityteam.org/index.php?title=Main_Page
-Source1: http://audacity.googlecode.com/files/%{name}-manual-%{version}.zip
-# Source1-md5: 9f0b9db3f37aa4b9455a4b4e2046e1e4
+#Source0Download: http://www.oldfoss.com/Audacity.html
+Source0: http://app.oldfoss.com:81/download/Audacity/%{name}-minsrc-%{version}.tar.xz
+# Source0-md5: 9e37b1f5cde38d089a35febb904a9e39
+Source1: http://app.oldfoss.com:81/download/Audacity/%{name}-manual-%{version}.zip
+# Source1-md5: a4116a20798b827cd1e06e50c8099aa6
Source2: %{name}.desktop
Source3: %{name}-icon.png
-Patch0: %{name}-system-libs.patch
+Patch0: %{name}-cast.patch
Patch1: %{name}-opt.patch
Patch2: %{name}-no-macos.patch
-# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=749659
-Patch3: wx-fd-constants.patch
-Patch4: wx30.patch
-URL: http://audacity.sourceforge.net/
+URL: http://audacityteam.org/
BuildRequires: alsa-lib-devel
BuildRequires: autoconf >= 2.59
-BuildRequires: automake
+BuildRequires: automake >= 1:1.9
BuildRequires: expat-devel >= 1.95
+# libavcodec >= 51.53 libavformat >= 52.12 libavutil
%{?with_ffmpeg:BuildRequires: ffmpeg-devel >= 0.8.0}
-BuildRequires: flac-c++-devel >= 1.2.0
-BuildRequires: gettext-tools
-BuildRequires: gtk+2-devel >= 2.0
+BuildRequires: flac-c++-devel >= 1.3.0
+BuildRequires: gettext-tools >= 0.18
+%{!?with_gtk3:BuildRequires: gtk+2-devel >= 2.0}
+%{?with_gtk3:BuildRequires: gtk+3-devel >= 3.0}
BuildRequires: jack-audio-connection-kit-devel
BuildRequires: hpklinux-devel >= 4.06
BuildRequires: lame-libs-devel
BuildRequires: libid3tag-devel >= 0.15.0b-2
BuildRequires: libjpeg-devel
BuildRequires: libmad-devel >= 0.14.2b-4
-%{?with_libresample:BuildRequires: libresample-devel >= 0.1.3}
-%{?with_libsamplerate:BuildRequires: libsamplerate-devel >= 0.1.2}
#BuildRequires: libsbsms-devel >= 1.6.0
+#BuildRequires: libsbsms2-devel >= 2.0.2
BuildRequires: libsndfile-devel >= 1.0.0
BuildRequires: libstdc++-devel
+BuildRequires: libtool >= 2:2
BuildRequires: libvorbis-devel >= 1:1.0
+BuildRequires: lilv-devel >= 0.16
+BuildRequires: lv2-devel
#BuildRequires: portaudio-devel >= 19
BuildRequires: pkgconfig
BuildRequires: soundtouch-devel >= 1.3.0
-%{?with_soxr:BuildRequires: soxr-devel >= 0.0.5}
+BuildRequires: soxr-devel >= 0.0.5
BuildRequires: speex-devel
+BuildRequires: suil-devel >= 0.8.2
BuildRequires: twolame-devel >= 0.3.9
+BuildRequires: udev-devel
BuildRequires: unzip
BuildRequires: vamp-devel >= 2.0
BuildRequires: which
-BuildRequires: wxGTK2-unicode-devel >= 2.8.0
-BuildRequires: wxX11-devel >= 2.8.0
+%{!?with_gtk3:BuildRequires: wxGTK2-unicode-devel >= 2.8.0}
+%{?with_gtk3:BuildRequires: wxGTK3-unicode-devel >= 2.8.0}
Requires(post,postun): shared-mime-info
-Requires: flac-c++ >= 1.2.0
+Requires: flac-c++ >= 1.3.0
Requires: lame-libs
Requires: libid3tag >= 0.15.0b-2
Requires: libmad >= 0.14.2b-4
-%{?with_libresample:Requires: libresample >= 0.1.3}
-%{?with_libsamplerate:Requires: libsamplerate >= 0.1.2}
Requires: libsndfile >= 1.0.0
Requires: soundtouch >= 1.3.0
%{?with_soxr:Requires: soxr >= 0.0.5}
@@ -102,45 +98,68 @@ основные операции, такие как удаление, копи
микширование треков и применение эффектов, оформленных в виде
плагинов, к любой части звукового файла.
+%package devel
+Summary: Header files for Audacity interfaces
+Summary(pl.UTF-8): Pliki nagłówkowe interfejsów Audacity
+Group: Development/Libraries
+Requires: libstdc++-devel
+Requires: wxWidgets-devel >= 2.8.0
+# doesn't require base
+
+%description devel
+Header files for Audacity interfaces.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe interfejsów Audacity.
+
%prep
-%setup -q -n %{name}-src-%{version}
+%setup -q -n %{name}-minsrc-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
-%patch3 -p2
-%patch4 -p1
+
+# OPTIONAL_SUBDIRS are not included in tarball; allow autotools to work
+%{__sed} -i '/SUBDIRS += \$(OPTIONAL_SUBDIRS)/d' lib-src/Makefile.am
%{__sed} -i 's/libmp3lame.so/libmp3lame.so.0/g' locale/*.po
%build
cd lib-src/portmixer
+%{__libtoolize}
+%{__aclocal} -I m4
%{__autoconf}
+%{__automake}
cd ../lib-widget-extra
+%{__libtoolize}
%{__aclocal} -I m4
%{__autoconf}
+%{__automake}
cd ../FileDialog
-%{__aclocal}
+%{__libtoolize}
+%{__aclocal} -I m4
%{__autoconf}
+%{__automake}
cd ../portsmf
%{__aclocal} -I autotools/m4
%{__autoconf}
%{__automake}
cd ../..
+%{__libtoolize}
%{__aclocal} -I m4
%{__autoconf}
+%{__automake}
-export WX_CONFIG=$(which wx-gtk2-unicode-config)
+export WX_CONFIG=$(which wx-gtk%{?with_gtk3:3}%{!?with_gtk3:2}-unicode-config)
%configure \
+ %{?with_gtk3:--enable-gtk3} \
--with-ffmpeg%{!?with_ffmpeg:=no} \
--with-help \
--with-id3tag=system \
--with-libmad=system \
- %{?with_libresample:--with-libresample=system} \
- %{?with_libsamplerate:--with-libsamplerate=system} \
--with-libsndfile=system \
--with-libflac=system \
--with-sbsms=local \
- %{?with_soxr:--with-soxr=system} \
+ --with-soxr=system \
--with-vorbis=system
%{__make}
@@ -153,6 +172,11 @@ install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
DESTDIR=$RPM_BUILD_ROOT \
INSTALL_PATH=$RPM_BUILD_ROOT
+# install headers in standard location
+install -d $RPM_BUILD_ROOT%{_includedir}
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/audacity/include/audacity $RPM_BUILD_ROOT%{_includedir}
+rmdir $RPM_BUILD_ROOT%{_datadir}/audacity/include
+
cp -a %{SOURCE2} $RPM_BUILD_ROOT%{_desktopdir}
cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_pixmapsdir}
%{__unzip} -qq -a %{SOURCE1} -d $RPM_BUILD_ROOT%{_datadir}/%{name}/help
@@ -160,7 +184,7 @@ cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_pixmapsdir}
# unsupported
%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/locale/sr_RS*
-mv -f $RPM_BUILD_ROOT%{_datadir}/locale/{zh,zh_CN}
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/locale/{zh,zh_CN}
%{__rm} $RPM_BUILD_ROOT%{_datadir}/pixmaps/audacity.xpm
%{__rm} $RPM_BUILD_ROOT%{_datadir}/pixmaps/audacity16.xpm
@@ -190,6 +214,11 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/audacity.1*
%{_desktopdir}/audacity.desktop
%{_pixmapsdir}/audacity-icon.png
+%{_datadir}/appdata/audacity.appdata.xml
%{_datadir}/mime/packages/audacity.xml
%{_iconsdir}/hicolor/*/apps/audacity.png
%{_iconsdir}/hicolor/*/apps/audacity.svg
+
+%files devel
+%defattr(644,root,root,755)
+%{_includedir}/audacity
diff --git a/audacity-cast.patch b/audacity-cast.patch
new file mode 100644
index 0000000..608b690
--- /dev/null
+++ b/audacity-cast.patch
@@ -0,0 +1,11 @@
+--- audacity-minsrc-2.1.1/src/prefs/TracksPrefs.cpp.orig 2015-07-10 19:35:40.000000000 +0200
++++ audacity-minsrc-2.1.1/src/prefs/TracksPrefs.cpp 2015-10-17 20:48:00.933667048 +0200
+@@ -36,7 +36,7 @@
+ // Bugs 1043, 1044
+ // First rewrite legacy preferences
+ gPrefs->Write(wxT("/GUI/DefaultViewModeNew"),
+- WaveTrack::FindDefaultViewMode());
++ static_cast<int>(WaveTrack::FindDefaultViewMode()));
+
+ Populate();
+ }
diff --git a/audacity-system-libs.patch b/audacity-system-libs.patch
deleted file mode 100644
index a2969fa..0000000
--- a/audacity-system-libs.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- audacity-src-1.3.2-beta/m4/audacity_checklib_libresample.m4.orig 2006-12-29 17:01:36.794372000 +0100
-+++ audacity-src-1.3.2-beta/m4/audacity_checklib_libresample.m4 2006-12-29 17:23:30.465234287 +0100
-@@ -133,7 +151,22 @@
-
- dnl ... but libresample isn't generally installed as a system library...
-
-- LIBRESAMPLE_SYSTEM_AVAILABLE="no"
-+ AC_CHECK_LIB(resample, resample_open,
-+ libresample_found="yes",
-+ libresample_found="no")
-+
-+ AC_CHECK_HEADER(libresample.h,
-+ libresample_h_found="yes",
-+ libresample_h_found="no")
-+
-+ if test "x$libresample_found" = "xyes" && test "x$libresample_h_found" = "xyes" ; then
-+ LIBRESAMPLE_SYSTEM_AVAILABLE="yes"
-+ LIBRESAMPLE_SYSTEM_LIBS=-lresample
-+ AC_MSG_NOTICE([Libresample libraries are available as system libraries])
-+ else
-+ LIBRESAMPLE_SYSTEM_AVAILABLE="no"
-+ AC_MSG_NOTICE([Libresample libraries are NOT available as system libraries])
-+ fi
-
- dnl see if libresample is available locally
-
diff --git a/wx-fd-constants.patch b/wx-fd-constants.patch
deleted file mode 100644
index bb31e65..0000000
--- a/wx-fd-constants.patch
+++ /dev/null
@@ -1,73 +0,0 @@
---- a/audacity-2.0.5/lib-src/FileDialog/generic/FileDialogPrivate.cpp 2013-10-19 20:31:33.000000000 +1300
-+++ b/audacity-2.0.5/lib-src/FileDialog/generic/FileDialogPrivate.cpp 2014-06-01 20:38:47.890251794 +1200
-@@ -40,7 +40,7 @@
- #include "wx/settings.h"
- #include "wx/filefn.h"
- #include "wx/file.h" // for wxS_IXXX constants only
--#include "wx/filedlg.h" // wxOPEN, wxSAVE...
-+#include "wx/filedlg.h" // wxFD_OPEN, wxFD_SAVE...
- #include "wx/generic/filedlgg.h"
- #include "wx/generic/dirctrlg.h" // for wxFileIconsTable
-
-@@ -991,9 +991,9 @@
- }
-
- if (m_dialogStyle == 0)
-- m_dialogStyle = wxOPEN;
-- if ((m_dialogStyle & wxMULTIPLE ) && !(m_dialogStyle & wxOPEN))
-- m_dialogStyle |= wxOPEN;
-+ m_dialogStyle = wxFD_OPEN;
-+ if ((m_dialogStyle & wxMULTIPLE ) && !(m_dialogStyle & wxFD_OPEN))
-+ m_dialogStyle |= wxFD_OPEN;
-
- if ((m_dir.empty()) || (m_dir == wxT(".")))
- {
-@@ -1368,7 +1368,7 @@
- }
- #endif // __UNIX__
-
-- if (!(m_dialogStyle & wxSAVE))
-+ if (!(m_dialogStyle & wxFD_SAVE))
- {
- if ((filename.Find(wxT('*')) != wxNOT_FOUND) ||
- (filename.Find(wxT('?')) != wxNOT_FOUND))
-@@ -1413,14 +1413,14 @@
- // VZ: the logic of testing for !wxFileExists() only for the open file
- // dialog is not entirely clear to me, why don't we allow saving to a
- // file without extension as well?
-- if ( !(m_dialogStyle & wxOPEN) || !wxFileExists(filename) )
-+ if ( !(m_dialogStyle & wxFD_OPEN) || !wxFileExists(filename) )
- {
- filename = AppendExtension(filename, m_filterExtension);
- }
-
- // check that the file [doesn't] exist if necessary
-- if ( (m_dialogStyle & wxSAVE) &&
-- (m_dialogStyle & wxOVERWRITE_PROMPT) &&
-+ if ( (m_dialogStyle & wxFD_SAVE) &&
-+ (m_dialogStyle & wxFD_OVERWRITE_PROMPT) &&
- wxFileExists( filename ) )
- {
- wxString msg;
-@@ -1429,8 +1429,8 @@
- if (wxMessageBox(msg, _("Confirm"), wxYES_NO) != wxYES)
- return;
- }
-- else if ( (m_dialogStyle & wxOPEN) &&
-- (m_dialogStyle & wxFILE_MUST_EXIST) &&
-+ else if ( (m_dialogStyle & wxFD_OPEN) &&
-+ (m_dialogStyle & wxFD_FILE_MUST_EXIST) &&
- !wxFileExists(filename) )
- {
- wxMessageBox(_("Please choose an existing file."), _("Error"),
---- a/audacity-2.0.5/lib-src/FileDialog/win/FileDialogPrivate.cpp 2013-10-19 20:31:33.000000000 +1300
-+++ b/audacity-2.0.5/lib-src/FileDialog/win/FileDialogPrivate.cpp 2014-06-01 20:36:58.222264699 +1200
-@@ -731,7 +731,7 @@
- of.nMaxFile = wxMAXPATH;
-
- // we must set the default extension because otherwise Windows would check
-- // for the existing of a wrong file with wxOVERWRITE_PROMPT (i.e. if the
-+ // for the existing of a wrong file with wxFD_OVERWRITE_PROMPT (i.e. if the
- // user types "foo" and the default extension is ".bar" we should force it
- // to check for "foo.bar" existence and not "foo")
- wxString defextBuffer; // we need it to be alive until GetSaveFileName()!
diff --git a/wx30.patch b/wx30.patch
deleted file mode 100644
index b16bb89..0000000
--- a/wx30.patch
+++ /dev/null
@@ -1,1329 +0,0 @@
-Description: Compile audacity against wxWidgets 3.0
- Solved compilation issues:
- (1.) Allow wxWidgets 3.0 in various configure scripts.
- (2.) The file dialog was derived from an internal wx class that
- disappeared in wx3.0 (discussed in further detail below).
- (3.) In several places the types in interfaces changed between
- wxChar* and wxString. I've tried to modify the code so it works with
- both interfaces (thanks to implicit conversion; may look a bit weird
- in some places).
- (4.) Calls to "wxTheApp->SuspendIdleCallback()" are no longer
- supported. They were part of a workaround for a clipboard problem,
- which fortunately doesn't seem to be there any longer in wx3.0, so I
- deactivated it for wx3.0.
- (5.) AddPendingEvent() and ProcessEvent() now have the visibility
- "protected" in wxWindow. It has always been a bad idea to call them
- directly on a wxWindow object, but now it's explicitly forbidden.
- Instead, those functions should be called on the object returned by
- GetEventHandler().
- (6.) The class wxStandardPaths is now a singleton and has to be
- treated as such (no more explicit constructor calls).
- (7.) "wxLogWarning" is a macro now, so the "::" prefix doesn't work
- on it anymore.
- (8.) Several int types (which were actually used as enums) are now
- real enum types (e.g. wxRasterOperationMode, wxMouseButton) and have
- to be used as such.
- (9.) Apart from the FD constants (which have been fixed in Olly's
- patch already) there are some other constants which have received a
- prefix (e.g. wx* -> wxFONTFAMILY_*, wx* -> wxFONTSTYLE_*, wx* ->
- wxFONTWEIGHT_*).
- (10.) Signature changes in constructors of wxFlexGridSizer and wxIcon
- and wxSizeEvent
- (11.) Missing includes (missing header files were probably included
- indirectly in wx2.8 by chance)
- (12.) When deriving from the abstract class wxGridTableBase,
- different methods have to be implemented with wx3.0 (EndEdit with new
- signature and ApplyEdit) than before with wx2.8 (only EndEdit with
- old signature). Now both versions are implemented in parallel in the
- classes TimeEditor and ChoiceEditor (one version essentially being a
- wrapper of the other one).
- Solved runtime issues:
- (1.) Segmentation fault: The LadspaEffectDialog receives EVT_TEXT
- events before it's properly initialized. To prevent this, a
- workaround was already in place, but was only active on Windows. It
- looks like this happens now on more platforms (including GTK). As the
- workaround doesn't do any harm, even if activated unnecessarily, I've
- simply activated it for all environments.
- (2.) GTK critical warning "IA__gtk_range_set_range: assertion
- 'min < max' failed" because of negative numbers as result of window
- size checking. Added a sanity check that straightens up the numbers
- in edge cases.
- (3.) GTK critical warning "IA__gdk_window_get_origin: assertion
- 'GDK_IS_WINDOW (window)' failed": Received events of type wxSizeEvent
- on the main project window cause calls to "ClientToScreen" - which is
- not available until the window is first shown. So the class has to
- keep track of wxShowEvent events and inhibit those actions until the
- window is first shown.
- (4.) The functions wxString::Format and wxString::Printf have become
- stricter about parameter types that don't match (format string vs.
- function parameters). So the bugs (that were already present in
- audacity before) become visible in wx3.0 as error messages. I've
- fixed all the ones that popped up during my testing, but there might
- be more of them that I just didn't happen to hit. At some point, all
- the calls to wxString::Format and wxString::Printf have to be checked
- systematically.
-Author: Martin Steghöfer <martin at steghoefer.eu>
-Bug-Debian: https://bugs.debian.org/749659
-
---- a/configure.in
-+++ b/configure.in
-@@ -186,13 +186,11 @@
- [dynamic_loading="$enableval"],
- [dynamic_loading="yes"])
-
--dnl AC_ARG_WITH(wx-version,
--dnl [AS_HELP_STRING([--with-wx-version],
--dnl [select wxWidgets version (if both installed) [2.8,]])],
--dnl wx_preference="--version=$withval",
--dnl wx_preference="")
--dnl At the moment we only support wx2.8. If we start supporting 3.0 when it
--dnl comes out, we'll want it back again.
-+AC_ARG_WITH(wx-version,
-+ [AS_HELP_STRING([--with-wx-version],
-+ [select wxWidgets version (if both installed) [2.8, 3.0]])],
-+ wx_preference="--version=$withval",
-+ wx_preference="")
-
- dnl ----------------------------------------------------
- dnl If user asked for debug, put debug in compiler flags
-@@ -291,19 +289,21 @@
- wxconfigargs="$static_preference $unicode_preference $wxconfigargs $wx_preference"
- wx_version=`${WX_CONFIG} $wxconfigargs --version`
-
--AC_MSG_NOTICE([Checking that the chosen version of wxWidgets is 2.8.x])
-+AC_MSG_NOTICE([Checking that the chosen version of wxWidgets is 2.8.x or 3.0.x])
-
- case "${wx_version}" in
- 2.8.*)
- echo "Great, you're using wxWidgets ${wx_version}!"
- ;;
-+ 3.0.*)
-+ echo "Great, you're using wxWidgets ${wx_version}!"
-+ ;;
- *)
- wx_list=`${WX_CONFIG} --list`
-- AC_MSG_ERROR([Unable to locate a suitable configuration of wxWidgets v2.8.x or higher.
--The currently available configurations are listed below. If necessary, either
--install the package for your distribution or download the latest version of
--wxWidgets
--from http://wxwidgets.org.
-+ AC_MSG_ERROR([Unable to locate a suitable configuration of wxWidgets v2.8.x
-+or v3.0.x. The currently available configurations are listed below. If
-+necessary, either install the package for your distribution or download a
-+suitable version of wxWidgets from http://wxwidgets.org.
- ${wx_list}])
- esac
-
---- a/lib-src/lib-widget-extra/configure.in
-+++ b/lib-src/lib-widget-extra/configure.in
-@@ -74,12 +74,11 @@
- debug_preference="$enableval",
- debug_preference="no")
-
--dnl AC_ARG_WITH(wx-version,
--dnl [AS_HELP_STRING([--with-wx-version],
--dnl [select wxWidgets version (if both installed) [2.8,]])],
--dnl wx_preference="--version=$withval",
--dnl wx_preference="")
--dnl Right now only support wx 2.8
-+AC_ARG_WITH(wx-version,
-+ [AS_HELP_STRING([--with-wx-version],
-+ [select wxWidgets version (if both installed) [2.8, 3.0]])],
-+ wx_preference="--version=$withval",
-+ wx_preference="")
-
- dnl ----------------------------------------------------
- dnl If user asked for debug, put debug in compiler flags
-@@ -139,19 +138,21 @@
-
- wx_version=`${WX_CONFIG} $wxconfigargs --version`
-
--AC_MSG_NOTICE([Checking that the chosen version of wxWidgets is 2.8.x])
-+AC_MSG_NOTICE([Checking that the chosen version of wxWidgets is 2.8.x or 3.0.x])
-
- case "${wx_version}" in
- 2.8.*)
- echo "Great, you're using wxWidgets ${wx_version}!"
- ;;
-+ 3.0.*)
-+ echo "Great, you're using wxWidgets ${wx_version}!"
-+ ;;
- *)
- wx_list=`${WX_CONFIG} --list`
-- AC_MSG_ERROR([Unable to locate a suitable configuration of wxWidgets v2.8.x or higher.
--The currently available configurations are listed below. If necessary, either
--install the package for your distribution or download the latest version of
--wxWidgets
--from http://wxwidgets.org.
-+ AC_MSG_ERROR([Unable to locate a suitable configuration of wxWidgets v2.8.x
-+or v3.0.x. The currently available configurations are listed below. If
-+necessary, either install the package for your distribution or download a
-+suitable version of wxWidgets from http://wxwidgets.org.
- ${wx_list}])
- esac
-
---- a/lib-src/FileDialog/configure.ac
-+++ b/lib-src/FileDialog/configure.ac
-@@ -47,7 +47,7 @@
-
- AC_ARG_WITH(wx-version,
- [AC_HELP_STRING([--with-wx-version],
-- [override default wxWidgets version [2.6,2.8]])],
-+ [override default wxWidgets version [2.8, 3.0]])],
- wx_preference="--version=$withval",
- wx_preference="")
-
-@@ -64,45 +64,66 @@
- fi
-
- dnl Gather wx arguments
-+wxconfigargs="$static_preference $unicode_preference $debug_preference $wx_preference"
-
--CPPFLAGS="$CPPFLAGS `$WX_CONFIG $static_preference $unicode_preference $debug_preference $wx_preference --cxxflags`"
-+dnl Get wx version
-+wx_version=`${WX_CONFIG} $wxconfigargs --version`
-
--dnl OS-specific configuration
-+dnl Get wx flags
-+CXXFLAGS="$CXXFLAGS `$WX_CONFIG $wxconfigargs --cxxflags`"
-+
-+dnl OS- and wx-version-specific configuration
-
- AC_CANONICAL_HOST
-
--case "${host_os}" in
-- darwin*)
-- dnl Mac OS X configuration
-- EXTRADEPS="mac/FileDialogPrivate.h"
-- EXTRAOBJS="mac/FileDialogPrivate.o"
-- ;;
--
-- cygwin*)
-- dnl Windows/CygWin configuration
-- EXTRADEPS="win/FileDialogPrivate.h"
-- EXTRAOBJS="win/FileDialogPrivate.o"
-- ;;
--
-- *)
-- dnl Unix configuration
-- AM_PATH_GTK_2_0(2.4.0,
-- have_gtk="yes",
-- have_gtk="no")
-- if [[ "$have_gtk" = "yes" ]]
-- then
-- CPPFLAGS="$CPPFLAGS $GTK_CFLAGS"
-- EXTRADEPS="gtk/FileDialogPrivate.h gtk/private.h"
-- EXTRAOBJS="gtk/FileDialogPrivate.o"
-- HAVE_GTK=1
-- else
-- EXTRADEPS="generic/FileDialogPrivate.h"
-- EXTRAOBJS="generic/FileDialogPrivate.o"
-- HAVE_GTK=0
-- fi
-- ;;
-+case "${wx_version}" in
-+ 2.8.*)
-+ case "${host_os}" in
-+ darwin*)
-+ dnl Mac OS X configuration
-+ EXTRADEPS="mac/FileDialogPrivate.h"
-+ EXTRAOBJS="mac/FileDialogPrivate.o"
-+ ;;
-+ cygwin*)
-+ dnl Windows/CygWin configuration
-+ EXTRADEPS="win/FileDialogPrivate.h"
-+ EXTRAOBJS="win/FileDialogPrivate.o"
-+ ;;
-+ *)
-+ dnl Unix configuration
-+ AM_PATH_GTK_2_0(2.4.0,
-+ have_gtk="yes",
-+ have_gtk="no")
-+ if [[ "$have_gtk" = "yes" ]]
-+ then
-+ CPPFLAGS="$CPPFLAGS $GTK_CFLAGS"
-+ EXTRADEPS="gtk/FileDialogPrivate.h gtk/private.h"
-+ EXTRAOBJS="gtk/FileDialogPrivate.o"
-+ HAVE_GTK=1
-+ else
-+ EXTRADEPS="generic/FileDialogPrivate.h"
-+ EXTRAOBJS="generic/FileDialogPrivate.o"
-+ HAVE_GTK=0
-+ fi
-+ ;;
-+ esac
-+ ;;
-+ 3.0.*)
-+ dnl for wxWidgets >= 3.0 we can compile a generic implementation of our FileDialog
-+ EXTRADEPS="wx30/FileDialogPrivate.h"
-+ EXTRAOBJS="wx30/FileDialogPrivate.o"
-+ HAVE_GTK=0 dnl no need for extra GTK flags, we don't use it directly, we use wx interfaces
-+ ;;
-+ *)
-+ wx_list=`${WX_CONFIG} --list`
-+ AC_MSG_ERROR([Unable to locate a suitable configuration of wxWidgets v2.8.x
-+or v3.0.x. The currently available configurations are listed below. If
-+necessary, either install the package for your distribution or download a
-+suitable version of wxWidgets from http://wxwidgets.org.
-+${wx_list}])
- esac
-
-+
- #
- # Write it all out
- #
---- a/lib-src/FileDialog/FileDialog.h
-+++ b/lib-src/FileDialog/FileDialog.h
-@@ -26,14 +26,18 @@
-
- typedef void (*fdCallback)(void *, int);
-
--#if defined(__WXMAC__)
--#include "mac/FileDialogPrivate.h"
--#elif defined(__WXMSW__)
--#include "win/FileDialogPrivate.h"
--#elif defined(__WXGTK__) && defined(HAVE_GTK)
--#include "gtk/FileDialogPrivate.h"
--#else
--#include "generic/FileDialogPrivate.h"
-+#if wxMAJOR_VERSION == 2 && wxMINOR_VERSION == 8 // wx2.8
-+# if defined(__WXMAC__)
-+# include "mac/FileDialogPrivate.h"
-+# elif defined(__WXMSW__)
-+# include "win/FileDialogPrivate.h"
-+# elif defined(__WXGTK__) && defined(HAVE_GTK)
-+# include "gtk/FileDialogPrivate.h"
-+# else
-+# include "generic/FileDialogPrivate.h"
-+# endif
-+#else // wx3.0
-+# include "wx30/FileDialogPrivate.h"
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
-@@ -55,11 +59,11 @@
- //----------------------------------------------------------------------------
-
- wxString
--FileSelector(const wxChar *message = wxFileSelectorPromptStr,
-+FileSelector(const wxChar *message = wxString(wxFileSelectorPromptStr, wxConvUTF8).wc_str(),
- const wxChar *default_path = NULL,
- const wxChar *default_filename = NULL,
- const wxChar *default_extension = NULL,
-- const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
-+ const wxChar *wildcard = wxString(wxFileSelectorDefaultWildcardStr, wxConvUTF8).wc_str(),
- int flags = 0,
- wxWindow *parent = NULL,
- wxString label = wxEmptyString,
---- /dev/null
-+++ b/lib-src/FileDialog/wx30/FileDialogPrivate.cpp
-@@ -0,0 +1,61 @@
-+#include <wx/wxprec.h>
-+#ifndef WX_PRECOMP
-+# include <wx/wx.h>
-+#endif
-+
-+#include "../FileDialog.h"
-+
-+#include <cassert>
-+
-+#include "wx/event.h"
-+#include "wx/filedlg.h"
-+#include "wx/window.h"
-+
-+
-+FileDialog::FileDialog(wxWindow *parent,
-+ const wxString& message,
-+ const wxString& defaultDir,
-+ const wxString& defaultFile,
-+ const wxString& wildCard,
-+ long style,
-+ const wxPoint& pos,
-+ const wxSize& sz,
-+ const wxString& name)
-+: wxFileDialog(parent, message, defaultDir, defaultFile, wildCard, style, pos, sz, name)
-+{
-+}
-+
-+
-+FileDialog::~FileDialog()
-+{
-+ // intentionally left blank; it's just there to make sure
-+ // we have a virtual destructor (in case of subclassing)
-+}
-+
-+
-+int FileDialog::ShowModal()
-+{
-+ assert (SupportsExtraControl());
-+
-+ if (!m_buttonlabel.IsEmpty()) {
-+ SetExtraControlCreator(&FileDialog::CreateButton);
-+ }
-+
-+ return wxFileDialog::ShowModal();
-+}
-+
-+
-+wxWindow * FileDialog::CreateButton(wxWindow *fileDialogGeneric)
-+{
-+ FileDialog *fileDialog = (FileDialog *) fileDialogGeneric;
-+ wxButton *button = new wxButton(fileDialog, wxID_ANY, fileDialog->m_buttonlabel);
-+ fileDialog->Bind(wxEVT_BUTTON, &FileDialog::OnButton, fileDialog, button->GetId());
-+ return button;
-+}
-+
-+void FileDialog::OnButton(wxCommandEvent& WXUNUSED(event))
-+{
-+ ClickButton(GetFilterIndex());
-+}
-+
-+
---- /dev/null
-+++ b/lib-src/FileDialog/wx30/FileDialogPrivate.h
-@@ -0,0 +1,47 @@
-+#ifndef __FILEDIALOGWX30H__
-+#define __FILEDIALOGWX30H__
-+
-+
-+#include "wx/filedlg.h"
-+
-+
-+class FileDialog : public wxFileDialog
-+{
-+public: // constructors/destructors
-+ FileDialog() { }
-+
-+ FileDialog(wxWindow *parent,
-+ const wxString& message = wxFileSelectorPromptStr,
-+ const wxString& defaultDir = wxEmptyString,
-+ const wxString& defaultFile = wxEmptyString,
-+ const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
-+ long style = wxFD_DEFAULT_STYLE,
-+ const wxPoint& pos = wxDefaultPosition,
-+ const wxSize& sz = wxDefaultSize,
-+ const wxString& name = wxFileDialogNameStr);
-+
-+ virtual ~FileDialog();
-+
-+public: // public methods
-+ virtual void EnableButton(wxString label, fdCallback cb, void *cbdata);
-+
-+ virtual void ClickButton(int index);
-+
-+ virtual int ShowModal();
-+
-+ void OnButton(wxCommandEvent& event);
-+
-+private: // private methods
-+ static wxWindow * CreateButton(wxWindow *fileDialog);
-+
-+private: // attributes
-+ wxString m_buttonlabel;
-+
-+ fdCallback m_callback;
-+
-+ void *m_cbdata;
-+};
-+
-+
-+#endif
-+
---- a/src/AudacityApp.cpp
-+++ b/src/AudacityApp.cpp
-@@ -1324,7 +1324,7 @@
- }
-
- if (option < argc - 1 &&
-- argv[option + 1] &&
-+ !wxString(argv[option + 1]).IsEmpty() && // *argv is of type wxChar* in wx28 and wxString in wx30
- !wxString(wxT("-blocksize")).CmpNoCase(argv[option])) {
- long theBlockSize;
- if (wxString(argv[option + 1]).ToLong(&theBlockSize)) {
---- a/src/AudioIO.cpp
-+++ b/src/AudioIO.cpp
-@@ -561,7 +561,7 @@
- wxString errStr = _("Could not find any audio devices.\n");
- errStr += _("You will not be able to play or record audio.\n\n");
- wxString paErrStr = LAT1CTOWX(Pa_GetErrorText(err));
-- if (paErrStr)
-+ if (!paErrStr.IsEmpty())
- errStr += _("Error: ")+paErrStr;
- // XXX: we are in libaudacity, popping up dialogs not allowed! A
- // long-term solution will probably involve exceptions
---- a/src/CaptureEvents.cpp
-+++ b/src/CaptureEvents.cpp
-@@ -17,7 +17,7 @@
- #include "Audacity.h"
- #include "CaptureEvents.h"
-
--#if defined(__WXGTK__) && defined(HAVE_GTK)
-+#if defined(__WXGTK__) && defined(HAVE_GTK) && wxMAJOR_VERSION < 3
- // As of wxGTK 2.8.9, there is a problem in the wxClipboard class that
- // allows recursive event processing. This problem has been corrected
- // by wxWidgets 2.9+. However, this han't made it into a release yet,
---- a/src/LyricsWindow.cpp
-+++ b/src/LyricsWindow.cpp
-@@ -68,9 +68,9 @@
- // loads either the XPM or the windows resource, depending on the platform
- #if !defined(__WXMAC__) && !defined(__WXX11__)
- #ifdef __WXMSW__
-- wxIcon ic(wxICON(AudacityLogo));
-+ wxIcon ic = wxICON(AudacityLogo);
- #else
-- wxIcon ic(wxICON(AudacityLogo48x48));
-+ wxIcon ic = wxICON(AudacityLogo48x48);
- #endif
- SetIcon(ic);
- #endif
---- a/src/Menus.cpp
-+++ b/src/Menus.cpp
-@@ -2403,7 +2403,7 @@
- // The workaround is to queue a context menu event, allowing the key press
- // event to complete.
- wxContextMenuEvent e(wxEVT_CONTEXT_MENU, GetId());
-- mTrackPanel->AddPendingEvent(e);
-+ mTrackPanel->GetEventHandler()->AddPendingEvent(e);
- }
-
- void AudacityProject::OnTrackMute()
---- a/src/MixerBoard.cpp
-+++ b/src/MixerBoard.cpp
-@@ -1723,9 +1723,9 @@
- // loads either the XPM or the windows resource, depending on the platform
- #if !defined(__WXMAC__) && !defined(__WXX11__)
- #ifdef __WXMSW__
-- wxIcon ic(wxICON(AudacityLogo));
-+ wxIcon ic = wxICON(AudacityLogo);
- #else
-- wxIcon ic(wxICON(AudacityLogo48x48));
-+ wxIcon ic = wxICON(AudacityLogo48x48);
- #endif
- SetIcon(ic);
- #endif
---- a/src/PitchName.cpp
-+++ b/src/PitchName.cpp
-@@ -20,6 +20,10 @@
- #include <math.h>
- #include <stdio.h>
-
-+#ifndef WX_PRECOMP
-+# include "wx/wx.h"
-+#endif
-+
- #include "PitchName.h"
-
-
---- a/src/PlatformCompatibility.cpp
-+++ b/src/PlatformCompatibility.cpp
-@@ -20,6 +20,7 @@
- #include <wx/filename.h>
- #include <wx/stdpaths.h>
- #include <wx/app.h>
-+#include <wx/version.h>
-
- #include "AudacityApp.h"
- #include "PlatformCompatibility.h"
-@@ -37,7 +38,11 @@
- static wxString path;
-
- if (!found) {
-+#if wxMAJOR_VERSION < 3
- wxStandardPaths std;
-+#else
-+ wxStandardPaths std(wxStandardPaths::Get());
-+#endif
-
- path = std.GetExecutablePath();
-
-@@ -65,4 +70,4 @@
- #else
- return filePath;
- #endif
--}
-\ No newline at end of file
-+}
---- a/src/Profiler.cpp
-+++ b/src/Profiler.cpp
-@@ -22,6 +22,9 @@
-
- #include "Profiler.h"
-
-+#include <cstdio>
-+#include <cstring>
-+
- ///write to a profile at the end of the test.
- Profiler::~Profiler()
- {
-@@ -165,4 +168,3 @@
- else
- return 0.0;
- }
--
-\ No newline at end of file
---- a/src/Project.cpp
-+++ b/src/Project.cpp
-@@ -79,7 +79,6 @@
- #include <wx/string.h>
- #include <wx/textfile.h>
- #include <wx/timer.h>
--#include <wx/generic/filedlgg.h>
- #include <wx/display.h>
-
- #include <wx/arrimpl.cpp> // this allows for creation of wxObjArray
-@@ -702,6 +701,7 @@
- EVT_MOUSE_EVENTS(AudacityProject::OnMouseEvent)
- EVT_CLOSE(AudacityProject::OnCloseWindow)
- EVT_SIZE(AudacityProject::OnSize)
-+ EVT_SHOW(AudacityProject::OnShow)
- EVT_MOVE(AudacityProject::OnMove)
- EVT_ACTIVATE(AudacityProject::OnActivate)
- EVT_COMMAND_SCROLL_LINEUP(HSBarID, AudacityProject::OnScrollLeftButton)
-@@ -758,7 +758,8 @@
- mLastEffect(NULL),
- mLastEffectType(0),
- mTimerRecordCanceled(false),
-- mMenuClose(false)
-+ mMenuClose(false),
-+ mShownOnce(false)
- {
- int widths[] = {-2, -1};
- mStatusBar = CreateStatusBar(2);
-@@ -981,9 +982,9 @@
- // loads either the XPM or the windows resource, depending on the platform
- #if !defined(__WXMAC__) && !defined(__WXX11__)
- #if defined(__WXMSW__)
-- wxIcon ic(wxICON(AudacityLogo));
-+ wxIcon ic = wxICON(AudacityLogo);
- #elif defined(__WXGTK__)
-- wxIcon ic(wxICON(AudacityLogoAlpha));
-+ wxIcon ic = wxICON(AudacityLogoAlpha);
- #else
- wxIcon ic;
- ic.CopyFromBitmap(theTheme.Bitmap(bmpAudacityLogo48x48));
-@@ -1350,6 +1351,12 @@
-
- int panelWidth, panelHeight;
- mTrackPanel->GetTracksUsableArea(&panelWidth, &panelHeight);
-+ if (panelWidth < 0) {
-+ panelWidth = 0;
-+ }
-+ if (panelHeight < 0) {
-+ panelHeight = 0;
-+ }
-
- // Add 1/4 of a screen of blank space to the end of the longest track
- mViewInfo.screen = ((double) panelWidth) / mViewInfo.zoom;
-@@ -1561,9 +1568,26 @@
-
- void AudacityProject::OnSize(wxSizeEvent & event)
- {
-- HandleResize();
-- if (!this->IsMaximized() && !this->IsIconized())
-- SetNormalizedWindowState(this->GetRect());
-+ if (mShownOnce) {
-+ HandleResize();
-+ if (!this->IsMaximized() && !this->IsIconized())
-+ SetNormalizedWindowState(this->GetRect());
-+ }
-+ event.Skip();
-+}
-+
-+void AudacityProject::OnShow(wxShowEvent & event)
-+{
-+ // Remember that the window has been shown at least once
-+ mShownOnce = true;
-+
-+ // Call "OnSize" again (the previous calls to "OnSize" might not
-+ // have succeeded because some methods are not available before
-+ // the actual creation/showing of the window)
-+ wxSizeEvent sizeEvent(GetSize());
-+ OnSize(sizeEvent);
-+
-+ // Further processing by default handlers
- event.Skip();
- }
-
-@@ -1675,7 +1699,7 @@
- wxCommandEvent e(EVT_CAPTURE_KEY);
- e.SetEventObject(&event);
-
-- if (w->ProcessEvent(e)) {
-+ if (w->GetEventHandler()->ProcessEvent(e)) {
- return false;
- }
- }
---- a/src/Sequence.cpp
-+++ b/src/Sequence.cpp
-@@ -1035,7 +1035,7 @@
- Internat::ToString(((wxLongLong)(bb->f->GetLength())).ToDouble(), 0).c_str(),
- Internat::ToString(((wxLongLong)mMaxSamples).ToDouble(), 0).c_str());
- ::wxMessageBox(sMsg, _("Warning - Length in Writing Sequence"), wxICON_EXCLAMATION | wxOK);
-- ::wxLogWarning(sMsg);
-+ wxLogWarning(sMsg);
- bb->f->SetLength(mMaxSamples);
- }
-
---- a/src/Tags.cpp
-+++ b/src/Tags.cpp
-@@ -482,7 +482,7 @@
-
- while (*attrs) {
- wxString attr = *attrs++;
-- if (!*attr)
-+ if (attr.IsEmpty())
- break;
- wxString value = *attrs++;
-
---- a/src/TrackPanel.cpp
-+++ b/src/TrackPanel.cpp
-@@ -5097,7 +5097,7 @@
- // The activate event is used to make the
- // parent window 'come alive' if it didn't have focus.
- wxActivateEvent e;
-- GetParent()->ProcessEvent(e);
-+ GetParent()->GetEventHandler()->ProcessEvent(e);
-
- // wxTimers seem to be a little unreliable, so this
- // "primes" it to make sure it keeps going for a while...
-@@ -5534,7 +5534,7 @@
- int trackKind = pTrack->GetKind();
- currentTool = selectTool; // the default.
-
-- if( event.ButtonIsDown(3) || event.RightUp()){
-+ if( event.ButtonIsDown(wxMOUSE_BTN_RIGHT) || event.RightUp()){
- currentTool = zoomTool;
- } else if( trackKind == Track::Time ){
- currentTool = envelopeTool;
-@@ -8251,7 +8251,7 @@
- mSliderOffset = 0;
-
- int fontSize = 10;
-- mFont.Create(fontSize, wxSWISS, wxNORMAL, wxNORMAL);
-+ mFont.Create(fontSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
-
- int allowableWidth = GetTrackInfoWidth() - 2; // 2 to allow for left/right borders
- int textWidth, textHeight;
---- a/src/CaptureEvents.h
-+++ b/src/CaptureEvents.h
-@@ -17,7 +17,7 @@
- #ifndef _AUDACITY_CAPTURE_EVENTS_
- #define _AUDACITY_CAPTURE_EVENTS_
-
--#if defined(__WXGTK__) && defined(HAVE_GTK)
-+#if defined(__WXGTK__) && defined(HAVE_GTK) && wxMAJOR_VERSION < 3
- // As of wxGTK 2.8.9, there is a problem in the wxClipboard class that
- // allows recursive event processing. This problem has been corrected
- // by wxWidgets 2.9+. However, this han't made it into a release yet,
---- a/src/LabelTrack.cpp
-+++ b/src/LabelTrack.cpp
-@@ -957,7 +957,7 @@
-
- // copy data onto clipboard
- if (wxTheClipboard->Open()) {
--#if defined(__WXGTK__) && defined(HAVE_GTK)
-+#if defined(__WXGTK__) && defined(HAVE_GTK) && wxMAJOR_VERSION < 3
- CaptureEvents capture;
- #endif
- wxTheClipboard->SetData(new wxTextDataObject(data));
-@@ -992,7 +992,7 @@
-
- // copy the data on clipboard
- if (wxTheClipboard->Open()) {
--#if defined(__WXGTK__) && defined(HAVE_GTK)
-+#if defined(__WXGTK__) && defined(HAVE_GTK) && wxMAJOR_VERSION < 3
- CaptureEvents capture;
- #endif
- wxTheClipboard->SetData(new wxTextDataObject(data));
-@@ -1017,7 +1017,7 @@
- // if text data is available
- if (IsTextClipSupported()) {
- if (wxTheClipboard->Open()) {
--#if defined(__WXGTK__) && HAVE_GTK
-+#if defined(__WXGTK__) && HAVE_GTK && wxMAJOR_VERSION < 3
- CaptureEvents capture;
- #endif
- wxTextDataObject data;
-@@ -1074,7 +1074,7 @@
- /// @return true if the text data is available in the clipboard, false otherwise
- bool LabelTrack::IsTextClipSupported()
- {
--#if defined(__WXGTK__) && defined(HAVE_GTK)
-+#if defined(__WXGTK__) && defined(HAVE_GTK) && wxMAJOR_VERSION < 3
- CaptureEvents capture;
- #endif
-
---- a/src/UploadDialog.cpp
-+++ b/src/UploadDialog.cpp
-@@ -113,12 +113,12 @@
- icons->Add(*mp3Icon);
- icons->Add(*upIcon);
-
-- wxFlexGridSizer *topSizer = new wxFlexGridSizer(2, 1);
-+ wxFlexGridSizer *topSizer = new wxFlexGridSizer(2, 1, 0);
- wxStaticBoxSizer *connectionBox = new wxStaticBoxSizer(new wxStaticBox(this, -1, wxT("FTP Connection"), wxDefaultPosition, wxDefaultSize, 0, wxT("")), wxVERTICAL);
- wxStaticBoxSizer *fileBox = new wxStaticBoxSizer(new wxStaticBox(this, -1, wxT("File Manager"), wxDefaultPosition, wxDefaultSize, 0, wxT("")), wxVERTICAL);
- wxStaticBoxSizer *siteBox = new wxStaticBoxSizer(new wxStaticBox(this, -1, wxT("Site Manager"), wxDefaultPosition, wxDefaultSize, 0, wxT("")), wxVERTICAL);
-
-- wxFlexGridSizer *connectionSizer = new wxFlexGridSizer(2, 4);
-+ wxFlexGridSizer *connectionSizer = new wxFlexGridSizer(2, 4, 0);
- wxBoxSizer *leftSizer = new wxBoxSizer(wxVERTICAL);
- wxBoxSizer *rightSizer = new wxBoxSizer(wxVERTICAL);
- wxBoxSizer *fileButtonSizer = new wxBoxSizer(wxHORIZONTAL);
---- a/src/commands/ScriptCommandRelay.cpp
-+++ b/src/commands/ScriptCommandRelay.cpp
-@@ -57,7 +57,7 @@
- wxASSERT(cmd != NULL);
- AppCommandEvent ev;
- ev.SetCommand(cmd);
-- project->AddPendingEvent(ev);
-+ project->GetEventHandler()->AddPendingEvent(ev);
- }
-
- /// This is the function which actually obeys one command. Rather than applying
---- a/src/effects/BassTreble.cpp
-+++ b/src/effects/BassTreble.cpp
-@@ -35,6 +35,7 @@
- #include <wx/checkbox.h>
- #include <wx/slider.h>
- #include <wx/sizer.h>
-+#include <wx/textctrl.h>
-
- // Used to communicate the type of the filter.
- static const int bassType = 0; //Low Shelf
---- a/src/effects/Compressor.cpp
-+++ b/src/effects/Compressor.cpp
-@@ -38,6 +38,7 @@
- #include <wx/textdlg.h>
- #include <wx/brush.h>
- #include <wx/image.h>
-+#include <wx/dcclient.h>
- #include <wx/dcmemory.h>
-
- #include "Compressor.h"
---- a/src/effects/nyquist/Nyquist.cpp
-+++ b/src/effects/nyquist/Nyquist.cpp
-@@ -701,7 +701,7 @@
- // See also http://bugzilla.audacityteam.org/show_bug.cgi?id=642#c9
- // for further info about this thread safety question.
- wxString prevlocale = wxSetlocale(LC_NUMERIC, NULL);
-- wxSetlocale(LC_NUMERIC, wxT("C"));
-+ wxSetlocale(LC_NUMERIC, wxString(wxT("C")));
-
- nyx_init();
- nyx_set_os_callback(StaticOSCallback, (void *)this);
---- a/src/import/ImportRaw.cpp
-+++ b/src/import/ImportRaw.cpp
-@@ -324,7 +324,7 @@
-
- if (sf_format_check(&info)) {
- mEncodingSubtype[mNumEncodings] = subtype;
-- encodings.Add(LAT1CTOWX(sf_encoding_index_name(i)));
-+ encodings.Add(sf_encoding_index_name(i));
-
- if ((mEncoding & SF_FORMAT_SUBMASK) == subtype)
- selection = mNumEncodings;
---- a/src/ondemand/ODManager.cpp
-+++ b/src/ondemand/ODManager.cpp
-@@ -311,7 +311,7 @@
- AudacityProject::AllProjectsDeleteLock();
- AudacityProject* proj = GetActiveProject();
- if(proj)
-- proj->AddPendingEvent( event );
-+ proj->GetEventHandler()->AddPendingEvent( event );
- AudacityProject::AllProjectsDeleteUnlock();
- }
- mTerminateMutex.Lock();
---- a/src/ondemand/ODTask.cpp
-+++ b/src/ondemand/ODTask.cpp
-@@ -158,7 +158,7 @@
- if(IsTaskAssociatedWithProject(gAudacityProjects[i]))
- {
- //this assumes tasks are only associated with one project.
-- gAudacityProjects[i]->AddPendingEvent( event );
-+ gAudacityProjects[i]->GetEventHandler()->AddPendingEvent( event );
- //mark the changes so that the project can be resaved.
- gAudacityProjects[i]->GetUndoManager()->SetODChangesFlag();
- break;
---- a/src/prefs/KeyConfigPrefs.cpp
-+++ b/src/prefs/KeyConfigPrefs.cpp
-@@ -992,7 +992,7 @@
- nevent.SetDirection(!e.ShiftDown());
- nevent.SetEventObject(t);
- nevent.SetCurrentFocus(t);
-- t->GetParent()->ProcessEvent(nevent);
-+ t->GetParent()->GetEventHandler()->ProcessEvent(nevent);
-
- return;
- }
---- a/src/toolbars/DeviceToolBar.cpp
-+++ b/src/toolbars/DeviceToolBar.cpp
-@@ -71,9 +71,7 @@
- {
- ToolBar::Create(parent);
-
-- // Simulate a size event to set initial meter placement/size
-- wxSizeEvent dummy;
-- OnSize(dummy);
-+ Layout();
- }
-
- void DeviceToolBar::RecreateTipWindows()
-@@ -618,7 +616,7 @@
- name = _("2 (Stereo) Input Channels");
- }
- else {
-- name = wxString::Format(wxT("%d"), j + 1);
-+ name = wxString::Format(wxT("%lld"), j + 1);
- }
- mInputChannels->Append(name);
- }
---- a/src/toolbars/ToolsToolBar.cpp
-+++ b/src/toolbars/ToolsToolBar.cpp
-@@ -59,7 +59,7 @@
-
- // Strings to convert a tool number into a status message
- // These MUST be in the same order as the ids above.
--static const wxChar * MessageOfTool[numTools] = {
-+static const wxString MessageOfTool[numTools] = {
- wxTRANSLATE("Click and drag to select audio"),
- wxTRANSLATE("Click and drag to edit the amplitude envelope"),
- wxTRANSLATE("Click and drag to edit the samples"),
---- a/src/widgets/ASlider.cpp
-+++ b/src/widgets/ASlider.cpp
-@@ -1191,7 +1191,7 @@
- nevent.SetDirection( !event.ShiftDown() );
- nevent.SetEventObject( mParent );
- nevent.SetCurrentFocus( mParent );
-- mParent->GetParent()->ProcessEvent( nevent );
-+ mParent->GetParent()->GetEventHandler()->ProcessEvent( nevent );
- }
- break;
-
-@@ -1203,7 +1203,7 @@
- if (def && def->IsEnabled()) {
- wxCommandEvent cevent(wxEVT_COMMAND_BUTTON_CLICKED,
- def->GetId());
-- mParent->ProcessEvent(cevent);
-+ mParent->GetEventHandler()->ProcessEvent(cevent);
- }
- }
-
-@@ -1228,7 +1228,7 @@
- int intValue = (int)( ( mCurrentValue - mMinValue ) * 1000.0f /
- ( mMaxValue - mMinValue ) );
- e.SetInt( intValue );
-- mParent->ProcessEvent( e );
-+ mParent->GetEventHandler()->ProcessEvent( e );
- }
-
- int LWSlider::ValueToPosition(float val)
---- a/src/widgets/ExpandingToolBar.cpp
-+++ b/src/widgets/ExpandingToolBar.cpp
-@@ -72,6 +72,7 @@
- #include <wx/window.h>
- #endif
-
-+#include <wx/dcclient.h>
- #include <wx/dcmemory.h>
- #include <wx/log.h>
- #include <wx/dragimag.h>
---- a/src/widgets/Grabber.cpp
-+++ b/src/widgets/Grabber.cpp
-@@ -89,7 +89,7 @@
- e.SetEventObject(parent);
-
- // Queue the event
-- parent->AddPendingEvent(e);
-+ parent->GetEventHandler()->AddPendingEvent(e);
- }
-
- //
---- a/src/widgets/Grid.cpp
-+++ b/src/widgets/Grid.cpp
-@@ -77,7 +77,8 @@
- {
- wxGridTableBase *table = grid->GetTable();
-
-- table->GetValue(row, col).ToDouble(&mOld);
-+ mOldString = table->GetValue(row, col);
-+ mOldString.ToDouble(&mOld);
-
- GetTimeCtrl()->SetTimeValue(mOld);
- GetTimeCtrl()->EnableMenu();
-@@ -87,16 +88,32 @@
-
- bool TimeEditor::EndEdit(int row, int col, wxGrid *grid)
- {
-+ wxString newvalue;
-+ bool changed = EndEdit(row, col, grid, mOldString, &newvalue);
-+ if (changed) {
-+ ApplyEdit(row, col, grid);
-+ }
-+ return changed;
-+}
-+
-+bool TimeEditor::EndEdit(int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval)
-+{
- double newtime = GetTimeCtrl()->GetTimeValue();
- bool changed = newtime != mOld;
-
- if (changed) {
-- grid->GetTable()->SetValue(row, col, wxString::Format(wxT("%g"), newtime));
-+ mValueAsString = wxString::Format(wxT("%g"), newtime);
-+ *newval = mValueAsString;
- }
-
- return changed;
- }
-
-+void TimeEditor::ApplyEdit(int row, int col, wxGrid *grid)
-+{
-+ grid->GetTable()->SetValue(row, col, mValueAsString);
-+}
-+
- void TimeEditor::Reset()
- {
- GetTimeCtrl()->SetTimeValue(mOld);
-@@ -303,8 +320,19 @@
- Choice()->SetFocus();
- }
-
-+bool ChoiceEditor::EndEdit(int row, int col, wxGrid *grid)
-+{
-+ wxString newvalue;
-+ bool changed = EndEdit(row, col, grid, mOld, &newvalue);
-+ if (changed) {
-+ ApplyEdit(row, col, grid);
-+ }
-+ return changed;
-+}
-+
- bool ChoiceEditor::EndEdit(int row, int col,
-- wxGrid* grid)
-+ const wxGrid* grid,
-+ const wxString &oldval, wxString *newval)
- {
- int sel = Choice()->GetSelection();
-
-@@ -315,12 +343,20 @@
- }
-
- wxString val = mChoices[sel];
-- if (val == mOld)
-- return false;
-+ bool changed = val != mOld;
-+
-+ if (changed)
-+ {
-+ mValueAsString = val;
-+ *newval = val;
-+ }
-
-- grid->GetTable()->SetValue(row, col, val);
-+ return changed;
-+}
-
-- return true;
-+void ChoiceEditor::ApplyEdit(int row, int col, wxGrid *grid)
-+{
-+ grid->GetTable()->SetValue(row, col, mValueAsString);
- }
-
- void ChoiceEditor::Reset()
-@@ -499,7 +535,7 @@
- if (def && def->IsEnabled()) {
- wxCommandEvent cevent(wxEVT_COMMAND_BUTTON_CLICKED,
- def->GetId());
-- GetParent()->ProcessEvent(cevent);
-+ GetParent()->GetEventHandler()->ProcessEvent(cevent);
- }
- }
- else {
---- a/src/widgets/Grid.h
-+++ b/src/widgets/Grid.h
-@@ -52,8 +52,13 @@
- void SetSize(const wxRect &rect);
-
- void BeginEdit(int row, int col, wxGrid *grid);
-+
- bool EndEdit(int row, int col, wxGrid *grid);
-
-+ bool EndEdit(int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval);
-+
-+ void ApplyEdit(int row, int col, wxGrid *grid);
-+
- void Reset();
-
- wxString GetFormat();
-@@ -65,12 +70,14 @@
- wxString GetValue() const;
-
- TimeTextCtrl *GetTimeCtrl() const { return (TimeTextCtrl *)m_control; };
--
-+
- private:
-
- wxString mFormat;
- double mRate;
- double mOld;
-+ wxString mOldString;
-+ wxString mValueAsString;
- };
-
- // ----------------------------------------------------------------------------
-@@ -124,8 +131,13 @@
- void SetSize(const wxRect &rect);
-
- void BeginEdit(int row, int col, wxGrid *grid);
-+
- bool EndEdit(int row, int col, wxGrid *grid);
-
-+ bool EndEdit(int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval);
-+
-+ void ApplyEdit(int row, int col, wxGrid *grid);
-+
- void Reset();
-
- wxGridCellEditor *Clone() const;
-@@ -159,6 +171,7 @@
-
- wxArrayString mChoices;
- wxString mOld;
-+ wxString mValueAsString;
- };
-
- // ----------------------------------------------------------------------------
---- a/src/widgets/ImageRoll.cpp
-+++ b/src/widgets/ImageRoll.cpp
-@@ -299,7 +299,7 @@
- }
-
- void ImageRoll::DrawBitmap(wxDC &dc, wxBitmap &bitmap,
-- int x, int y, int logicalFunc)
-+ int x, int y, wxRasterOperationMode logicalFunc)
- {
- if (logicalFunc == wxCOPY)
- dc.DrawBitmap(bitmap, x, y);
-@@ -311,7 +311,7 @@
- }
- }
-
--void ImageRoll::Draw(wxDC &dc, wxRect rect, int WXUNUSED(logicalFunc))
-+void ImageRoll::Draw(wxDC &dc, wxRect rect, wxRasterOperationMode WXUNUSED(logicalFunc))
- {
- int width = rect.width;
- int height = rect.height;
-@@ -434,7 +434,7 @@
- mImageRoll.GetMaxSize());
- }
-
--void ImageRollPanel::SetLogicalFunction(int func)
-+void ImageRollPanel::SetLogicalFunction(wxRasterOperationMode func)
- {
- mLogicalFunction = func;
- }
---- a/src/widgets/ImageRoll.h
-+++ b/src/widgets/ImageRoll.h
-@@ -12,9 +12,18 @@
- #ifndef __AUDACITY_IMAGE_ROLL__
- #define __AUDACITY_IMAGE_ROLL__
-
-+#include <wx/dc.h>
-+#include <wx/dcclient.h>
- #include <wx/defs.h>
- #include <wx/dynarray.h>
- #include <wx/panel.h>
-+#include <wx/version.h>
-+
-+
-+#if wxMAJOR_VERSION < 3
-+# define wxRasterOperationMode int
-+#endif
-+
-
- WX_DECLARE_OBJARRAY(wxBitmap, BitmapArray);
- WX_DECLARE_OBJARRAY(wxImage, ImageArray);
-@@ -40,7 +49,7 @@
- wxSize GetMaxSize() const { return mMaxSize; }
-
- void Draw(wxDC &dc, wxRect rect,
-- int logicalFunc = wxCOPY);
-+ wxRasterOperationMode logicalFunc = wxCOPY);
-
- static ImageArray SplitH(const wxImage &src, wxColour magicColor);
- static ImageArray SplitV(const wxImage &src, wxColour magicColor);
-@@ -48,7 +57,7 @@
- protected:
-
- void DrawBitmap(wxDC &dc, wxBitmap &bitmap,
-- int x, int y, int logicalFunc = wxCOPY);
-+ int x, int y, wxRasterOperationMode logicalFunc = wxCOPY);
-
- void Init(RollType type, const wxImage &src, wxColour magicColor);
-
-@@ -72,7 +81,7 @@
- const wxSize& size = wxDefaultSize,
- long style = wxTAB_TRAVERSAL);
-
-- void SetLogicalFunction(int func);
-+ void SetLogicalFunction(wxRasterOperationMode func);
-
- void OnPaint(wxPaintEvent &evt);
- void OnSize(wxSizeEvent &evt);
-@@ -80,7 +89,7 @@
- protected:
- ImageRoll mImageRoll;
-
-- int mLogicalFunction;
-+ wxRasterOperationMode mLogicalFunction;
-
- DECLARE_EVENT_TABLE();
-
---- a/src/widgets/TimeTextCtrl.cpp
-+++ b/src/widgets/TimeTextCtrl.cpp
-@@ -168,6 +168,7 @@
-
- #include <math.h>
-
-+#include <wx/dcclient.h>
- #include <wx/dcmemory.h>
- #include <wx/font.h>
- #include <wx/intl.h>
-@@ -1160,7 +1161,7 @@
- nevent.SetDirection(!event.ShiftDown());
- nevent.SetEventObject(parent);
- nevent.SetCurrentFocus(parent);
-- GetParent()->ProcessEvent(nevent);
-+ GetParent()->GetEventHandler()->ProcessEvent(nevent);
- }
-
- else if (keyCode == WXK_RETURN || keyCode == WXK_NUMPAD_ENTER) {
-@@ -1169,7 +1170,7 @@
- if (def && def->IsEnabled()) {
- wxCommandEvent cevent(wxEVT_COMMAND_BUTTON_CLICKED,
- def->GetId());
-- GetParent()->ProcessEvent(cevent);
-+ GetParent()->GetEventHandler()->ProcessEvent(cevent);
- }
- }
-
---- a/src/xml/XMLWriter.cpp
-+++ b/src/xml/XMLWriter.cpp
-@@ -246,7 +246,7 @@
- mHasKids[0] = true;
- }
-
-- Write(value.c_str());
-+ Write(value);
- }
-
- void XMLWriter::WriteSubTree(const wxChar *value)
---- a/src/widgets/FileHistory.cpp
-+++ b/src/widgets/FileHistory.cpp
-@@ -142,7 +142,7 @@
- // Stored in reverse order
- int n = mHistory.GetCount() - 1;
- for (size_t i = 1; i <= mHistory.GetCount(); i++) {
-- config.Write(wxString::Format(wxT("file%02d"), i), mHistory[n--]);
-+ config.Write(wxString::Format(wxT("file%02lld"), i), mHistory[n--]);
- }
-
- config.SetPath(wxT(".."));
---- a/src/effects/ladspa/LoadLadspa.cpp
-+++ b/src/effects/ladspa/LoadLadspa.cpp
-@@ -147,7 +147,7 @@
- data = mainFn(index);
- while(data) {
-
-- wxString uniqid = wxString::Format(wxT("%08x-%s"), data->UniqueID, LAT1CTOWX(data->Label).c_str());
-+ wxString uniqid = wxString::Format(wxT("%08x-%s"), (unsigned int) data->UniqueID, LAT1CTOWX(data->Label).c_str());
- if (uniq.Index(uniqid) == wxNOT_FOUND) {
- uniq.Add(uniqid);
- std::set<wxString> categories;
---- a/src/import/Import.cpp
-+++ b/src/import/Import.cpp
-@@ -288,7 +288,7 @@
- more to delete.*/
- i = this->mExtImportItems->Count();
- do {
-- name.Printf (wxT("/ExtImportItems/Item%d"), i);
-+ name.Printf (wxT("/ExtImportItems/Item%lld"), i);
- // No item to delete? Then it's time to finish.
- if (!gPrefs->Read(name, &val))
- break;
---- a/src/effects/ladspa/LadspaEffect.cpp
-+++ b/src/effects/ladspa/LadspaEffect.cpp
-@@ -518,16 +518,14 @@
- this->mData = data;
- this->inputControls = inputControls;
- this->sampleRate = sampleRate;
-- #ifdef __WXMSW__
-- // On Windows, for some reason, wxWidgets calls OnTextCtrl during creation
-- // of the text control, and LadspaEffectDialog::OnTextCtrl calls HandleText,
-- // which assumes all the fields have been initialized.
-- // This can give us a bad pointer crash, so manipulate inSlider to
-- // no-op HandleText during creation.
-- inSlider = true;
-- #else
-- inSlider = false;
-- #endif
-+
-+ // wxWidgets calls OnTextCtrl during creation
-+ // of the text control, and LadspaEffectDialog::OnTextCtrl calls HandleText,
-+ // which assumes all the fields have been initialized.
-+ // This can give us a bad pointer crash, so manipulate inSlider to
-+ // no-op HandleText during creation.
-+ inSlider = true;
-+
- inText = false;
-
- toggles = new wxCheckBox*[mData->PortCount];
---- a/src/prefs/PrefsDialog.cpp
-+++ b/src/prefs/PrefsDialog.cpp
-@@ -185,8 +185,6 @@
- Fit();
- wxSize sz = GetSize();
-
-- wxASSERT_MSG(sz.x <= 800 && sz.y <= 600, wxT("Preferences dialog exceeds max size"));
--
- if (sz.x > 800) {
- sz.x = 800;
- }
---- a/src/prefs/QualityPrefs.cpp
-+++ b/src/prefs/QualityPrefs.cpp
-@@ -162,13 +162,13 @@
- {
- S.StartMultiColumn(2, wxEXPAND);
- {
-- S.SetStretchyCol(2);
-+ S.SetStretchyCol(1); // 2nd column (= index 1) is stretchy
-
- S.TieChoice(_("Sample Rate Con&verter:"),
- Resample::GetFastMethodKey(),
- Resample::GetFastMethodDefault(),
- mConverterNames,
-- mConverterLabels),
-+ mConverterLabels);
- S.SetSizeHints(mConverterNames);
-
- S.TieChoice(_("&Dither:"),
---- a/src/Project.h
-+++ b/src/Project.h
-@@ -253,6 +253,7 @@
- void OnMouseEvent(wxMouseEvent & event);
- void OnIconize(wxIconizeEvent &event);
- void OnSize(wxSizeEvent & event);
-+ void OnShow(wxShowEvent & event);
- void OnMove(wxMoveEvent & event);
- void OnScroll(wxScrollEvent & event);
- void OnCloseWindow(wxCloseEvent & event);
-@@ -487,6 +488,8 @@
- // dialog for missing alias warnings
- wxDialog *mAliasMissingWarningDialog;
-
-+ bool mShownOnce;
-+
- public:
- ToolManager *mToolManager;
- bool mShowSplashScreen;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/audacity.git/commitdiff/5eec20a962bde93cc79b18b8d5c74350405d8950
More information about the pld-cvs-commit
mailing list