[Sv1-commits] SF.net SVN: sv1:[1696] sonic-visualiser/tags
Brought to you by:
cannam
From: <ca...@us...> - 2010-05-05 16:27:54
|
Revision: 1696 http://sv1.svn.sourceforge.net/sv1/?rev=1696&view=rev Author: cannam Date: 2010-05-05 16:27:44 +0000 (Wed, 05 May 2010) Log Message: ----------- * Re-tag Added Paths: ----------- sonic-visualiser/tags/sv-v1.7.2/ sonic-visualiser/tags/sv-v1.7.2/CHANGELOG sonic-visualiser/tags/sv-v1.7.2/INSTALL sonic-visualiser/tags/sv-v1.7.2/INSTALL.ubuntu sonic-visualiser/tags/sv-v1.7.2/sv/main/MainWindow.cpp sonic-visualiser/tags/sv-v1.7.2/sv/main/Surveyer.cpp sonic-visualiser/tags/sv-v1.7.2/version.h Removed Paths: ------------- sonic-visualiser/tags/sv-v1.7.2/CHANGELOG sonic-visualiser/tags/sv-v1.7.2/INSTALL sonic-visualiser/tags/sv-v1.7.2/sv/main/MainWindow.cpp sonic-visualiser/tags/sv-v1.7.2/sv/main/Surveyer.cpp sonic-visualiser/tags/sv-v1.7.2/version.h Property changes on: sonic-visualiser/tags/sv-v1.7.2 ___________________________________________________________________ Added: svn:mergeinfo + /sonic-visualiser/branches/one-fftdataserver-per-fftmodel:1406-1415 Deleted: sonic-visualiser/tags/sv-v1.7.2/CHANGELOG =================================================================== --- sonic-visualiser/trunk/CHANGELOG 2010-05-05 14:45:32 UTC (rev 1690) +++ sonic-visualiser/tags/sv-v1.7.2/CHANGELOG 2010-05-05 16:27:44 UTC (rev 1696) @@ -1,277 +0,0 @@ - -Changes in Sonic Visualiser 1.7.1 since the previous release 1.7: - - - The RDF importer does a better job of assigning labels to layers, - layers to panes, and values to labelled regions - - - Interactive editing in the Text layer benefits from the same - improvements as made in 1.7 to Note and Region layers - - - The layer data editor window has a text search feature - - - The main window status bar now shows the last label to have passed - the playback position in the current layer, at the right end of the - status bar - - - The Russian translation has been updated (thanks Alexandre) - -Changes in Sonic Visualiser 1.7 since the previous release 1.6: - - - A new "Insert Item At Selection" function on the Edit menu - can be used to create Note and Region layer items whose time - extents correspond to the current selection(s) - - - Interactively editing points in the Note and Region layers - now works much more smoothly - - - SV can now import MIDI files that use SMPTE timecode for event - timing (importing MIDI files using with the more common - timebase-based timing was already supported) - - - Time values throughout the display may optionally be shown in - seconds and frames at various frame rates - - - A crash on exit in Windows has been fixed - - - A very unobtrusive user survey is now included - - - Various other bug fixes. - -Changes in Sonic Visualiser 1.6 since the previous release 1.5: - - - The Colour 3D Plot layer now supports logarithmic vertical - scale and linear interpolation options. - - - A new colour scheme (High Gain) has been added for spectrogram - and Colour 3D Plot, which improves readability for some data. - - - Further performance improvements have been made to Colour 3D - Plot. - - - Various other bug fixes. - -Changes in Sonic Visualiser 1.5 since the previous version 1.4: - - - You can now insert time instants, time values, and notes using - a MIDI device during playback. If a time value or note layer is - current it will be used for insertion (giving a value equal to - the pitch class, or the played note, respectively); otherwise an - existing or new time instants layer will be used just as it is - when inserting instants using the PC keyboard. Using a MIDI - device should give better timing than using the PC keyboard. - - - There is a new Activity Log window with a (purely informative) list - of events and user interactions that happen while SV is running. - - - The spectrogram has somewhat improved graphical scaling, and - this is now the default (being much faster than the 4x oversampled - method). The previous default is still available as a preference. - - - Visualisation of very dense colour plots (such as spectrograms - calculated by plugins) is substantially faster in this release. - - - Spectrogram display is now faster in many circumstances. - - - Alignment using the MATCH plugin is faster on OS/X than before. - - - SV will take into account RDF plugin descriptions, if available, - in order to make somewhat better decisions about display of plugin - outputs (for example, placing segmentation data into a layer with - segmentation plot type). - - - You can now switch layers by clicking on the spare area at the left - end of the pane that is also used for the current pane indicator. - - - The vertical black lines dividing segments in the time value - layer's segmentation plot style are now optional. - - - Several widget layout bugs on OS/X have been fixed. - - - Several serious crashing, deadlock, and data corruption bugs have - been fixed. - - -New features in Sonic Visualiser 1.4 since the previous version 1.3: - - - SV now has a Region layer type, used for display of features with - durations. It also supports Vamp v2.0 plugins that provide durations - for features. - - - Layer data can now be imported from RDF described using the Audio - Features Ontology, as well as from the existing text file types. SV - can also export annotation layer data to RDF/Turtle, although in a - somewhat simplistic manner at present. - - - You can search for transforms by text in the new "Find a Transform" - dialog. This searches both installed plugins, and plugins that have - not been installed but that have descriptions available on the - semantic web. - - - You can now zoom and scroll vertically in the time-value, note, - and colour 3d plot layers. - - - Sonic Visualiser can now load sessions from uncompressed XML files - as well as its own compressed-XML .sv format. Files with extension - .xml that contain suitable session data will be loaded as sessions. - Note that .xml extension files still do not show up in the default - file load filter. This is intentional, as there may be any kind of - data in them -- if you want to load uncompressed session files from - XML, you need to know you're doing it. - - - Several crashes and other bugs have been fixed. - -Changes in Sonic Visualiser 1.3 since the previous version 1.2: - - - There is a new spreadsheet-style data viewer and editor for - viewing and editing the data in some types of annotation layer. - - - Alignments are now saved to the session file. - - - The spectrogram layer is usually somewhat faster than it was. - - - You can now hold Shift while dragging to move an item, in order - to override the initial drag resistance introduced in 1.2. - - - The gross mis-labelling of time lines in the ruler has been fixed. - - - There is a new, somewhat provisional PulseAudio output driver. - - - Several other bug fixes. - -New features in Sonic Visualiser 1.2, since the previous version 1.0: - - - SV now supports time-alignment of multiple performances of a work - loaded at the same time. This option is enabled when the MATCH Vamp - plugin is installed. When alignment is switched on and more than one - audio file is open, SV will assume that all open files are - differently timed performances of the same work, and will calculate - time alignments for them. Playback will then play only a single file - at a time, and the playback cursors in other files will track at the - varying speeds to try to ensure that each is at the same point in the - underlying score. This enables effective comparison of several such - files, as well as a meaningful way to switch from one performance to - another during playback (ensuring that the switch happens at the - correct point in the performance being switched to). - - - There is a new Image layer, which can display images from the - local filesystem or retrieved via HTTP or FTP. - - - A new measurement tool has been added. With the measurement tool - selected, dragging in a pane draws a rectangle labelled with the - scale values for its start and end corners and its size. You can - have any number of measurements present at once; they are associated - with the top layer, their scale values depend on the scale for that - layer, and they are only shown when that layer is at the top and the - measurement tool is active. Measurements are saved and reloaded in - the session file. Drawing measurements can be undone and redone, and - a measurement can be deleted by hitting Del when highlighted. Note - that the measurement tool shows the scale values associated with the - pixel positions of the mouse when dragging, not any values associated - with actual features present in the audio or its analysis (e.g. the - values are not rounded to the nearest spectrogram bin). - - - You can double-click using the measurement tool in the spectrogram - to get an instant measurement rectangle for a feature. This is a - purely graphical feature that works by calculating the boundary of a - contiguous region of pixels "similar to" the one you double-clicked - on; it does not use audio analysis. Adjusting the gain and colour - scheme etc of the spectrogram will (by design) affect the - measurements obtained this way. - - - The spectrum can now optionally show frequency estimates of peaks - aligned with a piano keyboard along the horizontal axis (this needs - some refinement). - - - The harmonic cursor in the spectrogram has moved from the Select - tool to the Measurement tool. There is now a similar harmonic cursor - in the spectrum. Both of them show more information as text - alongside the cursor than previously. - - - There is a new Erase tool for erasing individual points from an - editable layer. - - - Several keyboard shortcuts have changed -- all of the Alt+key - shortcuts now either use Ctrl or a plain keypress with no modifier, - to avoid clashes with window manager shortcuts and to make them - easier to use and remember - - - The playback controls are now in a Playback menu as well as the - toolbar. - - - There is a new key and mouse control reference under Help (or press - F2). - - - You can double-click on a pane in navigate mode to jump to a time. - - - All of the single-colour layers (waveform, time values etc) now - allow you to define your own colours as well as using the built-in - set. The colour of a layer is now shown next to its name on the pane. - - - When you add a new single-colour layer it will use a default colour - that is not yet in use in another layer (if there is one). - - - Single-colour layers can now optionally have black backgrounds (with - a set of lighter colours in the default colour palette that use black - backgrounds by default). - - - There's a new Printer colour scheme in the spectrogram with only a - small number of grey shades. - - - Vertical zoom in a log-scaled spectrogram is much more intuitive; - it now leaves the point that was in the centre of the visible area in - the centre after zoom, instead of the point that was in the centre of - the linear range corresponding to the visible area. - - - You can now turn a colour 3d plot layer upside down by clicking the - Invert Vertical Scale button. - - - There's a new Layer Summary window which shows the panes and - layer data in a tree layout. This is very simplistic at the moment. - - - Each pane now has an [X] button at its top left, which removes that - pane when clicked. - - - There's a new Solo play mode toggle button; when active, only the - currently selected pane is played. This is also the default when - time alignment is in use. - - - Rewind/ffwd now stay confined to the selection if Play Selection is - enabled; also, the rewind and ffwd "one step" buttons are now enabled - even if there is no time instants layer for them to align to (they - align to the time ruler instead and so jump in steps of a size - dependent on the zoom level). - - - You can now export note layers to MIDI. - - - MIDI note velocity is partially supported. Note velocity is - retained when importing and exporting MIDI and is used in playback, - but it is not yet shown in the display and cannot yet be edited. - - - You can now drag-and-drop files (of whatever type) onto SV from - other programs such as file managers or web browsers. - - - mp3 files (and Ogg, but they aren't supported on Windows at the - moment) are now decoded in a background thread so you can see the - start of the track without waiting for the rest to decode. - - - Mac builds of SV can now load AAC/mp4 files and anything else - supported by QuickTime. - - - There is now an option to resample audio files on import if they - don't match the samplerate of the first file loaded. By default this - is switched off, as it affects the visible waveform. The default - behaviour is unchanged (play at the wrong rate). There is still no - option to handle multiple rates "correctly" (i.e. by resampling - on playback and showing the waveforms at different resolutions - according to each one's underlying rate) and there probably never - will be. - - - SV can now open .m3u playlist files, though it's a hazardous thing - to do as it simply loads all the files in the playlist at once. - - - SV now has various options for how to number tapped time instants - (bar/beat, plain counter, time in seconds, tempo etc). - - - The official builds use Qt 4.3, which fixes some nasty - bugs in the file dialog that the version 1.0 builds suffered from. - Copied: sonic-visualiser/tags/sv-v1.7.2/CHANGELOG (from rev 1694, sonic-visualiser/trunk/CHANGELOG) =================================================================== --- sonic-visualiser/tags/sv-v1.7.2/CHANGELOG (rev 0) +++ sonic-visualiser/tags/sv-v1.7.2/CHANGELOG 2010-05-05 16:27:44 UTC (rev 1696) @@ -0,0 +1,289 @@ + +Changes in Sonic Visualiser 1.7.2 since the previous release 1.7.1: + + - The time-value layer now has an origin line and an option to + show derivatives (change from one point to the next) rather than + raw values + + - A static initialiser race has been fixed, possibly fixing an + occasional crash on startup in Windows + + - A crash when pressing Play straight after New Session has been + fixed + +Changes in Sonic Visualiser 1.7.1 since the previous release 1.7: + + - The RDF importer does a better job of assigning labels to layers, + layers to panes, and values to labelled regions + + - Interactive editing in the Text layer benefits from the same + improvements as made in 1.7 to Note and Region layers + + - The layer data editor window has a text search feature + + - The main window status bar now shows the last label to have passed + the playback position in the current layer, at the right end of the + status bar + + - The Russian translation has been updated (thanks Alexandre) + +Changes in Sonic Visualiser 1.7 since the previous release 1.6: + + - A new "Insert Item At Selection" function on the Edit menu + can be used to create Note and Region layer items whose time + extents correspond to the current selection(s) + + - Interactively editing points in the Note and Region layers + now works much more smoothly + + - SV can now import MIDI files that use SMPTE timecode for event + timing (importing MIDI files using with the more common + timebase-based timing was already supported) + + - Time values throughout the display may optionally be shown in + seconds and frames at various frame rates + + - A crash on exit in Windows has been fixed + + - A very unobtrusive user survey is now included + + - Various other bug fixes. + +Changes in Sonic Visualiser 1.6 since the previous release 1.5: + + - The Colour 3D Plot layer now supports logarithmic vertical + scale and linear interpolation options. + + - A new colour scheme (High Gain) has been added for spectrogram + and Colour 3D Plot, which improves readability for some data. + + - Further performance improvements have been made to Colour 3D + Plot. + + - Various other bug fixes. + +Changes in Sonic Visualiser 1.5 since the previous version 1.4: + + - You can now insert time instants, time values, and notes using + a MIDI device during playback. If a time value or note layer is + current it will be used for insertion (giving a value equal to + the pitch class, or the played note, respectively); otherwise an + existing or new time instants layer will be used just as it is + when inserting instants using the PC keyboard. Using a MIDI + device should give better timing than using the PC keyboard. + + - There is a new Activity Log window with a (purely informative) list + of events and user interactions that happen while SV is running. + + - The spectrogram has somewhat improved graphical scaling, and + this is now the default (being much faster than the 4x oversampled + method). The previous default is still available as a preference. + + - Visualisation of very dense colour plots (such as spectrograms + calculated by plugins) is substantially faster in this release. + + - Spectrogram display is now faster in many circumstances. + + - Alignment using the MATCH plugin is faster on OS/X than before. + + - SV will take into account RDF plugin descriptions, if available, + in order to make somewhat better decisions about display of plugin + outputs (for example, placing segmentation data into a layer with + segmentation plot type). + + - You can now switch layers by clicking on the spare area at the left + end of the pane that is also used for the current pane indicator. + + - The vertical black lines dividing segments in the time value + layer's segmentation plot style are now optional. + + - Several widget layout bugs on OS/X have been fixed. + + - Several serious crashing, deadlock, and data corruption bugs have + been fixed. + + +New features in Sonic Visualiser 1.4 since the previous version 1.3: + + - SV now has a Region layer type, used for display of features with + durations. It also supports Vamp v2.0 plugins that provide durations + for features. + + - Layer data can now be imported from RDF described using the Audio + Features Ontology, as well as from the existing text file types. SV + can also export annotation layer data to RDF/Turtle, although in a + somewhat simplistic manner at present. + + - You can search for transforms by text in the new "Find a Transform" + dialog. This searches both installed plugins, and plugins that have + not been installed but that have descriptions available on the + semantic web. + + - You can now zoom and scroll vertically in the time-value, note, + and colour 3d plot layers. + + - Sonic Visualiser can now load sessions from uncompressed XML files + as well as its own compressed-XML .sv format. Files with extension + .xml that contain suitable session data will be loaded as sessions. + Note that .xml extension files still do not show up in the default + file load filter. This is intentional, as there may be any kind of + data in them -- if you want to load uncompressed session files from + XML, you need to know you're doing it. + + - Several crashes and other bugs have been fixed. + +Changes in Sonic Visualiser 1.3 since the previous version 1.2: + + - There is a new spreadsheet-style data viewer and editor for + viewing and editing the data in some types of annotation layer. + + - Alignments are now saved to the session file. + + - The spectrogram layer is usually somewhat faster than it was. + + - You can now hold Shift while dragging to move an item, in order + to override the initial drag resistance introduced in 1.2. + + - The gross mis-labelling of time lines in the ruler has been fixed. + + - There is a new, somewhat provisional PulseAudio output driver. + + - Several other bug fixes. + +New features in Sonic Visualiser 1.2, since the previous version 1.0: + + - SV now supports time-alignment of multiple performances of a work + loaded at the same time. This option is enabled when the MATCH Vamp + plugin is installed. When alignment is switched on and more than one + audio file is open, SV will assume that all open files are + differently timed performances of the same work, and will calculate + time alignments for them. Playback will then play only a single file + at a time, and the playback cursors in other files will track at the + varying speeds to try to ensure that each is at the same point in the + underlying score. This enables effective comparison of several such + files, as well as a meaningful way to switch from one performance to + another during playback (ensuring that the switch happens at the + correct point in the performance being switched to). + + - There is a new Image layer, which can display images from the + local filesystem or retrieved via HTTP or FTP. + + - A new measurement tool has been added. With the measurement tool + selected, dragging in a pane draws a rectangle labelled with the + scale values for its start and end corners and its size. You can + have any number of measurements present at once; they are associated + with the top layer, their scale values depend on the scale for that + layer, and they are only shown when that layer is at the top and the + measurement tool is active. Measurements are saved and reloaded in + the session file. Drawing measurements can be undone and redone, and + a measurement can be deleted by hitting Del when highlighted. Note + that the measurement tool shows the scale values associated with the + pixel positions of the mouse when dragging, not any values associated + with actual features present in the audio or its analysis (e.g. the + values are not rounded to the nearest spectrogram bin). + + - You can double-click using the measurement tool in the spectrogram + to get an instant measurement rectangle for a feature. This is a + purely graphical feature that works by calculating the boundary of a + contiguous region of pixels "similar to" the one you double-clicked + on; it does not use audio analysis. Adjusting the gain and colour + scheme etc of the spectrogram will (by design) affect the + measurements obtained this way. + + - The spectrum can now optionally show frequency estimates of peaks + aligned with a piano keyboard along the horizontal axis (this needs + some refinement). + + - The harmonic cursor in the spectrogram has moved from the Select + tool to the Measurement tool. There is now a similar harmonic cursor + in the spectrum. Both of them show more information as text + alongside the cursor than previously. + + - There is a new Erase tool for erasing individual points from an + editable layer. + + - Several keyboard shortcuts have changed -- all of the Alt+key + shortcuts now either use Ctrl or a plain keypress with no modifier, + to avoid clashes with window manager shortcuts and to make them + easier to use and remember + + - The playback controls are now in a Playback menu as well as the + toolbar. + + - There is a new key and mouse control reference under Help (or press + F2). + + - You can double-click on a pane in navigate mode to jump to a time. + + - All of the single-colour layers (waveform, time values etc) now + allow you to define your own colours as well as using the built-in + set. The colour of a layer is now shown next to its name on the pane. + + - When you add a new single-colour layer it will use a default colour + that is not yet in use in another layer (if there is one). + + - Single-colour layers can now optionally have black backgrounds (with + a set of lighter colours in the default colour palette that use black + backgrounds by default). + + - There's a new Printer colour scheme in the spectrogram with only a + small number of grey shades. + + - Vertical zoom in a log-scaled spectrogram is much more intuitive; + it now leaves the point that was in the centre of the visible area in + the centre after zoom, instead of the point that was in the centre of + the linear range corresponding to the visible area. + + - You can now turn a colour 3d plot layer upside down by clicking the + Invert Vertical Scale button. + + - There's a new Layer Summary window which shows the panes and + layer data in a tree layout. This is very simplistic at the moment. + + - Each pane now has an [X] button at its top left, which removes that + pane when clicked. + + - There's a new Solo play mode toggle button; when active, only the + currently selected pane is played. This is also the default when + time alignment is in use. + + - Rewind/ffwd now stay confined to the selection if Play Selection is + enabled; also, the rewind and ffwd "one step" buttons are now enabled + even if there is no time instants layer for them to align to (they + align to the time ruler instead and so jump in steps of a size + dependent on the zoom level). + + - You can now export note layers to MIDI. + + - MIDI note velocity is partially supported. Note velocity is + retained when importing and exporting MIDI and is used in playback, + but it is not yet shown in the display and cannot yet be edited. + + - You can now drag-and-drop files (of whatever type) onto SV from + other programs such as file managers or web browsers. + + - mp3 files (and Ogg, but they aren't supported on Windows at the + moment) are now decoded in a background thread so you can see the + start of the track without waiting for the rest to decode. + + - Mac builds of SV can now load AAC/mp4 files and anything else + supported by QuickTime. + + - There is now an option to resample audio files on import if they + don't match the samplerate of the first file loaded. By default this + is switched off, as it affects the visible waveform. The default + behaviour is unchanged (play at the wrong rate). There is still no + option to handle multiple rates "correctly" (i.e. by resampling + on playback and showing the waveforms at different resolutions + according to each one's underlying rate) and there probably never + will be. + + - SV can now open .m3u playlist files, though it's a hazardous thing + to do as it simply loads all the files in the playlist at once. + + - SV now has various options for how to number tapped time instants + (bar/beat, plain counter, time in seconds, tempo etc). + + - The official builds use Qt 4.3, which fixes some nasty + bugs in the file dialog that the version 1.0 builds suffered from. + Deleted: sonic-visualiser/tags/sv-v1.7.2/INSTALL =================================================================== --- sonic-visualiser/trunk/INSTALL 2010-05-05 14:45:32 UTC (rev 1690) +++ sonic-visualiser/tags/sv-v1.7.2/INSTALL 2010-05-05 16:27:44 UTC (rev 1696) @@ -1,139 +0,0 @@ - -To compile from source ----------------------- - -First, please consider getting one of the ready-to-run binary -distributions available from http://www.sonicvisualiser.org/ . - -The following additional libraries are required or optional when -building Sonic Visualiser: - -REQUIRED Vamp Plugin SDK v2.0 http://www.vamp-plugins.org/ - -REQUIRED Qt4 Free Edition http://www.trolltech.com/ -REQUIRED libsndfile http://www.mega-nerd.com/libsndfile/ -REQUIRED libsamplerate http://www.mega-nerd.com/SRC/ -REQUIRED FFTW3 http://www.fftw.org/ -REQUIRED bzip2 library http://www.bzip.org/ -REQUIRED Redland RDF libraries http://librdf.org/ -REQUIRED Rubber Band http://www.breakfastquay.com/rubberband/ - -Optional JACK http://www.jackaudio.org/ -Optional PortAudio v18 or v19 http://www.portaudio.com/ -Optional PulseAudio http://www.pulseaudio.org/ -Optional MAD mp3 decoder http://www.underbit.com/products/mad/ -Optional Oggz and fishsound http://www.annodex.net/software/libraries.html -Optional liblo OSC library http://www.plugin.org.uk/liblo/ - -Although JACK, PortAudio, and PulseAudio are individually optional, -you will need to have one or the other of them in order to get any -audio playback. Usually JACK is preferred on Linux with PulseAudio as -a backup, and PortAudio is used elsewhere. - -The Redland RDF libraries include the Raptor RDF parser library, -Rasqal RDF query library, and librdf, the Redland RDF datastore (which -depends on both of those). Sonic Visualiser uses Rasqal and Redland -directly, and so indirectly also requires Raptor. For best -performance it's strongly recommended that you build with Redland -1.0.8 or newer. - -On Linux, you will need the ALSA libraries (used for MIDI). - -If you happen to be using a Debian-based Linux, you probably want to -apt-get install the following packages: libqt4-dev libsndfile1-dev -libsamplerate0-dev fftw3-dev libbz2-dev libjack-dev libmad0-dev -liboggz1-dev libfishsound1-dev liblo0-dev liblrdf0-dev librdf0-dev . - -If you are building on a Unix-like system that supports pkg-config and -uses it for all appropriate libraries (such as a modern Linux -distribution) then you should be able to just run "qmake" (being -careful to ensure it is the Qt 4 version of qmake you are running, and -not a Qt 3 version). - -If you do not have pkg-config, you should first edit the file prf/sv.prf -and comment out any of the optional HAVE_* lines (in the section -starting "If you don't have pkg-config...") for library dependencies -that you aren't using. Then run the Qt 4 "qmake" command. This will -create the proper Makefile. - -(If you're on the Mac and you have Qt3 installed as well, you must -export QMAKESPEC=macx-g++ before you do this, or Qt will get confused.) - -Then type "make". The program will then either build, or not build. -If it builds, the result will be a binary file in sv/sonic-visualiser -(on Linux) or sv/release/Sonic Visualiser.exe (on Win32), or a bundle -in sv/Sonic Visualiser.app. There should be nothing to install apart -from the executable itself and any of the above listed third-party -shared libraries that are not already installed. - - -Qt Library Version Requirements -------------------------------- - -Sonic Visualiser requires Qt version 4.3 or newer. It can not be -built with Qt3 or with Qt 4.0.x, 4.1.x, or 4.2.x. - - -A Note on SV Library Dependencies ---------------------------------- - -Sonic Visualiser compiles as a set of static libraries, with various -dependencies. In some cases these dependencies are circular (which -may indicate a design flaw, or a "deliberate compromise"). You -shouldn't need to know any of this just to build SV, but it may be of -interest to developers. - - - Library Provides Depends on - ------- -------- ---------- - - audioio Audio playback - -> base data plugin - -> QtCore - - base Miscellaneous handy classes - -> system - -> QtCore - - data File & network I/O - FFT cache - Data model abstraction classes - -> base - -> QtNetwork QtXml QtGui QtCore - - framework Application base classes - -> base layer view transform data widgets - -> QtNetwork QtXml QtGui QtCore - - layer Display layer implementations - -> base data view widgets - -> QtXml QtGui QtCore - - plugin Plugin loaders and interface classes - -> base system - -> QtXml QtCore - - sv Main application classes - -> base data view widgets framework - transform layer audioio - -> QtNetwork QtXml QtGui QtCore - - system Platform helper functions - - transform Model-to-model data processing - -> base data plugin widgets - -> QtXml QtGui QtCore - - rdf RDF data discovery and querying - -> base data plugin transform - -> QtNetwork QtGui QtCore - - view View and pane widgets - -> base data layer widgets - -> QtXml QtGui QtCore - - widgets Widget and other GUI classes - -> base data layer plugin view - -> QtXml QtGui QtCore - - Copied: sonic-visualiser/tags/sv-v1.7.2/INSTALL (from rev 1691, sonic-visualiser/trunk/INSTALL) =================================================================== --- sonic-visualiser/tags/sv-v1.7.2/INSTALL (rev 0) +++ sonic-visualiser/tags/sv-v1.7.2/INSTALL 2010-05-05 16:27:44 UTC (rev 1696) @@ -0,0 +1,145 @@ + +To compile from source +---------------------- + +First, please consider getting one of the ready-to-run binary +distributions available from http://www.sonicvisualiser.org/ . + +This file provides various instructions useful when compiling Sonic +Visualiser from source, but it doesn't have a complete recipe for any +one platform -- there are too many variables. However, you can find a +recipe for one platform (Ubuntu Linux) in the file INSTALL.ubuntu. + +The following additional libraries are required or optional when +building Sonic Visualiser: + +REQUIRED Vamp Plugin SDK v2.0 http://www.vamp-plugins.org/ + +REQUIRED Qt4 Free Edition http://www.trolltech.com/ +REQUIRED libsndfile http://www.mega-nerd.com/libsndfile/ +REQUIRED libsamplerate http://www.mega-nerd.com/SRC/ +REQUIRED FFTW3 http://www.fftw.org/ +REQUIRED bzip2 library http://www.bzip.org/ +REQUIRED Redland RDF libraries http://librdf.org/ +REQUIRED Rubber Band http://www.breakfastquay.com/rubberband/ + +Optional JACK http://www.jackaudio.org/ +Optional PortAudio v18 or v19 http://www.portaudio.com/ +Optional PulseAudio http://www.pulseaudio.org/ +Optional MAD mp3 decoder http://www.underbit.com/products/mad/ +Optional Oggz and fishsound http://www.annodex.net/software/libraries.html +Optional liblo OSC library http://www.plugin.org.uk/liblo/ + +Although JACK, PortAudio, and PulseAudio are individually optional, +you will need to have one or the other of them in order to get any +audio playback. Usually JACK is preferred on Linux with PulseAudio as +a backup, and PortAudio is used elsewhere. + +The Redland RDF libraries include the Raptor RDF parser library, +Rasqal RDF query library, and librdf, the Redland RDF datastore (which +depends on both of those). Sonic Visualiser uses Rasqal and Redland +directly, and so indirectly also requires Raptor. For best +performance it's strongly recommended that you build with Redland +1.0.8 or newer. + +On Linux, you will need the ALSA libraries (used for MIDI). + +If you happen to be using a Debian-based Linux, you probably want to +apt-get install the following packages: libqt4-dev libsndfile1-dev +libsamplerate0-dev fftw3-dev libbz2-dev libjack-dev libmad0-dev +liboggz1-dev libfishsound1-dev libasound2-dev liblo0-dev liblrdf0-dev +librdf0-dev . + +If you are building on a Unix-like system that supports pkg-config and +uses it for all appropriate libraries (such as a modern Linux +distribution) then you should be able to just run "qmake" (being +careful to ensure it is the Qt 4 version of qmake you are running, and +not a Qt 3 version). + +If you do not have pkg-config, you should first edit the file prf/sv.prf +and comment out any of the optional HAVE_* lines (in the section +starting "If you don't have pkg-config...") for library dependencies +that you aren't using. Then run the Qt 4 "qmake" command. This will +create the proper Makefile. + +(If you're on the Mac and you have Qt3 installed as well, you must +export QMAKESPEC=macx-g++ before you do this, or Qt will get confused.) + +Then type "make". The program will then either build, or not build. +If it builds, the result will be a binary file in sv/sonic-visualiser +(on Linux) or sv/release/Sonic Visualiser.exe (on Win32), or a bundle +in sv/Sonic Visualiser.app. There should be nothing to install apart +from the executable itself and any of the above listed third-party +shared libraries that are not already installed. + + +Qt Library Version Requirements +------------------------------- + +Sonic Visualiser requires Qt version 4.3 or newer. It can not be +built with Qt3 or with Qt 4.0.x, 4.1.x, or 4.2.x. + + +A Note on SV Library Dependencies +--------------------------------- + +Sonic Visualiser compiles as a set of static libraries, with various +dependencies. In some cases these dependencies are circular (which +may indicate a design flaw, or a "deliberate compromise"). You +shouldn't need to know any of this just to build SV, but it may be of +interest to developers. + + + Library Provides Depends on + ------- -------- ---------- + + audioio Audio playback + -> base data plugin + -> QtCore + + base Miscellaneous handy classes + -> system + -> QtCore + + data File & network I/O + FFT cache + Data model abstraction classes + -> base + -> QtNetwork QtXml QtGui QtCore + + framework Application base classes + -> base layer view transform data widgets + -> QtNetwork QtXml QtGui QtCore + + layer Display layer implementations + -> base data view widgets + -> QtXml QtGui QtCore + + plugin Plugin loaders and interface classes + -> base system + -> QtXml QtCore + + sv Main application classes + -> base data view widgets framework + transform layer audioio + -> QtNetwork QtXml QtGui QtCore + + system Platform helper functions + + transform Model-to-model data processing + -> base data plugin widgets + -> QtXml QtGui QtCore + + rdf RDF data discovery and querying + -> base data plugin transform + -> QtNetwork QtGui QtCore + + view View and pane widgets + -> base data layer widgets + -> QtXml QtGui QtCore + + widgets Widget and other GUI classes + -> base data layer plugin view + -> QtXml QtGui QtCore + + Copied: sonic-visualiser/tags/sv-v1.7.2/INSTALL.ubuntu (from rev 1691, sonic-visualiser/trunk/INSTALL.ubuntu) =================================================================== --- sonic-visualiser/tags/sv-v1.7.2/INSTALL.ubuntu (rev 0) +++ sonic-visualiser/tags/sv-v1.7.2/INSTALL.ubuntu 2010-05-05 16:27:44 UTC (rev 1696) @@ -0,0 +1,23 @@ + +To compile Sonic Visualiser from source in Ubuntu 10.04 +------------------------------------------------------- + +See INSTALL for general notes on compilation. This is a specific +recipe for Ubuntu 10.04. + +Starting from a clean installation of Ubuntu 10.04 desktop edition, +with a working network connection, with the Sonic Visualiser source +code unpacked into $HOME/sonic-visualiser: + +$ cd sonic-visualiser +$ sudo apt-get update +$ sudo apt-get install build-essential libqt4-dev libsndfile-dev libsamplerate-dev fftw3-dev libbz2-dev libjack-dev libasound-dev libmad0-dev liboggz-dev libfishsound-dev liblo-dev liblrdf-dev librdf-dev librubberband-dev vamp-plugin-sdk +$ qmake-qt4 +$ make + +And wait for some time for the build to complete. + +You should now have an executable file at sv/sonic-visualiser. You +don't need to properly install this -- just run it in place, or copy +it to wherever you like. + Deleted: sonic-visualiser/tags/sv-v1.7.2/sv/main/MainWindow.cpp =================================================================== --- sonic-visualiser/trunk/sv/main/MainWindow.cpp 2010-05-05 14:45:32 UTC (rev 1690) +++ sonic-visualiser/tags/sv-v1.7.2/sv/main/MainWindow.cpp 2010-05-05 16:27:44 UTC (rev 1696) @@ -1,4068 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Sonic Visualiser - An audio file viewer and annotation editor. - Centre for Digital Music, Queen Mary, University of London. - This file copyright 2006-2007 Chris Cannam and QMUL. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. See the file - COPYING included with this distribution for more information. -*/ - -#include "../version.h" - -#include "MainWindow.h" -#include "PreferencesDialog.h" - -#include "view/Pane.h" -#include "view/PaneStack.h" -#include "data/model/WaveFileModel.h" -#include "data/model/SparseOneDimensionalModel.h" -#include "data/model/NoteModel.h" -#include "data/model/Labeller.h" -#include "data/osc/OSCQueue.h" -#include "framework/Document.h" -#include "view/ViewManager.h" -#include "base/Preferences.h" -#include "layer/WaveformLayer.h" -#include "layer/TimeRulerLayer.h" -#include "layer/TimeInstantLayer.h" -#include "layer/TimeValueLayer.h" -#include "layer/NoteLayer.h" -#include "layer/Colour3DPlotLayer.h" -#include "layer/SliceLayer.h" -#include "layer/SliceableLayer.h" -#include "layer/ImageLayer.h" -#include "layer/RegionLayer.h" -#include "widgets/Fader.h" -#include "view/Overview.h" -#include "widgets/PropertyBox.h" -#include "widgets/PropertyStack.h" -#include "widgets/AudioDial.h" -#include "widgets/IconLoader.h" -#include "widgets/LayerTreeDialog.h" -#include "widgets/ListInputDialog.h" -#include "widgets/SubdividingMenu.h" -#include "widgets/NotifyingPushButton.h" -#include "widgets/KeyReference.h" -#include "widgets/TransformFinder.h" -#include "widgets/LabelCounterInputDialog.h" -#include "widgets/ActivityLog.h" -#include "audioio/AudioCallbackPlaySource.h" -#include "audioio/AudioCallbackPlayTarget.h" -#include "audioio/AudioTargetFactory.h" -#include "audioio/PlaySpeedRangeMapper.h" -#include "data/fileio/DataFileReaderFactory.h" -#include "data/fileio/PlaylistFileReader.h" -#include "data/fileio/WavFileWriter.h" -#include "data/fileio/CSVFileWriter.h" -#include "data/fileio/MIDIFileWriter.h" -#include "data/fileio/BZipFileDevice.h" -#include "data/fileio/FileSource.h" -#include "data/fft/FFTDataServer.h" -#include "data/midi/MIDIInput.h" -#include "base/RecentFiles.h" -#include "transform/TransformFactory.h" -#include "transform/ModelTransformerFactory.h" -#include "base/PlayParameterRepository.h" -#include "base/XmlExportable.h" -#include "widgets/CommandHistory.h" -#include "base/Profiler.h" -#include "base/Clipboard.h" -#include "base/UnitDatabase.h" -#include "layer/ColourDatabase.h" -#include "widgets/ModelDataTableDialog.h" -#include "rdf/PluginRDFIndexer.h" -#include "rdf/RDFExporter.h" - -#include "Surveyer.h" -#include "framework/VersionTester.h" - -// For version information -#include <vamp/vamp.h> -#include <vamp-hostsdk/PluginBase.h> -#include "plugin/api/ladspa.h" -#include "plugin/api/dssi.h" - -#include <QApplication> -#include <QMessageBox> -#include <QGridLayout> -#include <QLabel> -#include <QAction> -#include <QMenuBar> -#include <QToolBar> -#include <QInputDialog> -#include <QStatusBar> -#include <QTreeView> -#include <QFile> -#include <QFileInfo> -#include <QDir> -#include <QTextStream> -#include <QProcess> -#include <QShortcut> -#include <QSettings> -#include <QDateTime> -#include <QProcess> -#include <QCheckBox> -#include <QRegExp> -#include <QScrollArea> - -#include <iostream> -#include <cstdio> -#include <errno.h> - -using std::cerr; -using std::endl; - -using std::vector; -using std::map; -using std::set; - - -MainWindow::MainWindow(bool withAudioOutput, bool withOSCSupport) : - MainWindowBase(withAudioOutput, withOSCSupport, true), - m_overview(0), - m_mainMenusCreated(false), - m_paneMenu(0), - m_layerMenu(0), - m_transformsMenu(0), - m_playbackMenu(0), - m_existingLayersMenu(0), - m_sliceMenu(0), - m_recentFilesMenu(0), - m_recentTransformsMenu(0), - m_rightButtonMenu(0), - m_rightButtonLayerMenu(0), - m_rightButtonTransformsMenu(0), - m_rightButtonPlaybackMenu(0), - m_soloAction(0), - m_soloModified(false), - m_prevSolo(false), - m_rwdStartAction(0), - m_rwdSimilarAction(0), - m_rwdAction(0), - m_ffwdAction(0), - m_ffwdSimilarAction(0), - m_ffwdEndAction(0), - m_playAction(0), - m_playSelectionAction(0), - m_playLoopAction(0), - m_playControlsSpacer(0), - m_playControlsWidth(0), - m_preferencesDialog(0), - m_layerTreeDialog(0), - m_activityLog(new ActivityLog()), - m_keyReference(new KeyReference()) -{ - Profiler profiler("MainWindow::MainWindow"); - - setWindowTitle(tr("Sonic Visualiser")); - - UnitDatabase *udb = UnitDatabase::getInstance(); - udb->registerUnit("Hz"); - udb->registerUnit("dB"); - udb->registerUnit("s"); - - ColourDatabase *cdb = ColourDatabase::getInstance(); - cdb->addColour(Qt::black, tr("Black")); - cdb->addColour(Qt::darkRed, tr("Red")); - cdb->addColour(Qt::darkBlue, tr("Blue")); - cdb->addColour(Qt::darkGreen, tr("Green")); - cdb->addColour(QColor(200, 50, 255), tr("Purple")); - cdb->addColour(QColor(255, 150, 50), tr("Orange")); - cdb->setUseDarkBackground(cdb->addColour(Qt::white, tr("White")), true); - cdb->setUseDarkBackground(cdb->addColour(Qt::red, tr("Bright Red")), true); - cdb->setUseDarkBackground(cdb->addColour(QColor(30, 150, 255), tr("Bright Blue")), true); - cdb->setUseDarkBackground(cdb->addColour(Qt::green, tr("Bright Green")), true); - cdb->setUseDarkBackground(cdb->addColour(QColor(225, 74, 255), tr("Bright Purple")), true); - cdb->setUseDarkBackground(cdb->addColour(QColor(255, 188, 80), tr("Bright Orange")), true); - - QFrame *frame = new QFrame; - setCentralWidget(frame); - - QGridLayout *layout = new QGridLayout; - - m_descriptionLabel = new QLabel; //!!! hang on, this is declared in base class -- should be declared and initialised by same class - - QScrollArea *scroll = new QScrollArea(frame); - scroll->setWidgetResizable(true); - scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - scroll->setFrameShape(QFrame::NoFrame); - - scroll->setWidget(m_paneStack); - - m_overview = new Overview(frame); - m_overview->setViewManager(m_viewManager); - m_overview->setFixedHeight(40); -#ifndef _WIN32 - // For some reason, the contents of the overview never appear if we - // make this setting on Windows. I have no inclination at the moment - // to track down the reason why. - m_overview->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); -#endif - connect(m_overview, SIGNAL(contextHelpChanged(const QString &)), - this, SLOT(contextHelpChanged(const QString &))); - - m_panLayer = new WaveformLayer; - m_panLayer->setChannelMode(WaveformLayer::MergeChannels); - m_panLayer->setAggressiveCacheing(true); - m_overview->addLayer(m_panLayer); - - if (m_viewManager->getGlobalDarkBackground()) { - m_panLayer->setBaseColour - (ColourDatabase::getInstance()->getColourIndex(tr("Bright Green"))); - } else { - m_panLayer->setBaseColour - (ColourDatabase::getInstance()->getColourIndex(tr("Green"))); - } - - m_fader = new Fader(frame, false); - connect(m_fader, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); - connect(m_fader, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); - - m_playSpeed = new AudioDial(frame); - m_playSpeed->setMinimum(0); - m_playSpeed->setMaximum(200); - m_playSpeed->setValue(100); - m_playSpeed->setFixedWidth(32); - m_playSpeed->setFixedHeight(32); - m_playSpeed->setNotchesVisible(true); - m_playSpeed->setPageStep(10); - m_playSpeed->setObjectName(tr("Playback Speedup")); - m_playSpeed->setDefaultValue(100); - m_playSpeed->setRangeMapper(new PlaySpeedRangeMapper(0, 200)); - m_playSpeed->setShowToolTip(true); - connect(m_playSpeed, SIGNAL(valueChanged(int)), - this, SLOT(playSpeedChanged(int))); - connect(m_playSpeed, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); - connect(m_playSpeed, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); - - IconLoader il; - - QSettings settings; - settings.beginGroup("MainWindow"); - settings.endGroup(); - - m_playControlsSpacer = new QFrame; - - layout->setSpacing(4); - layout->addWidget(scroll, 0, 0, 1, 5); - layout->addWidget(m_overview, 1, 1); - layout->addWidget(m_playControlsSpacer, 1, 2); - layout->addWidget(m_playSpeed, 1, 3); - layout->addWidget(m_fader, 1, 4); - - m_playControlsWidth = - m_fader->width() + m_playSpeed->width() + layout->spacing() * 2; - - layout->setColumnMinimumWidth(0, 14); - layout->setColumnStretch(0, 0); - - m_paneStack->setPropertyStackMinWidth(m_playControlsWidth - + 2 + layout->spacing()); - m_playControlsSpacer->setFixedSize(QSize(2, 2)); - - layout->setColumnStretch(1, 10); - - connect(m_paneStack, SIGNAL(propertyStacksResized(int)), - this, SLOT(propertyStacksResized(int))); - - frame->setLayout(layout); - - setupMenus(); - setupToolbars(); - setupHelpMenu(); - - statusBar(); - m_currentLabel = new QLabel; - statusBar()->addPermanentWidget(m_currentLabel); - - connect(m_viewManager, SIGNAL(activity(QString)), - m_activityLog, SLOT(activityHappened(QString))); - connect(m_playSource, SIGNAL(activity(QString)), - m_activityLog, SLOT(activityHappened(QString))); - connect(CommandHistory::getInstance(), SIGNAL(activity(QString)), - m_activityLog, SLOT(activityHappened(QString))); - connect(this, SIGNAL(activity(QString)), - m_activityLog, SLOT(activityHappened(QString))); - connect(this, SIGNAL(replacedDocument()), this, SLOT(documentReplaced())); - m_activityLog->hide(); - - newSession(); - - connect(m_midiInput, SIGNAL(eventsAvailable()), - this, SLOT(midiEventsAvailable())); - - TransformFactory::getInstance()->startPopulationThread(); - - Surveyer *surveyer = new Surveyer(this); - VersionTester *vt = new VersionTester - ("sonicvisualiser.org", "/latest-version.txt", SV_VERSION); - connect(vt, SIGNAL(newerVersionAvailable(QString)), - this, SLOT(newerVersionAvailable(QString))); -} - -MainWindow::~MainWindow() -{ -// std::cerr << "MainWindow::~MainWindow" << std::endl; - delete m_keyReference; - delete m_preferencesDialog; - delete m_layerTreeDialog; - Profiles::getInstance()->dump(); -// std::cerr << "MainWindow::~MainWindow finishing" << std::endl; -} - -void -MainWindow::setupMenus() -{ - if (!m_mainMenusCreated) { - m_rightButtonMenu = new QMenu(); - - // No -- we don't want tear-off enabled on the right-button - // menu. If it is enabled, then simply right-clicking and - // releasing will pop up the menu, activate the tear-off, and - // leave the torn-off menu window in front of the main window. - // That isn't desirable. I'm not sure it ever would be, in a - // context menu -- perhaps technically a Qt bug? -// m_rightButtonMenu->setTearOffEnabled(true); - } - - if (m_rightButtonLayerMenu) { - m_rightButtonLayerMenu->clear(); - } else { - m_rightButtonLayerMenu = m_rightButtonMenu->addMenu(tr("&Layer")); - m_rightButtonLayerMenu->setTearOffEnabled(true); - m_rightButtonMenu->addSeparator(); - } - - if (m_rightButtonTransformsMenu) { - m_rightButtonTransformsMenu->clear(); - } else { - m_rightButtonTransformsMenu = m_rightButtonMenu->addMenu(tr("&Transform")); - m_rightButtonTransformsMenu->setTearOffEnabled(true); - m_rightButtonMenu->addSeparator(); - } - - if (!m_mainMenusCreated) { - CommandHistory::getInstance()->registerMenu(m_rightButtonMenu); - m_rightButtonMenu->addSeparator(); - } - - setupFileMenu(); - setupEditMenu(); - setupViewMenu(); - setupPaneAndLayerMenus(); - setupTransformsMenu(); - - m_mainMenusCreated = true; -} - -void -MainWindow::setupFileMenu() -{ - if (m_mainMenusCreated) return; - - QMenu *menu = menuBar()->addMenu(tr("&File")); - menu->setTearOffEnabled(true); - QToolBar *toolbar = addToolBar(tr("File Toolbar")); - - m_keyReference->setCategory(tr("File and Session Management")); - - IconLoader il; - - QIcon icon = il.load("filenew"); - icon.addPixmap(il.loadPixmap("filenew-22")); - QAction *action = new QAction(icon, tr("&New Session"), this); - action->setShortcut(tr("Ctrl+N")); - action->setStatusTip(tr("Abandon the current Sonic Visualiser session and start a new one")); - connect(action, SIGNAL(triggered()), this, SLOT(newSession())); - m_keyReference->registerShortcut(action); - menu->addAction(action); - toolbar->addAction(action); - - icon = il.load("fileopensession"); - action = new QAction(icon, tr("&Open Session..."), this); - action->setShortcut(tr("Ctrl+O")); - action->setStatusTip(tr("Open a previously saved Sonic Visualiser session file")); - connect(action, SIGNAL(triggered()), this, SLOT(openSession())); - m_keyReference->registerShortcut(action); - menu->addAction(action); - - icon = il.load("fileopen"); - icon.addPixmap(il.loadPixmap("fileopen-22")); - - action = new QAction(icon, tr("&Open..."), this); - action->setStatusTip(tr("Open a session file, audio file, or layer")); - connect(action, SIGNAL(triggered()), this, SLOT(openSomething())); - toolbar->addAction(action); - - icon = il.load("filesave"); - icon.addPixmap(il.loadPixmap("filesave-22")); - action = new QAction(icon, tr("&Save Session"), this); - action->setShortcut(tr("Ctrl+S")); - action->setStatusTip(tr("Save the current session into a Sonic Visualiser session file")); - connect(action, SIGNAL(triggered()), this, SLOT(saveSession())); - connect(this, SIGNAL(canSave(bool)), action, SLOT(setEnabled(bool))); - m_keyReference->registerShortcut(action); - menu->addAction(action); - toolbar->addAction(action); - - icon = il.load("filesaveas"); - icon.addPixmap(il.loadPixmap("filesaveas-22")); - action = new QAction(icon, tr("Save Session &As..."), this); - action->setShortcut(tr("Ctrl+Shift+S")); - action->setStatusTip(tr("Save the current session into a new Sonic Visualiser session file")); - connect(action, SIGNAL(triggered()), this, SLOT(saveSessionAs())); - menu->addAction(action); - toolbar->addAction(action); - - menu->addSeparator(); - - icon = il.load("fileopenaudio"); - action = new QAction(icon, tr("&Import Audio File..."), this); - action->setShortcut(tr("Ctrl+I")); - action->setStatusTip(tr("Import an existing audio file")); - connect(action, SIGNAL(triggered()), this, SLOT(importAudio())); - m_keyReference->registerShortcut(action); - menu->addAction(action); - - action = new QAction(tr("Import Secondary Audio File..."), this); - action->setShortcut(tr("Ctrl+Shift+I")); - action->setStatusTip(tr("Import an extra audio file as a separate layer")); - connect(action, SIGNAL(triggered()), this, SLOT(importMoreAudio())); - connect(this, SIGNAL(canImportMoreAudio(bool)), action, SLOT(setEnabled(bool))); - m_keyReference->registerShortcut(action); - menu->addAction(action); - - action = new QAction(tr("&Export Audio File..."), this); - action->setStatusTip(tr("Export selection as an audio file")); - connect(action, SIGNAL(triggered()), this, SLOT(exportAudio())); - connect(this, SIGNAL(canExportAudio(bool)), action, SLOT(setEnabled(bool))); - menu->addAction(action); - - menu->addSeparator(); - - action = new QAction(tr("Import Annotation &Layer..."), this); - action->setShortcut(tr("Ctrl+L")); - action->setStatusTip(tr("Import layer data from an existing file")); - connect(action, SIGNAL(triggered()), this, SLOT(importLayer())); - connect(this, SIGNAL(canImportLayer(bool)), action, SLOT(setEnabled(bool))); - m_keyReference->registerShortcut(action); - menu->addAction(action); - - action = new QAction(tr("Export Annotation Layer..."), this); - action->setStatusTip(tr("Export layer data to a file")); - connect(action, SIGNAL(triggered()), this, SLOT(exportLayer())); - connect(this, SIGNAL(canExportLayer(bool)), action, SLOT(setEnabled(bool))); - menu->addAction(action); - - menu->addSeparator(); - - action = new QAction(tr("Export Image File..."), this); - action->setStatusTip(tr("Export a single pane to an image file")); - connect(action, SIGNAL(triggered()), this, SLOT(exportImage())); - connect(this, SIGNAL(canExportImage(bool)), action, SLOT(setEnabled(bool))); - menu->addAction(action); - - menu->addSeparator(); - - action = new QAction(tr("Open Lo&cation..."), this); - action->setShortcut(tr("Ctrl+Shift+O")); - action->setStatusTip(tr("Open or import a file from a remote URL")); - connect(action, SIGNAL(triggered()), this, SLOT(openLocation())); - m_keyReference->registerShortcut(action); - menu->addAction(action); - - menu->addSeparator(); - - m_recentFilesMenu = menu->addMenu(tr("&Recent Files")); - m_recentFilesMenu->setTearOffEnabled(true); - setupRecentFilesMenu(); - connect(&m_recentFiles, SIGNAL(recentChanged()), - this, SLOT(setupRecentFilesMenu())); - - menu->addSeparator(); - action = new QAction(tr("&Preferences..."), this); - action->setStatusTip(tr("Adjust the application preferences")); - connect(action, SIGNAL(triggered()), this, SLOT(preferences())); - menu->addAction(action); - - menu->addSeparator(); - action = new QAction(il.load("exit"), - tr("&Quit"), this); - action->setShortcut(tr("Ctrl+Q")); - action->setStatusTip(tr("Exit Sonic Visualiser")); - connect(action, SIGNAL(triggered()), this, SLOT(close())); - m_keyReference->registerShortcut(action); - menu->addAction(action); -} - -void -MainWindow::setupEditMenu() -{ - if (m_mainMenusCreated) return; - - QMenu *menu = menuBar()->addMenu(tr("&Edit")); - menu->setTearOffEnabled(true); - CommandHistory::getInstance()->registerMenu(menu); - - m_keyReference->setCategory(tr("Editing")); - - menu->addSeparator(); - - IconLoader il; - - QAction *action = new QAction(il.load("editcut"), - tr("Cu&t"), this); - action->setShortcut(tr("Ctrl+X")); - action->setStatusTip(tr("Cut the selection from the current layer to the clipboard")); - connect(action, SIGNAL(triggered()), this, SLOT(cut())); - connect(this, SIGNAL(canEditSelection(bool)), action, SLOT(setEnabled(bool))); - m_keyReference->registerShortcut(action); - menu->addAction(action); - m_rightButtonMenu->addAction(action); - - action = new QAction(il.load("editcopy"), - tr("&Copy"), this); - action->setShortcut(tr("Ctrl+C")); - action->setStatusTip(tr("Copy the selection from the current layer to the clipboard")); - connect(action, SIGNAL(triggered()), this, SLOT(copy())); - connect(this, SIGNAL(canEditSelection(bool)), action, SLOT(setEnabled(bool))); - m_keyReference->registerShortcut(action); - menu->addAction(action); - m_rightButtonMenu->addAction(action); - - action = new QAction(il.load("editpaste"), - tr("&Paste"), this); - action->setShortcut(tr("Ctrl+V")); - action->setStatusTip(tr("Paste from the clipboard to the current layer")); - connect(action, SIGNAL(triggered()), this, SLOT(paste())); - connect(this, SIGNAL(canPaste(bool)), action, SLOT(setEnabled(bool))); - m_keyReference... [truncated message content] |