fixed modified project indicator and scrolling
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@619 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
59
ChangeLog
59
ChangeLog
@@ -1,3 +1,62 @@
|
||||
2007-12-07 Javier Serrano Polo <jasp00/at/terra/dot/es>
|
||||
|
||||
* include/main_window.h:
|
||||
* include/song_editor.h:
|
||||
* src/core/file_browser.cpp:
|
||||
* src/core/main_window.cpp:
|
||||
* src/core/song_editor.cpp:
|
||||
use custom modified project indicator, fixed
|
||||
|
||||
* include/bb_editor.h:
|
||||
* include/song_editor.h:
|
||||
* include/track.h:
|
||||
* include/track_container.h:
|
||||
* src/core/bb_editor.cpp:
|
||||
* src/core/song_editor.cpp:
|
||||
* src/core/track.cpp:
|
||||
* src/core/track_container.cpp:
|
||||
* src/tracks/pattern.cpp:
|
||||
* src/tracks/sample_track.cpp:
|
||||
added layouts, fixes scrolling
|
||||
|
||||
* include/track.h:
|
||||
* include/track_container.h:
|
||||
* src/core/bb_editor.cpp:
|
||||
* src/core/song_editor.cpp:
|
||||
* src/core/track.cpp:
|
||||
* src/core/track_container.cpp:
|
||||
* src/tracks/bb_track.cpp:
|
||||
associate track containers with tracks directly
|
||||
|
||||
* src/core/track.cpp:
|
||||
* src/core/track_container.cpp:
|
||||
* src/tracks/bb_track.cpp:
|
||||
* src/tracks/instrument_track.cpp:
|
||||
* src/tracks/sample_track.cpp:
|
||||
simplified updateAfterTrackAdd() calls
|
||||
|
||||
* data/themes/default/style.css:
|
||||
* src/core/track.cpp:
|
||||
use style sheet painting
|
||||
|
||||
* include/track.h:
|
||||
* src/core/track.cpp:
|
||||
removed discouraged repaint()
|
||||
|
||||
* include/bb_editor.h:
|
||||
* include/song_editor.h:
|
||||
* src/core/bb_editor.cpp:
|
||||
* src/core/song_editor.cpp:
|
||||
* src/widgets/project_notes.cpp:
|
||||
use default close event handler
|
||||
|
||||
* src/core/bb_editor.cpp:
|
||||
* src/core/track.cpp:
|
||||
removed trivial asserts
|
||||
|
||||
* data/locale/ca.ts:
|
||||
updated translation
|
||||
|
||||
2007-11-27 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
|
||||
|
||||
* include/plugin.h:
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
AC_INIT(lmms, 0.4.0-svn20071127, lmms-devel/at/lists/dot/sf/dot/net)
|
||||
AM_INIT_AUTOMAKE(lmms, 0.4.0-svn20071127)
|
||||
AC_INIT(lmms, 0.4.0-svn20071207, lmms-devel/at/lists/dot/sf/dot/net)
|
||||
AM_INIT_AUTOMAKE(lmms, 0.4.0-svn20071207)
|
||||
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1037,32 +1037,32 @@ http://lmms.sourceforge.net</translation>
|
||||
<context>
|
||||
<name>bbEditor</name>
|
||||
<message>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="82"/>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="78"/>
|
||||
<source>Play/pause current beat/bassline (Space)</source>
|
||||
<translation>Reprodueix/pausa el ritme base actual (Espai)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="86"/>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="82"/>
|
||||
<source>Stop playing of current beat/bassline (Space)</source>
|
||||
<translation>Atura el ritme base actual (Espai)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="99"/>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="95"/>
|
||||
<source>Click here, if you want to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached.</source>
|
||||
<translation>Pica aquí si vols reproduir el ritme base actual. El ritme base és repetit automàticament quan arriba al final.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="102"/>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="98"/>
|
||||
<source>Click here, if you want to stop playing of current beat/bassline.</source>
|
||||
<translation>Pica aquí si vols aturar el ritme base actual.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="72"/>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="71"/>
|
||||
<source>Beat+Baseline Editor</source>
|
||||
<translation>Editor de Ritme Base</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="91"/>
|
||||
<location filename="../../src/core/bb_editor.cpp" line="87"/>
|
||||
<source>Add beat/bassline</source>
|
||||
<translation>Afegeix ritme de base</translation>
|
||||
</message>
|
||||
@@ -2058,17 +2058,17 @@ Assegura't que tens permís d'escriptura per al fitxer/dispositiu sele
|
||||
<translation>Sortida MIDI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/tracks/instrument_track.cpp" line="347"/>
|
||||
<location filename="../../src/tracks/instrument_track.cpp" line="345"/>
|
||||
<source>Save channel-settings in file</source>
|
||||
<translation>Desa configuració de canal en fitxer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/tracks/instrument_track.cpp" line="348"/>
|
||||
<location filename="../../src/tracks/instrument_track.cpp" line="346"/>
|
||||
<source>Channel-Settings-File (*.cs.xml)</source>
|
||||
<translation>Fitxer de Configuració de Canal (*.cs.xml)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/tracks/instrument_track.cpp" line="1163"/>
|
||||
<location filename="../../src/tracks/instrument_track.cpp" line="1161"/>
|
||||
<source>PLUGIN</source>
|
||||
<translation>CONN</translation>
|
||||
</message>
|
||||
@@ -2634,262 +2634,272 @@ Les tecles F1-F10 apaguen els 10 primers instruments a l'Editor de Ritme Ba
|
||||
<translation>Preparant finestra principal i espai de treball...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="198"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="199"/>
|
||||
<source>Creating new song...</source>
|
||||
<translation>Creant nova cançó...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="204"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="205"/>
|
||||
<source>Creating GUI...</source>
|
||||
<translation>Creant interfície...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="359"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="360"/>
|
||||
<source>&New</source>
|
||||
<translation>&Nou</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="364"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="365"/>
|
||||
<source>&Open...</source>
|
||||
<translation>&Obre...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="377"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="378"/>
|
||||
<source>&Save</source>
|
||||
<translation>&Desa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="382"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="383"/>
|
||||
<source>Save &As...</source>
|
||||
<translation>&Anomena i desa...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="396"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="397"/>
|
||||
<source>&Quit</source>
|
||||
<translation>&Surt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="457"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="458"/>
|
||||
<source>Help</source>
|
||||
<translation>Ajuda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="465"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="466"/>
|
||||
<source>About</source>
|
||||
<translation>Quant a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="446"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="447"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Ajuda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="461"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="462"/>
|
||||
<source>What's this?</source>
|
||||
<translation>Què és això?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="125"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="126"/>
|
||||
<source>My samples</source>
|
||||
<translation>Les meves mostres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="131"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="132"/>
|
||||
<source>My presets</source>
|
||||
<translation>Les meves plantilles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="119"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="120"/>
|
||||
<source>My projects</source>
|
||||
<translation>Els meus projectes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="192"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="193"/>
|
||||
<source>Loading song...</source>
|
||||
<translation>Carregant cançó...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="414"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="415"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Configuració</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="419"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="420"/>
|
||||
<source>Show setup wizard</source>
|
||||
<translation>Mostra l'assistent de configuració</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="342"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="343"/>
|
||||
<source>By pressing this button, you can show or hide the project notes window. In this window you can put down your project notes.</source>
|
||||
<translation>Pitjant aquest botó, pots mostrar o amagar la finestra de notes del projecte. En aquesta finestra pots escriure les teves notes del projecte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="526"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="531"/>
|
||||
<source>LMMS %1</source>
|
||||
<translation>LMMS %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="214"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="215"/>
|
||||
<source>Create new project</source>
|
||||
<translation>Crea nou projecte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="228"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="229"/>
|
||||
<source>Open existing project</source>
|
||||
<translation>Obre projecte existent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="235"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="236"/>
|
||||
<source>Save current project</source>
|
||||
<translation>Desa projecte actual</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="242"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="243"/>
|
||||
<source>Export current project</source>
|
||||
<translation>Exporta projecte actual</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="284"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="285"/>
|
||||
<source>By pressing this button, you can show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melody-patterns in an easy way.</source>
|
||||
<translation>Pitjant aquest botó pots mostrar o amagar el Rotlle de Piano. Amb l'ajuda del Rotlle de Piano pots editar patrons de melodia fàcilment.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="357"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="358"/>
|
||||
<source>&Project</source>
|
||||
<translation>&Projecte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="618"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="655"/>
|
||||
<source>Open project</source>
|
||||
<translation>Obre projecte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="675"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="712"/>
|
||||
<source>Save project</source>
|
||||
<translation>Desa projecte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="135"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="136"/>
|
||||
<source>My home</source>
|
||||
<translation>El meu cau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="139"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="140"/>
|
||||
<source>Root directory</source>
|
||||
<translation>Directori arrel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="260"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="261"/>
|
||||
<source>Show/hide Beat+Baseline Editor</source>
|
||||
<translation>Mostra/amaga Editor de Ritme Base</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="270"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="271"/>
|
||||
<source>By pressing this button, you can show or hide the Beat+Baseline Editor. The Beat+Baseline Editor is needed for creating beats, opening, adding and removing channels, cutting, copying and pasting beat- and baseline-patterns and other things like that.</source>
|
||||
<translation>Pitjant aquest botó pots mostrar o amagar l'Editor de Ritme Base. L'Editor de Ritme Base és necessari per a crear ritmes; obrir, afegir i eliminar canals; tallar, copiar i enganxar patrons de ritme; i altres funcions similars.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="276"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="277"/>
|
||||
<source>Show/hide Piano-Roll</source>
|
||||
<translation>Mostra/amaga Rotlle de Piano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="288"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="289"/>
|
||||
<source>Show/hide Song-Editor</source>
|
||||
<translation>Mostra/amaga Editor de Cançó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="298"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="299"/>
|
||||
<source>By pressing this button, you can show or hide the Song-Editor. With the help of the Song-Editor you can edit song-playlist and specify when which track should be played. You can also insert and move samples (e.g. rap-samples) directly into the playlist.</source>
|
||||
<translation>Pitjant aquest botó pots mostrar o amagar l'Editor de Cançó. Amb l'ajuda de l'Editor de Cançó pots editar la llista de reproducció de la cançó i especificar quan ha de tocar-se cada pista. També pots inserir i moure mostres (p.e. mostres de rap) directament a la llista de reproducció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="335"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="336"/>
|
||||
<source>Show/hide project notes</source>
|
||||
<translation>Mostra/amaga les notes del projecte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="402"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="403"/>
|
||||
<source>&Edit</source>
|
||||
<translation>&Edita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="404"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="405"/>
|
||||
<source>Undo</source>
|
||||
<translation>Desfés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="408"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="409"/>
|
||||
<source>Redo</source>
|
||||
<translation>Refés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="416"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="417"/>
|
||||
<source>Show settings dialog</source>
|
||||
<translation>Mostra el diàleg de configuració</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="723"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="760"/>
|
||||
<source>Help not available</source>
|
||||
<translation>Ajuda no disponible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="304"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="305"/>
|
||||
<source>Show/hide Automation Editor</source>
|
||||
<translation>Mostra/amaga Editor d'Automatització</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="314"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="315"/>
|
||||
<source>By pressing this button, you can show or hide the Automation Editor. With the help of the Automation Editor you can edit dynamic values in an easy way.</source>
|
||||
<translation>Pitjant aquest botó pots mostrar o amagar l'Editor d'Automatització. Amb l'ajuda de l'Editor d'Automatització pots editar valors dinàmics fàcilment.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="438"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="439"/>
|
||||
<source>&Tools</source>
|
||||
<translation>E&ines</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="619"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="656"/>
|
||||
<source>MultiMedia Project (*.mmp *.mmpz *.xml)</source>
|
||||
<translation>Projecte MultiMèdia (*.mmp *.mmpz *.xml)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="677"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="714"/>
|
||||
<source>MultiMedia Project (*.mmp *.mmpz);;MultiMedia Project Template (*.mpt)</source>
|
||||
<translation>Projecte MultiMèdia (*.mmp *.mmpz);;Plantilla de Projecte MultiMèdia (*.mpt)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="451"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="452"/>
|
||||
<source>Online help</source>
|
||||
<translation>Ajuda en línia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="387"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="388"/>
|
||||
<source>Import...</source>
|
||||
<translation>Importa...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="391"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="392"/>
|
||||
<source>E&xport...</source>
|
||||
<translation>E&xporta...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="728"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="765"/>
|
||||
<source>Currently there's no help available in LMMS.
|
||||
Please visit http://lmms.sf.net/wiki for documentation on LMMS.</source>
|
||||
<translation>Actualment no hi ha ajuda disponible a LMMS.
|
||||
Per favor, visita http://lmms.sf.net/wiki per a documentació sobre LMMS.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="370"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="371"/>
|
||||
<source>Recently opened projects</source>
|
||||
<translation>Projectes oberts recentment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="524"/>
|
||||
<location filename="../../src/core/main_window.cpp" line="525"/>
|
||||
<source>Untitled</source>
|
||||
<translation>Sense títol</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="545"/>
|
||||
<source>Project not saved</source>
|
||||
<translation>Projecte no desat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/main_window.cpp" line="548"/>
|
||||
<source>The current project was modified since last saving. Do you want to save it now?</source>
|
||||
<translation>El projecte actual ha estat modificat des del darrer desament. Vols desar-lo ara?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>mallets</name>
|
||||
@@ -3474,12 +3484,12 @@ usa la roda del ratolí per a ajustar el volum d'un pas</translation>
|
||||
<context>
|
||||
<name>patternFreezeStatusDialog</name>
|
||||
<message>
|
||||
<location filename="../../src/tracks/pattern.cpp" line="1049"/>
|
||||
<location filename="../../src/tracks/pattern.cpp" line="1053"/>
|
||||
<source>Freezing pattern...</source>
|
||||
<translation>Congelant patró...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/tracks/pattern.cpp" line="1058"/>
|
||||
<location filename="../../src/tracks/pattern.cpp" line="1062"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Cancel·la</translation>
|
||||
</message>
|
||||
@@ -3937,147 +3947,147 @@ usa la roda del ratolí per a ajustar el volum d'un pas</translation>
|
||||
<context>
|
||||
<name>projectNotes</name>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="101"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="100"/>
|
||||
<source>Put down your project notes here.</source>
|
||||
<translation>Escriu aquí les teves notes del projecte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="72"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="71"/>
|
||||
<source>Project notes</source>
|
||||
<translation>Notes del projecte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="122"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="121"/>
|
||||
<source>Edit Actions</source>
|
||||
<translation>Accions d'Editar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="125"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="124"/>
|
||||
<source>&Undo</source>
|
||||
<translation>&Desfés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="127"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="126"/>
|
||||
<source>Ctrl+Z</source>
|
||||
<translation>Ctrl+Z</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="131"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="130"/>
|
||||
<source>&Redo</source>
|
||||
<translation>&Refés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="133"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="132"/>
|
||||
<source>Ctrl+Y</source>
|
||||
<translation>Ctrl+Y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="137"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="136"/>
|
||||
<source>&Copy</source>
|
||||
<translation>&Copia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="139"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="138"/>
|
||||
<source>Ctrl+C</source>
|
||||
<translation>Ctrl+C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="143"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="142"/>
|
||||
<source>Cu&t</source>
|
||||
<translation>&Talla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="145"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="144"/>
|
||||
<source>Ctrl+X</source>
|
||||
<translation>Ctrl+X</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="149"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="148"/>
|
||||
<source>&Paste</source>
|
||||
<translation>&Enganxa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="151"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="150"/>
|
||||
<source>Ctrl+V</source>
|
||||
<translation>Ctrl+V</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="156"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="155"/>
|
||||
<source>Format Actions</source>
|
||||
<translation>Accions de Format</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="180"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="179"/>
|
||||
<source>&Bold</source>
|
||||
<translation>&Negreta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="181"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="180"/>
|
||||
<source>Ctrl+B</source>
|
||||
<translation>Ctrl+B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="187"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="186"/>
|
||||
<source>&Italic</source>
|
||||
<translation>Curs&iva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="188"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="187"/>
|
||||
<source>Ctrl+I</source>
|
||||
<translation>Ctrl+I</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="195"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="194"/>
|
||||
<source>&Underline</source>
|
||||
<translation>&Subratllat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="196"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="195"/>
|
||||
<source>Ctrl+U</source>
|
||||
<translation>Ctrl+U</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="207"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="206"/>
|
||||
<source>&Left</source>
|
||||
<translation>&Esquerra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="208"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="207"/>
|
||||
<source>Ctrl+L</source>
|
||||
<translation>Ctrl+L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="214"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="213"/>
|
||||
<source>C&enter</source>
|
||||
<translation>Cen&tre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="216"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="215"/>
|
||||
<source>Ctrl+E</source>
|
||||
<translation>Ctrl+E</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="221"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="220"/>
|
||||
<source>&Right</source>
|
||||
<translation>&Dreta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="223"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="222"/>
|
||||
<source>Ctrl+R</source>
|
||||
<translation>Ctrl+R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="229"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="228"/>
|
||||
<source>&Justify</source>
|
||||
<translation>&Justifica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="230"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="229"/>
|
||||
<source>Ctrl+J</source>
|
||||
<translation>Ctrl+J</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="237"/>
|
||||
<location filename="../../src/widgets/project_notes.cpp" line="236"/>
|
||||
<source>&Color...</source>
|
||||
<translation>&Color...</translation>
|
||||
</message>
|
||||
@@ -4603,12 +4613,12 @@ Fixa't que en alguns casos la paral·lelització no funcionarà amb memòri
|
||||
<context>
|
||||
<name>songEditor</name>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="325"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="318"/>
|
||||
<source>Click here, if you want to stop playing of your song. The song-position-marker will be set to the start of your song.</source>
|
||||
<translation>Pica aquí si vols aturar la reproducció de la cançó. El marcador de posició de cançó serà col·locat a l'inici de la cançó.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1601"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1524"/>
|
||||
<source>untitled</source>
|
||||
<translation>sense títol</translation>
|
||||
</message>
|
||||
@@ -4638,57 +4648,57 @@ Fixa't que en alguns casos la paral·lelització no funcionarà amb memòri
|
||||
<translation>No es pot escriure el fitxer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="99"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="97"/>
|
||||
<source>Song-Editor</source>
|
||||
<translation>Editor de Cançó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1630"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1553"/>
|
||||
<source>The file "%1" already exists. Do you want to overwrite it?</source>
|
||||
<translation>El fitxer "%1" ja existeix. Vols sobreescriure'l?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="320"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="313"/>
|
||||
<source>Click here, if you want to play your whole song. Playing will be started at the song-position-marker (green). You can also move it while playing.</source>
|
||||
<translation>Pica aquí si vols reproduir la cançó sencera. La reproducció començarà al marcador de posició de cançó (verd). També pots moure'l mentre es reprodueix.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="276"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="269"/>
|
||||
<source>Play song (Space)</source>
|
||||
<translation>Reprodueix cançó (Espai)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="280"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="273"/>
|
||||
<source>Stop song (Space)</source>
|
||||
<translation>Atura cançó (Espai)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="141"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="136"/>
|
||||
<source>The tempo of a song is specified in beats per minute (BPM). If you want to change the tempo of your song, change this value. Every tact has four beats, so the tempo in BPM specifies, how many tacts / 4 should be played within a minute (or how many tacts should be played within four minutes).</source>
|
||||
<translation>El tempo d'una cançó s'especifica en batecs per minut (BPM). Si vols canviar el tempo de la cançó, canvia aquest valor. Cada compàs té quatre batecs, llavors el tempo en BPM especifica quants compassos / 4 s'han de tocar en un minut (o quants compassos s'han de tocar en quatre minuts).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="220"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="215"/>
|
||||
<source>master pitch</source>
|
||||
<translation>to mestre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="133"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="128"/>
|
||||
<source>tempo of song</source>
|
||||
<translation>tempo de cançó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="285"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="278"/>
|
||||
<source>Add beat/bassline</source>
|
||||
<translation>Afegeix ritme base</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="291"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="284"/>
|
||||
<source>Add sample-track</source>
|
||||
<translation>Afegeix pista de mostra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1539"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1462"/>
|
||||
<source>Project NOT saved.</source>
|
||||
<translation>Projecte NO desat.</translation>
|
||||
</message>
|
||||
@@ -4700,27 +4710,17 @@ Do you want to overwrite it?</source>
|
||||
Vols sobreescriure'l?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1617"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1540"/>
|
||||
<source>Select file for project-export...</source>
|
||||
<translation>Selecciona fitxer per a exportar projecte...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1304"/>
|
||||
<source>Project not saved</source>
|
||||
<translation>Projecte no desat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1307"/>
|
||||
<source>The current project was modified since last saving. Do you want to save it now?</source>
|
||||
<translation>El projecte actual ha estat modificat des del darrer desament. Vols desar-lo ara?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1572"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1495"/>
|
||||
<source>Import file</source>
|
||||
<translation>Importa fitxer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="128"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="123"/>
|
||||
<source>TEMPO/BPM</source>
|
||||
<translation>TEMPO/BPM</translation>
|
||||
</message>
|
||||
@@ -4732,62 +4732,62 @@ Please make sure you have at least read-access to the file and try again.</sourc
|
||||
Per favor, assegura't que tens permís de lectura per al fitxer i torna-ho a provar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="148"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="143"/>
|
||||
<source>High quality mode</source>
|
||||
<translation>Mode alta qualitat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="158"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="153"/>
|
||||
<source>Auto limiter</source>
|
||||
<translation>Autolimitador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="186"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="181"/>
|
||||
<source>master volume</source>
|
||||
<translation>volum mestre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="198"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="193"/>
|
||||
<source>Master volume</source>
|
||||
<translation>Volum mestre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="231"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="226"/>
|
||||
<source>Master pitch</source>
|
||||
<translation>To mestre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="297"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="290"/>
|
||||
<source>Draw mode</source>
|
||||
<translation>Mode dibuixar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="304"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="297"/>
|
||||
<source>Edit mode (select and move)</source>
|
||||
<translation>Mode editar (selecciona i mou)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="604"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="560"/>
|
||||
<source>Value: %1%</source>
|
||||
<translation>Valor: %1%</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="652"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="608"/>
|
||||
<source>Value: %1 semitones</source>
|
||||
<translation>Valor: %1 semitons</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1529"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1452"/>
|
||||
<source>Project saved</source>
|
||||
<translation>Projecte desat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1531"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1454"/>
|
||||
<source>The project %1 is now saved.</source>
|
||||
<translation>El projecte %1 està desat.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1540"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="1463"/>
|
||||
<source>The project %1 was not saved!</source>
|
||||
<translation>El projecte %1 no està desat!</translation>
|
||||
</message>
|
||||
@@ -4799,7 +4799,7 @@ Please make sure you have write-access to the file and try again.</source>
|
||||
Per favor, assegura't que tens permís d'escriptura per a aquest fitxer i torna-ho a provar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/song_editor.cpp" line="126"/>
|
||||
<location filename="../../src/core/song_editor.cpp" line="121"/>
|
||||
<source>Tempo</source>
|
||||
<translation>Tempo</translation>
|
||||
</message>
|
||||
@@ -5022,7 +5022,7 @@ Per favor, assegura't que tens permís d'escriptura per a aquest fitxe
|
||||
<context>
|
||||
<name>trackContainer</name>
|
||||
<message>
|
||||
<location filename="../../src/core/track_container.cpp" line="113"/>
|
||||
<location filename="../../src/core/track_container.cpp" line="122"/>
|
||||
<source>Loading project...</source>
|
||||
<translation>Carregant projecte...</translation>
|
||||
</message>
|
||||
@@ -5074,57 +5074,57 @@ Per favor, assegura't que tens permís de lectura per al fitxer i el direct
|
||||
<context>
|
||||
<name>trackContentObject</name>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="438"/>
|
||||
<location filename="../../src/core/track.cpp" line="448"/>
|
||||
<source>Cut</source>
|
||||
<translation>Talla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="441"/>
|
||||
<location filename="../../src/core/track.cpp" line="451"/>
|
||||
<source>Copy</source>
|
||||
<translation>Copia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="443"/>
|
||||
<location filename="../../src/core/track.cpp" line="453"/>
|
||||
<source>Paste</source>
|
||||
<translation>Enganxa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="261"/>
|
||||
<location filename="../../src/core/track.cpp" line="271"/>
|
||||
<source>Current position</source>
|
||||
<translation>Posició actual</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="276"/>
|
||||
<location filename="../../src/core/track.cpp" line="286"/>
|
||||
<source>Hint</source>
|
||||
<translation>Consell</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="265"/>
|
||||
<location filename="../../src/core/track.cpp" line="275"/>
|
||||
<source>Press <Ctrl> for free positioning.</source>
|
||||
<translation>Pitja <Ctrl> per a col·locar lliurement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="274"/>
|
||||
<location filename="../../src/core/track.cpp" line="284"/>
|
||||
<source>Current length</source>
|
||||
<translation>Longitud actual</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="278"/>
|
||||
<location filename="../../src/core/track.cpp" line="288"/>
|
||||
<source>Press <Ctrl> for free resizing.</source>
|
||||
<translation>Pitja <Ctrl> per a redimensionar lliurement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="373"/>
|
||||
<location filename="../../src/core/track.cpp" line="383"/>
|
||||
<source>%1:%2 (%3:%4 to %5:%6)</source>
|
||||
<translation>%1:%2 (%3:%4 a %5:%6)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="434"/>
|
||||
<location filename="../../src/core/track.cpp" line="444"/>
|
||||
<source>Delete (middle mousebutton)</source>
|
||||
<translation>Esborra (botó del mig del ratolí)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="446"/>
|
||||
<location filename="../../src/core/track.cpp" line="456"/>
|
||||
<source>Mute/unmute (<Ctrl> + middle click)</source>
|
||||
<translation>Apaga/encén (<Ctrl> + clic del mig)</translation>
|
||||
</message>
|
||||
@@ -5132,27 +5132,27 @@ Per favor, assegura't que tens permís de lectura per al fitxer i el direct
|
||||
<context>
|
||||
<name>trackOperationsWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="945"/>
|
||||
<location filename="../../src/core/track.cpp" line="952"/>
|
||||
<source>Press <Ctrl> while clicking on move-grip to begin a new drag'n'drop-action.</source>
|
||||
<translation>Pitja <Ctrl> quan piquis el control de moviment per a iniciar una nova acció d'arrossegar i amollar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="1155"/>
|
||||
<location filename="../../src/core/track.cpp" line="1162"/>
|
||||
<source>Clone this track</source>
|
||||
<translation>Clona aquesta pista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="1158"/>
|
||||
<location filename="../../src/core/track.cpp" line="1165"/>
|
||||
<source>Remove this track</source>
|
||||
<translation>Elimina aquesta pista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="958"/>
|
||||
<location filename="../../src/core/track.cpp" line="965"/>
|
||||
<source>Actions for this track</source>
|
||||
<translation>Accions per a aquesta pista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="980"/>
|
||||
<location filename="../../src/core/track.cpp" line="987"/>
|
||||
<source>With this switch you can either mute this track or mute all other tracks.
|
||||
By clicking left, this track is muted. This is useful, if you only want to listen to the other tracks without changing this track and loosing information.
|
||||
When you click right on this switch, all other tracks will be muted. This is useful, if you only want to listen to this track.</source>
|
||||
@@ -5161,24 +5161,24 @@ Amb un clic esquerre, aquesta pista s'apaga. Això és útil si només vols
|
||||
Amb un clic dret a l'interruptor, totes les altres pistes s'apagaran. Això és útil si només vols escoltar aquesta pista.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="982"/>
|
||||
<location filename="../../src/core/track.cpp" line="989"/>
|
||||
<source>left click = mute this track
|
||||
right click = mute all other tracks (solo)</source>
|
||||
<translation>clic esquerre = apaga aquesta pista
|
||||
clic dret = apaga totes les altres pistes (solo)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="961"/>
|
||||
<location filename="../../src/core/track.cpp" line="968"/>
|
||||
<source>Mute</source>
|
||||
<translation>Apaga</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="1142"/>
|
||||
<location filename="../../src/core/track.cpp" line="1149"/>
|
||||
<source>Enable automation</source>
|
||||
<translation>Habilita automatització</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/core/track.cpp" line="1149"/>
|
||||
<location filename="../../src/core/track.cpp" line="1156"/>
|
||||
<source>Disable automation</source>
|
||||
<translation>Inhabilita automatització</translation>
|
||||
</message>
|
||||
|
||||
@@ -25,6 +25,11 @@ trackOperationsWidget#automationEnabled > QPushButton::menu-indicator {
|
||||
image: url(resources:track_op_menu.png);
|
||||
}
|
||||
|
||||
trackWidget {
|
||||
/* border-bottom: 1px solid rgb(0, 0, 0);*/
|
||||
background-color: rgb(0, 0, 0);
|
||||
}
|
||||
|
||||
QWidget#mainToolbar {
|
||||
background-image: url(resources:main_toolbar_bg.png);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,11 @@ public:
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
int currentBB( void ) const;
|
||||
int currentBB( void ) const
|
||||
{
|
||||
return( m_currentBB );
|
||||
}
|
||||
|
||||
tact FASTCALL lengthOfBB( const int _bb );
|
||||
inline tact lengthOfCurrentBB( void )
|
||||
{
|
||||
@@ -80,11 +84,7 @@ public slots:
|
||||
|
||||
|
||||
protected:
|
||||
virtual void closeEvent( QCloseEvent * _ce );
|
||||
virtual void keyPressEvent( QKeyEvent * _ke );
|
||||
virtual void resizeEvent( QResizeEvent * _re );
|
||||
|
||||
virtual QRect scrollAreaRect( void ) const;
|
||||
|
||||
|
||||
private:
|
||||
@@ -95,6 +95,8 @@ private:
|
||||
void FASTCALL createTCOsForBB( const int _bb );
|
||||
|
||||
|
||||
int m_currentBB;
|
||||
|
||||
QWidget * m_toolBar;
|
||||
|
||||
toolButton * m_playButton;
|
||||
|
||||
@@ -58,7 +58,14 @@ public:
|
||||
int addWidgetToToolBar( QWidget * _w, int _row = -1, int _col = -1 );
|
||||
void addSpacingToToolBar( int _size );
|
||||
|
||||
void resetWindowTitle( void );
|
||||
void resetWindowTitle( bool _modified = FALSE );
|
||||
|
||||
|
||||
// every function that replaces current file (e.g. creates new file,
|
||||
// opens another file...) has to call this before and may only process
|
||||
// if this function returns true
|
||||
bool mayChangeProject( void );
|
||||
|
||||
|
||||
void clearKeyModifiers( void );
|
||||
|
||||
@@ -151,6 +158,8 @@ private:
|
||||
QMenu * m_tools_menu;
|
||||
QList<tool *> m_tools;
|
||||
|
||||
bool m_modified;
|
||||
|
||||
|
||||
friend class engine;
|
||||
|
||||
|
||||
@@ -133,12 +133,6 @@ public:
|
||||
virtual automationPattern * tempoAutomationPattern( void );
|
||||
|
||||
|
||||
// every function that replaces current file (e.g. creates new file,
|
||||
// opens another file...) has to call this before and may only process
|
||||
// if this function returns true
|
||||
bool mayChangeProject( void );
|
||||
|
||||
|
||||
// file management
|
||||
void createNewProject( void );
|
||||
void FASTCALL createNewProjectFromTemplate( const QString & _template );
|
||||
@@ -189,14 +183,10 @@ public slots:
|
||||
|
||||
|
||||
protected:
|
||||
virtual void closeEvent( QCloseEvent * _ce );
|
||||
virtual void resizeEvent( QResizeEvent * _re );
|
||||
virtual void keyPressEvent( QKeyEvent * _ke );
|
||||
virtual void wheelEvent( QWheelEvent * _we );
|
||||
virtual void paintEvent( QPaintEvent * _pe );
|
||||
|
||||
virtual QRect scrollAreaRect( void ) const;
|
||||
|
||||
virtual bool allowRubberband( void ) const;
|
||||
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ public:
|
||||
public slots:
|
||||
void insertTact( const midiTime & _pos );
|
||||
void removeTact( const midiTime & _pos );
|
||||
void updateTCOs( void );
|
||||
void update( void );
|
||||
|
||||
|
||||
protected:
|
||||
@@ -338,7 +338,6 @@ public:
|
||||
return( m_action == MOVE_TRACK );
|
||||
}
|
||||
|
||||
virtual void repaint( void );
|
||||
virtual void update( void );
|
||||
|
||||
|
||||
@@ -511,8 +510,6 @@ private:
|
||||
} ;
|
||||
|
||||
|
||||
typedef QVector<track *> trackVector;
|
||||
typedef QVector<const track *> constTrackVector;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -36,9 +36,7 @@
|
||||
#include "journalling_object.h"
|
||||
|
||||
|
||||
|
||||
const Uint16 DEFAULT_PIXELS_PER_TACT = 16;
|
||||
const Uint16 DEFAULT_SCROLLBAR_SIZE = 16;
|
||||
class QVBoxLayout;
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +47,7 @@ public:
|
||||
trackContainer( void );
|
||||
virtual ~trackContainer();
|
||||
|
||||
inline QWidget * containerWidget( void )
|
||||
QWidget * contentWidget( void )
|
||||
{
|
||||
return( m_scrollArea );
|
||||
}
|
||||
@@ -93,7 +91,7 @@ public:
|
||||
void FASTCALL moveTrackUp( track * _track );
|
||||
void FASTCALL moveTrackDown( track * _track );
|
||||
|
||||
void FASTCALL realignTracks( bool _complete_update = FALSE );
|
||||
void FASTCALL realignTracks( void );
|
||||
void clearAllTracks( void );
|
||||
|
||||
const trackWidget * trackWidgetAt( const int _y ) const;
|
||||
@@ -116,7 +114,7 @@ public:
|
||||
return( foo );*/
|
||||
}
|
||||
|
||||
trackVector tracks( void );
|
||||
QList<track *> tracks( void );
|
||||
|
||||
static const QString classNodeName( void )
|
||||
{
|
||||
@@ -124,7 +122,13 @@ public:
|
||||
}
|
||||
|
||||
|
||||
signals:
|
||||
void positionChanged( const midiTime & _pos );
|
||||
|
||||
|
||||
protected:
|
||||
static const Uint16 DEFAULT_PIXELS_PER_TACT = 16;
|
||||
|
||||
virtual void undoStep( journalEntry & _je );
|
||||
virtual void redoStep( journalEntry & _je );
|
||||
|
||||
@@ -137,18 +141,10 @@ protected:
|
||||
|
||||
virtual void resizeEvent( QResizeEvent * );
|
||||
|
||||
constTrackVector tracks( void ) const;
|
||||
|
||||
virtual QRect scrollAreaRect( void ) const
|
||||
{
|
||||
return( rect() );
|
||||
}
|
||||
const QList<track *> tracks( void ) const;
|
||||
|
||||
midiTime m_currentPosition;
|
||||
|
||||
protected slots:
|
||||
void updateScrollArea( void );
|
||||
|
||||
|
||||
private:
|
||||
enum actions
|
||||
@@ -172,19 +168,14 @@ private:
|
||||
|
||||
|
||||
scrollArea * m_scrollArea;
|
||||
typedef QVector<trackWidget *> trackWidgetVector;
|
||||
QVBoxLayout * m_scrollLayout;
|
||||
|
||||
trackWidgetVector m_trackWidgets;
|
||||
QList<track *> m_tracks;
|
||||
float m_ppt;
|
||||
|
||||
rubberBand * m_rubberBand;
|
||||
QPoint m_origin;
|
||||
|
||||
|
||||
signals:
|
||||
void positionChanged( const midiTime & _pos );
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
@@ -25,37 +25,35 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <QtGui/QPainter>
|
||||
#include "bb_editor.h"
|
||||
|
||||
|
||||
#include <QtGui/QKeyEvent>
|
||||
#include <QtGui/QCloseEvent>
|
||||
#include <QtGui/QLayout>
|
||||
#include <QtGui/QMdiArea>
|
||||
#include <QtGui/QPainter>
|
||||
|
||||
|
||||
#include "bb_editor.h"
|
||||
#include "song_editor.h"
|
||||
#include "bb_track.h"
|
||||
#include "combobox.h"
|
||||
#include "embed.h"
|
||||
#include "engine.h"
|
||||
#include "tool_button.h"
|
||||
#include "track_container.h"
|
||||
#include "bb_track.h"
|
||||
#include "name_label.h"
|
||||
#include "templates.h"
|
||||
#include "debug.h"
|
||||
#include "tooltip.h"
|
||||
#include "combobox.h"
|
||||
#include "main_window.h"
|
||||
|
||||
|
||||
const int BBE_PPT = 192;
|
||||
#include "name_label.h"
|
||||
#include "song_editor.h"
|
||||
#include "templates.h"
|
||||
#include "tool_button.h"
|
||||
#include "tooltip.h"
|
||||
#include "track_container.h"
|
||||
|
||||
|
||||
|
||||
|
||||
bbEditor::bbEditor( void )
|
||||
bbEditor::bbEditor( void ) :
|
||||
m_currentBB( -1 )
|
||||
{
|
||||
// create toolbar
|
||||
m_toolBar = new QWidget( this );
|
||||
m_toolBar = new QWidget;
|
||||
m_toolBar->setFixedHeight( 32 );
|
||||
m_toolBar->move( 0, 0 );
|
||||
m_toolBar->setAutoFillBackground( TRUE );
|
||||
@@ -63,6 +61,7 @@ bbEditor::bbEditor( void )
|
||||
pal.setBrush( m_toolBar->backgroundRole(),
|
||||
embed::getIconPixmap( "toolbar_bg" ) );
|
||||
m_toolBar->setPalette( pal );
|
||||
static_cast<QVBoxLayout *>( layout() )->insertWidget( 0, m_toolBar );
|
||||
|
||||
QHBoxLayout * tb_layout = new QHBoxLayout( m_toolBar );
|
||||
tb_layout->setMargin( 0 );
|
||||
@@ -70,12 +69,9 @@ bbEditor::bbEditor( void )
|
||||
|
||||
setWindowIcon( embed::getIconPixmap( "bb_track" ) );
|
||||
setWindowTitle( tr( "Beat+Baseline Editor" ) );
|
||||
setMinimumWidth( TRACK_OP_WIDTH + DEFAULT_SETTINGS_WIDGET_WIDTH +
|
||||
BBE_PPT + 2 * TCO_BORDER_WIDTH +
|
||||
DEFAULT_SCROLLBAR_SIZE );
|
||||
|
||||
containerWidget()->move( 0, 32 );
|
||||
setPixelsPerTact( BBE_PPT );
|
||||
// TODO: Use style sheet
|
||||
setMinimumWidth( TRACK_OP_WIDTH + DEFAULT_SETTINGS_WIDGET_WIDTH
|
||||
+ 2 * TCO_BORDER_WIDTH + 192 );
|
||||
|
||||
|
||||
m_playButton = new toolButton( embed::getIconPixmap( "play" ),
|
||||
@@ -123,6 +119,9 @@ bbEditor::bbEditor( void )
|
||||
if( engine::getMainWindow()->workspace() != NULL )
|
||||
{
|
||||
engine::getMainWindow()->workspace()->addSubWindow( this );
|
||||
parentWidget()->setAttribute( Qt::WA_DeleteOnClose, FALSE );
|
||||
parentWidget()->layout()->setSizeConstraint(
|
||||
QLayout::SetMinimumSize );
|
||||
}
|
||||
|
||||
QWidget * w = ( parentWidget() != NULL ) ? parentWidget() : this;
|
||||
@@ -150,23 +149,17 @@ bbEditor::~bbEditor()
|
||||
|
||||
|
||||
|
||||
int bbEditor::currentBB( void ) const
|
||||
{
|
||||
return( static_cast<int>( currentPosition().getTact() ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void bbEditor::setCurrentBB( int _bb )
|
||||
{
|
||||
m_currentBB = _bb;
|
||||
|
||||
if( m_bbComboBox->value() != _bb )
|
||||
{
|
||||
m_bbComboBox->setValue( _bb );
|
||||
}
|
||||
|
||||
// first make sure, all channels have a TCO at current BB
|
||||
createTCOsForBB( static_cast<int>( _bb ) );
|
||||
createTCOsForBB( _bb );
|
||||
|
||||
realignTracks();
|
||||
|
||||
@@ -177,8 +170,7 @@ void bbEditor::setCurrentBB( int _bb )
|
||||
bbTrack::findBBTrack( i )->trackLabel()->update();
|
||||
}
|
||||
|
||||
emit positionChanged( m_currentPosition = midiTime(
|
||||
static_cast<int>( _bb ), 0 ) );
|
||||
emit positionChanged( NULL );
|
||||
}
|
||||
|
||||
|
||||
@@ -188,13 +180,10 @@ tact bbEditor::lengthOfBB( int _bb )
|
||||
{
|
||||
midiTime max_length;
|
||||
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
trackContentObject * tco = ( *it )->getTCO( _bb );
|
||||
#ifdef LMMS_DEBUG
|
||||
assert( tco != NULL );
|
||||
#endif
|
||||
trackContentObject * tco = tl[i]->getTCO( _bb );
|
||||
max_length = tMax( max_length, tco->length() );
|
||||
}
|
||||
if( max_length.getTact64th() == 0 )
|
||||
@@ -220,11 +209,10 @@ bool FASTCALL bbEditor::play( midiTime _start, fpp_t _frames,
|
||||
|
||||
_start = ( _start.getTact() % lengthOfBB( _tco_num ) ) * 64 +
|
||||
_start.getTact64th();
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
if( ( *it )->play( _start, _frames, _offset,
|
||||
_tco_num ) == TRUE )
|
||||
if( tl[i]->play( _start, _frames, _offset, _tco_num ) == TRUE )
|
||||
{
|
||||
played_a_note = TRUE;
|
||||
}
|
||||
@@ -246,15 +234,15 @@ int bbEditor::numOfBBs( void ) const
|
||||
|
||||
void bbEditor::removeBB( int _bb )
|
||||
{
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
( *it )->removeTCO( _bb );
|
||||
( *it )->getTrackContentWidget()->removeTact( _bb * 64 );
|
||||
tl[i]->removeTCO( _bb );
|
||||
tl[i]->getTrackContentWidget()->removeTact( _bb * 64 );
|
||||
}
|
||||
if( _bb <= currentBB() )
|
||||
if( _bb <= m_currentBB )
|
||||
{
|
||||
setCurrentBB( tMax( (int)currentBB() - 1, 0 ) );
|
||||
setCurrentBB( tMax( m_currentBB - 1, 0 ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,7 +253,7 @@ void bbEditor::updateBBTrack( trackContentObject * _tco )
|
||||
bbTrack * t = bbTrack::findBBTrack( _tco->startPosition() / 64 );
|
||||
if( t != NULL )
|
||||
{
|
||||
t->getTrackContentWidget()->updateTCOs();
|
||||
t->getTrackContentWidget()->update();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,8 +265,6 @@ void bbEditor::updateComboBox( void )
|
||||
disconnect( m_bbComboBox, SIGNAL( valueChanged( int ) ),
|
||||
this, SLOT( setCurrentBB( int ) ) );
|
||||
|
||||
int current_bb = currentBB();
|
||||
|
||||
m_bbComboBox->clear();
|
||||
|
||||
for( int i = 0; i < numOfBBs(); ++i )
|
||||
@@ -287,7 +273,7 @@ void bbEditor::updateComboBox( void )
|
||||
m_bbComboBox->addItem( bbt->trackLabel()->text(),
|
||||
bbt->trackLabel()->pixmap() );
|
||||
}
|
||||
m_bbComboBox->setValue( current_bb );
|
||||
m_bbComboBox->setValue( m_currentBB );
|
||||
|
||||
connect( m_bbComboBox, SIGNAL( valueChanged( int ) ),
|
||||
this, SLOT( setCurrentBB( int ) ) );
|
||||
@@ -296,24 +282,6 @@ void bbEditor::updateComboBox( void )
|
||||
|
||||
|
||||
|
||||
// close-handler for bb-editor-window because closing of bb-editor isn't allowed
|
||||
// instead of closing it's being hidden
|
||||
void bbEditor::closeEvent( QCloseEvent * _ce )
|
||||
{
|
||||
if( parentWidget() )
|
||||
{
|
||||
parentWidget()->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
hide();
|
||||
}
|
||||
_ce->ignore();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void bbEditor::keyPressEvent( QKeyEvent * _ke )
|
||||
{
|
||||
if ( _ke->key() == Qt::Key_Space )
|
||||
@@ -329,16 +297,16 @@ void bbEditor::keyPressEvent( QKeyEvent * _ke )
|
||||
}
|
||||
else if ( _ke->key() == Qt::Key_Plus )
|
||||
{
|
||||
if( currentBB() + 1 < numOfBBs() )
|
||||
if( m_currentBB + 1 < numOfBBs() )
|
||||
{
|
||||
setCurrentBB( currentBB() + 1 );
|
||||
setCurrentBB( m_currentBB + 1 );
|
||||
}
|
||||
}
|
||||
else if ( _ke->key() == Qt::Key_Minus )
|
||||
{
|
||||
if( currentBB() > 0 )
|
||||
if( m_currentBB > 0 )
|
||||
{
|
||||
setCurrentBB( currentBB() - 1 );
|
||||
setCurrentBB( m_currentBB - 1 );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -352,28 +320,6 @@ void bbEditor::keyPressEvent( QKeyEvent * _ke )
|
||||
|
||||
|
||||
|
||||
void bbEditor::resizeEvent( QResizeEvent * _re )
|
||||
{
|
||||
setPixelsPerTact( width() - ( TRACK_OP_WIDTH +
|
||||
DEFAULT_SETTINGS_WIDGET_WIDTH + 2 *
|
||||
TCO_BORDER_WIDTH +
|
||||
DEFAULT_SCROLLBAR_SIZE ) );
|
||||
trackContainer::resizeEvent( _re );
|
||||
m_toolBar->setFixedWidth( width() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
QRect bbEditor::scrollAreaRect( void ) const
|
||||
{
|
||||
return( QRect( 0, 0, (int) pixelsPerTact(),
|
||||
height() - m_toolBar->height() ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void bbEditor::play( void )
|
||||
{
|
||||
if( engine::getSongEditor()->playing() )
|
||||
@@ -455,14 +401,14 @@ void bbEditor::createTCOsForBB( int _bb )
|
||||
return;
|
||||
}
|
||||
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
while( ( *it )->numOfTCOs() < _bb + 1 )
|
||||
while( tl[i]->numOfTCOs() < _bb + 1 )
|
||||
{
|
||||
midiTime position = midiTime( ( *it )->numOfTCOs(), 0 );
|
||||
trackContentObject * tco = ( *it )->addTCO(
|
||||
( *it )->createTCO( position ) );
|
||||
midiTime position = midiTime( tl[i]->numOfTCOs(), 0 );
|
||||
trackContentObject * tco = tl[i]->addTCO(
|
||||
tl[i]->createTCO( position ) );
|
||||
tco->movePosition( position );
|
||||
tco->changeLength( midiTime( 1, 0 ) );
|
||||
}
|
||||
@@ -474,10 +420,10 @@ void bbEditor::createTCOsForBB( int _bb )
|
||||
|
||||
void bbEditor::swapBB( int _bb1, int _bb2 )
|
||||
{
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
( *it )->swapPositionOfTCOs( _bb1, _bb2 );
|
||||
tl[i]->swapPositionOfTCOs( _bb1, _bb2 );
|
||||
}
|
||||
updateComboBox();
|
||||
}
|
||||
|
||||
@@ -300,7 +300,7 @@ void listView::activateListItem( QTreeWidgetItem * _item, int _column )
|
||||
}
|
||||
else if( f->type() == fileItem::PROJECT_FILE )
|
||||
{
|
||||
if( engine::getSongEditor()->mayChangeProject() )
|
||||
if( engine::getMainWindow()->mayChangeProject() )
|
||||
{
|
||||
engine::getSongEditor()->loadProject( f->fullName() );
|
||||
}
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
#include <QtGui/QCloseEvent>
|
||||
#include <QtGui/QDesktopServices>
|
||||
#include <QtGui/QFileDialog>
|
||||
#include <QtGui/QMdiArea>
|
||||
#include <QtGui/QMdiSubWindow>
|
||||
#include <QtGui/QMenuBar>
|
||||
#include <QtGui/QMessageBox>
|
||||
#include <QtGui/QSplashScreen>
|
||||
#include <QtGui/QSplitter>
|
||||
#include <QtGui/QMdiArea>
|
||||
#include <QtGui/QMdiSubWindow>
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
@@ -76,7 +76,8 @@ mainWindow::mainWindow( void ) :
|
||||
m_workspace( NULL ),
|
||||
m_templatesMenu( NULL ),
|
||||
m_recentlyOpenedProjectsMenu( NULL ),
|
||||
m_tools_menu( NULL )
|
||||
m_tools_menu( NULL ),
|
||||
m_modified( FALSE )
|
||||
{
|
||||
setAttribute( Qt::WA_DeleteOnClose );
|
||||
|
||||
@@ -511,7 +512,7 @@ void mainWindow::addSpacingToToolBar( int _size )
|
||||
|
||||
|
||||
|
||||
void mainWindow::resetWindowTitle( void )
|
||||
void mainWindow::resetWindowTitle( bool _modified )
|
||||
{
|
||||
QString title = "";
|
||||
if( engine::getSongEditor()->projectFileName() != "" )
|
||||
@@ -523,8 +524,45 @@ void mainWindow::resetWindowTitle( void )
|
||||
{
|
||||
title = tr( "Untitled" );
|
||||
}
|
||||
setWindowTitle( title + "[*] - " + tr( "LMMS %1" ).arg( VERSION ) );
|
||||
setWindowModified( FALSE );
|
||||
if( _modified )
|
||||
{
|
||||
title += '*';
|
||||
}
|
||||
setWindowTitle( title + " - " + tr( "LMMS %1" ).arg( VERSION ) );
|
||||
m_modified = _modified;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
bool mainWindow::mayChangeProject( void )
|
||||
{
|
||||
if( !m_modified )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
QMessageBox mb ( tr( "Project not saved" ),
|
||||
tr( "The current project was modified since "
|
||||
"last saving. Do you want to save it "
|
||||
"now?" ),
|
||||
QMessageBox::Question,
|
||||
QMessageBox::Yes,
|
||||
QMessageBox::No,
|
||||
QMessageBox::Cancel,
|
||||
this );
|
||||
int answer = mb.exec();
|
||||
|
||||
if( answer == QMessageBox::Yes )
|
||||
{
|
||||
return( saveProject() );
|
||||
}
|
||||
else if( answer == QMessageBox::No )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
|
||||
@@ -584,7 +622,7 @@ void mainWindow::restoreWidgetState( QWidget * _w, const QDomElement & _de )
|
||||
|
||||
void mainWindow::createNewProject( void )
|
||||
{
|
||||
if( engine::getSongEditor()->mayChangeProject() == TRUE )
|
||||
if( mayChangeProject() )
|
||||
{
|
||||
engine::getSongEditor()->createNewProject();
|
||||
}
|
||||
@@ -595,8 +633,7 @@ void mainWindow::createNewProject( void )
|
||||
|
||||
void mainWindow::createNewProjectFromTemplate( QAction * _idx )
|
||||
{
|
||||
if( m_templatesMenu != NULL &&
|
||||
engine::getSongEditor()->mayChangeProject() == TRUE )
|
||||
if( m_templatesMenu != NULL && mayChangeProject() )
|
||||
{
|
||||
QString dir_base = m_templatesMenu->actions().indexOf( _idx )
|
||||
>= m_custom_templates_count ?
|
||||
@@ -613,7 +650,7 @@ void mainWindow::createNewProjectFromTemplate( QAction * _idx )
|
||||
|
||||
void mainWindow::openProject( void )
|
||||
{
|
||||
if( engine::getSongEditor()->mayChangeProject() == TRUE )
|
||||
if( mayChangeProject() )
|
||||
{
|
||||
QFileDialog ofd( this, tr( "Open project" ), "",
|
||||
tr( "MultiMedia Project (*.mmp *.mmpz *.xml)" ) );
|
||||
@@ -823,7 +860,7 @@ void mainWindow::redo( void )
|
||||
|
||||
void mainWindow::closeEvent( QCloseEvent * _ce )
|
||||
{
|
||||
if( engine::getSongEditor()->mayChangeProject() == TRUE )
|
||||
if( mayChangeProject() )
|
||||
{
|
||||
_ce->accept();
|
||||
}
|
||||
|
||||
@@ -78,8 +78,6 @@
|
||||
#include "tooltip.h"
|
||||
#include "visualization_widget.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -102,14 +100,11 @@ songEditor::songEditor( void ) :
|
||||
setFocusPolicy( Qt::StrongFocus );
|
||||
setFocus();
|
||||
|
||||
QWidget * cw = this;
|
||||
|
||||
|
||||
// create time-line
|
||||
timeLine * tl = new timeLine( TRACK_OP_WIDTH +
|
||||
DEFAULT_SETTINGS_WIDGET_WIDTH, 32,
|
||||
pixelsPerTact(), m_playPos[PLAY_SONG],
|
||||
m_currentPosition, cw );
|
||||
m_currentPosition, this );
|
||||
connect( this, SIGNAL( positionChanged( const midiTime & ) ),
|
||||
m_playPos[PLAY_SONG].m_timeLine,
|
||||
SLOT( updatePosition( const midiTime & ) ) );
|
||||
@@ -253,23 +248,21 @@ songEditor::songEditor( void ) :
|
||||
|
||||
|
||||
// create own toolbar
|
||||
m_toolBar = new QWidget( cw );
|
||||
m_toolBar = new QWidget( this );
|
||||
m_toolBar->setFixedHeight( 32 );
|
||||
m_toolBar->move( 0, 0 );
|
||||
m_toolBar->setAutoFillBackground( TRUE );
|
||||
QPalette pal;
|
||||
pal.setBrush( m_toolBar->backgroundRole(),
|
||||
embed::getIconPixmap( "toolbar_bg" ) );
|
||||
m_toolBar->setPalette( pal );
|
||||
|
||||
static_cast<QVBoxLayout *>( layout() )->insertWidget( 0, m_toolBar );
|
||||
static_cast<QVBoxLayout *>( layout() )->insertWidget( 1, tl );
|
||||
|
||||
QHBoxLayout * tb_layout = new QHBoxLayout( m_toolBar );
|
||||
tb_layout->setMargin( 0 );
|
||||
tb_layout->setSpacing( 0 );
|
||||
|
||||
containerWidget()->setParent( cw );
|
||||
containerWidget()->move( 0, m_toolBar->height() + tl->height() );
|
||||
|
||||
|
||||
|
||||
// fill own tool-bar
|
||||
m_playButton = new toolButton( embed::getIconPixmap( "play" ),
|
||||
@@ -368,11 +361,12 @@ songEditor::songEditor( void ) :
|
||||
tb_layout->addStretch();
|
||||
|
||||
|
||||
m_leftRightScroll = new QScrollBar( Qt::Horizontal, cw );
|
||||
m_leftRightScroll = new QScrollBar( Qt::Horizontal, this );
|
||||
m_leftRightScroll->setMinimum( 0 );
|
||||
m_leftRightScroll->setMaximum( 0 );
|
||||
m_leftRightScroll->setSingleStep( 1 );
|
||||
m_leftRightScroll->setPageStep( 20 );
|
||||
static_cast<QVBoxLayout *>( layout() )->addWidget( m_leftRightScroll );
|
||||
connect( m_leftRightScroll, SIGNAL( valueChanged( int ) ),
|
||||
this, SLOT( scrolled( int ) ) );
|
||||
|
||||
@@ -380,6 +374,7 @@ songEditor::songEditor( void ) :
|
||||
if( engine::getMainWindow()->workspace() != NULL )
|
||||
{
|
||||
engine::getMainWindow()->workspace()->addSubWindow( this );
|
||||
parentWidget()->setAttribute( Qt::WA_DeleteOnClose, FALSE );
|
||||
}
|
||||
|
||||
QWidget * w = ( parentWidget() != NULL ) ? parentWidget() : this;
|
||||
@@ -410,22 +405,6 @@ songEditor::~songEditor()
|
||||
|
||||
|
||||
|
||||
void songEditor::closeEvent( QCloseEvent * _ce )
|
||||
{
|
||||
if( parentWidget() )
|
||||
{
|
||||
parentWidget()->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
hide();
|
||||
}
|
||||
_ce->ignore();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void songEditor::paintEvent( QPaintEvent * _pe )
|
||||
{
|
||||
m_leftRightScroll->setMaximum( lengthInTacts() );
|
||||
@@ -435,29 +414,6 @@ void songEditor::paintEvent( QPaintEvent * _pe )
|
||||
|
||||
|
||||
|
||||
QRect songEditor::scrollAreaRect( void ) const
|
||||
{
|
||||
return( QRect( 0, 0, width(), height() - m_toolBar->height() -
|
||||
m_playPos[PLAY_SONG].m_timeLine->height() -
|
||||
DEFAULT_SCROLLBAR_SIZE ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// responsible for moving scrollbars after resizing
|
||||
void songEditor::resizeEvent( QResizeEvent * _re )
|
||||
{
|
||||
m_leftRightScroll->setGeometry( 0, height() - DEFAULT_SCROLLBAR_SIZE,
|
||||
width(), DEFAULT_SCROLLBAR_SIZE );
|
||||
m_playPos[PLAY_SONG].m_timeLine->setFixedWidth( width() );
|
||||
m_toolBar->setFixedWidth( width() );
|
||||
trackContainer::resizeEvent( _re );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void songEditor::keyPressEvent( QKeyEvent * _ke )
|
||||
{
|
||||
if( /*_ke->modifiers() & Qt::ShiftModifier*/
|
||||
@@ -548,7 +504,7 @@ void songEditor::wheelEvent( QWheelEvent * _we )
|
||||
m_playPos[PLAY_SONG].m_timeLine->setPixelsPerTact(
|
||||
pixelsPerTact() );
|
||||
// and make sure, all TCO's are resized and relocated
|
||||
realignTracks( TRUE );
|
||||
realignTracks();
|
||||
}
|
||||
else if( engine::getMainWindow()->isShiftPressed() == TRUE )
|
||||
{
|
||||
@@ -693,7 +649,7 @@ void songEditor::zoomingChanged( const QString & _zfac )
|
||||
setPixelsPerTact( _zfac.left( _zfac.length() - 1 ).toInt() *
|
||||
DEFAULT_PIXELS_PER_TACT / 100 );
|
||||
m_playPos[PLAY_SONG].m_timeLine->setPixelsPerTact( pixelsPerTact() );
|
||||
realignTracks( TRUE );
|
||||
realignTracks();
|
||||
}
|
||||
|
||||
|
||||
@@ -870,13 +826,13 @@ void songEditor::processNextBuffer( void )
|
||||
return;
|
||||
}
|
||||
|
||||
trackVector tv;
|
||||
QList<track *> trackList;
|
||||
Sint16 tco_num = -1;
|
||||
|
||||
switch( m_playMode )
|
||||
{
|
||||
case PLAY_SONG:
|
||||
tv = tracks();
|
||||
trackList = tracks();
|
||||
// at song-start we have to reset the LFOs
|
||||
if( m_playPos[PLAY_SONG] == 0 )
|
||||
{
|
||||
@@ -885,14 +841,15 @@ void songEditor::processNextBuffer( void )
|
||||
break;
|
||||
|
||||
case PLAY_TRACK:
|
||||
tv.push_back( m_trackToPlay );
|
||||
trackList.push_back( m_trackToPlay );
|
||||
break;
|
||||
|
||||
case PLAY_BB:
|
||||
if( engine::getBBEditor()->numOfBBs() > 0 )
|
||||
{
|
||||
tco_num = engine::getBBEditor()->currentBB();
|
||||
tv.push_back( bbTrack::findBBTrack( tco_num ) );
|
||||
trackList.push_back( bbTrack::findBBTrack(
|
||||
tco_num ) );
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -901,7 +858,8 @@ void songEditor::processNextBuffer( void )
|
||||
{
|
||||
tco_num = m_patternToPlay->getTrack()->getTCONum(
|
||||
m_patternToPlay );
|
||||
tv.push_back( m_patternToPlay->getTrack() );
|
||||
trackList.push_back(
|
||||
m_patternToPlay->getTrack() );
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -910,7 +868,7 @@ void songEditor::processNextBuffer( void )
|
||||
|
||||
}
|
||||
|
||||
if( tv.empty() == TRUE )
|
||||
if( trackList.empty() == TRUE )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -1033,10 +991,9 @@ void songEditor::processNextBuffer( void )
|
||||
}
|
||||
|
||||
// loop through all tracks and play them
|
||||
for( trackVector::iterator it = tv.begin();
|
||||
it != tv.end(); ++it )
|
||||
for( int i = 0; i < trackList.size(); ++i )
|
||||
{
|
||||
( *it )->play( m_playPos[m_playMode],
|
||||
trackList[i]->play( m_playPos[m_playMode],
|
||||
played_frames,
|
||||
total_frames_played, tco_num );
|
||||
}
|
||||
@@ -1136,11 +1093,10 @@ void songEditor::playPattern( pattern * _patternToPlay, bool _loop )
|
||||
tact songEditor::lengthInTacts( void ) const
|
||||
{
|
||||
tact len = 0;
|
||||
constTrackVector ctv = tracks();
|
||||
for( constTrackVector::const_iterator it = ctv.begin(); it != ctv.end();
|
||||
++it )
|
||||
const QList<track *> ctl = tracks();
|
||||
for( int i = 0; i < ctl.size(); ++i )
|
||||
{
|
||||
len = tMax( ( *it )->length(), len );
|
||||
len = tMax( ctl[i]->length(), len );
|
||||
}
|
||||
return( len );
|
||||
}
|
||||
@@ -1234,10 +1190,10 @@ void songEditor::stopExport( void )
|
||||
|
||||
void songEditor::insertBar( void )
|
||||
{
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
( *it )->getTrackContentWidget()->insertTact(
|
||||
tl[i]->getTrackContentWidget()->insertTact(
|
||||
m_playPos[PLAY_SONG] );
|
||||
}
|
||||
}
|
||||
@@ -1247,10 +1203,10 @@ void songEditor::insertBar( void )
|
||||
|
||||
void songEditor::removeBar( void )
|
||||
{
|
||||
trackVector tv = tracks();
|
||||
for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it )
|
||||
QList<track *> tl = tracks();
|
||||
for( int i = 0; i < tl.size(); ++i )
|
||||
{
|
||||
( *it )->getTrackContentWidget()->removeTact(
|
||||
tl[i]->getTrackContentWidget()->removeTact(
|
||||
m_playPos[PLAY_SONG] );
|
||||
}
|
||||
}
|
||||
@@ -1294,39 +1250,6 @@ automationPattern * songEditor::tempoAutomationPattern( void )
|
||||
|
||||
|
||||
|
||||
bool songEditor::mayChangeProject( void )
|
||||
{
|
||||
if( engine::getMainWindow()->isWindowModified() == FALSE )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
QMessageBox mb ( tr( "Project not saved" ),
|
||||
tr( "The current project was modified since "
|
||||
"last saving. Do you want to save it "
|
||||
"now?" ),
|
||||
QMessageBox::Question,
|
||||
QMessageBox::Yes,
|
||||
QMessageBox::No,
|
||||
QMessageBox::Cancel,
|
||||
engine::getMainWindow() );
|
||||
int answer = mb.exec();
|
||||
|
||||
if( answer == QMessageBox::Yes )
|
||||
{
|
||||
return( engine::getMainWindow()->saveProject() );
|
||||
}
|
||||
else if( answer == QMessageBox::No )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void songEditor::clearProject( void )
|
||||
{
|
||||
engine::getProjectJournal()->setJournalling( FALSE );
|
||||
@@ -1658,7 +1581,7 @@ void songEditor::setModified( void )
|
||||
{
|
||||
if( !m_loadingProject )
|
||||
{
|
||||
engine::getMainWindow()->setWindowModified( TRUE );
|
||||
engine::getMainWindow()->resetWindowTitle( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,35 +26,36 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <Qt/QtXml>
|
||||
#include "track.h"
|
||||
|
||||
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QLayout>
|
||||
#include <QtGui/QMenu>
|
||||
#include <QtGui/QMouseEvent>
|
||||
#include <QtGui/QStyleOption>
|
||||
|
||||
|
||||
#include "track.h"
|
||||
#include "automation_pattern.h"
|
||||
#include "track_container.h"
|
||||
#include "automation_track.h"
|
||||
#include "instrument_track.h"
|
||||
#include "bb_editor.h"
|
||||
#include "bb_track.h"
|
||||
#include "sample_track.h"
|
||||
#include "song_editor.h"
|
||||
#include "templates.h"
|
||||
#include "clipboard.h"
|
||||
#include "embed.h"
|
||||
#include "engine.h"
|
||||
#include "gui_templates.h"
|
||||
#include "pixmap_button.h"
|
||||
#include "debug.h"
|
||||
#include "tooltip.h"
|
||||
#include "string_pair_drag.h"
|
||||
#include "mmp.h"
|
||||
#include "instrument_track.h"
|
||||
#include "main_window.h"
|
||||
#include "text_float.h"
|
||||
#include "mmp.h"
|
||||
#include "pixmap_button.h"
|
||||
#include "project_journal.h"
|
||||
#include "sample_track.h"
|
||||
#include "song_editor.h"
|
||||
#include "string_pair_drag.h"
|
||||
#include "templates.h"
|
||||
#include "text_float.h"
|
||||
#include "tooltip.h"
|
||||
#include "track_container.h"
|
||||
|
||||
|
||||
const Sint16 RESIZE_GRIP_WIDTH = 4;
|
||||
@@ -140,17 +141,26 @@ void trackContentObject::movePosition( const midiTime & _pos )
|
||||
|
||||
void trackContentObject::changeLength( const midiTime & _length )
|
||||
{
|
||||
if( fixedTCOs() )
|
||||
{
|
||||
setFixedWidth( parentWidget()->width() );
|
||||
}
|
||||
else
|
||||
{
|
||||
setFixedWidth( static_cast<int>( m_length * pixelsPerTact() /
|
||||
64 ) + TCO_BORDER_WIDTH * 2 );
|
||||
}
|
||||
|
||||
if( m_length != _length )
|
||||
{
|
||||
//engine::getSongEditor()->setModified();
|
||||
addJournalEntry( journalEntry( RESIZE, m_length - _length ) );
|
||||
m_length = _length;
|
||||
|
||||
// changing length of TCO can result in change of song-length
|
||||
// etc., therefore we update the track-container
|
||||
m_track->getTrackContainer()->update();
|
||||
}
|
||||
setFixedWidth( static_cast<int>( m_length * pixelsPerTact() /
|
||||
64 ) + TCO_BORDER_WIDTH * 2 );
|
||||
// changing length of TCO can result in change of song-length etc.,
|
||||
// therefore we update the track-container
|
||||
m_track->getTrackContainer()->update();
|
||||
}
|
||||
|
||||
|
||||
@@ -455,13 +465,6 @@ void trackContentObject::contextMenuEvent( QContextMenuEvent * _cme )
|
||||
|
||||
float trackContentObject::pixelsPerTact( void )
|
||||
{
|
||||
if( fixedTCOs() )
|
||||
{
|
||||
return( ( getTrack()->getTrackContentWidget()->width() -
|
||||
2 * TCO_BORDER_WIDTH -
|
||||
DEFAULT_SCROLLBAR_SIZE ) /
|
||||
tMax<float>( length().getTact(), 1.0f ) );
|
||||
}
|
||||
return( getTrack()->getTrackContainer()->pixelsPerTact() );
|
||||
}
|
||||
|
||||
@@ -734,7 +737,7 @@ void trackContentWidget::removeTact( const midiTime & _pos )
|
||||
|
||||
|
||||
|
||||
void trackContentWidget::updateTCOs( void )
|
||||
void trackContentWidget::update( void )
|
||||
{
|
||||
for( tcoVector::iterator it = m_trackContentObjects.begin();
|
||||
it != m_trackContentObjects.end(); ++it )
|
||||
@@ -742,6 +745,7 @@ void trackContentWidget::updateTCOs( void )
|
||||
( *it )->setFixedHeight( height() - 2 );
|
||||
( *it )->update();
|
||||
}
|
||||
QWidget::update();
|
||||
}
|
||||
|
||||
|
||||
@@ -812,14 +816,19 @@ void trackContentWidget::paintEvent( QPaintEvent * _pe )
|
||||
{
|
||||
QPainter p( this );
|
||||
p.fillRect( rect(), QColor( 96, 96, 96 ) );
|
||||
|
||||
const trackContainer * tc = getTrack()->getTrackContainer();
|
||||
const int offset = (int)( ( tc->currentPosition() % 4 ) *
|
||||
tc->pixelsPerTact() );
|
||||
// draw vertical lines
|
||||
p.setPen( QColor( 128, 128, 128 ) );
|
||||
for( int x = -offset; x < width(); x += (int) tc->pixelsPerTact() )
|
||||
if( !tc->fixedTCOs() )
|
||||
{
|
||||
p.drawLine( x, 0, x, height() );
|
||||
const int offset = (int)( ( tc->currentPosition() % 4 ) *
|
||||
tc->pixelsPerTact() );
|
||||
// draw vertical lines
|
||||
p.setPen( QColor( 128, 128, 128 ) );
|
||||
for( int x = -offset; x < width();
|
||||
x += (int) tc->pixelsPerTact() )
|
||||
{
|
||||
p.drawLine( x, 0, x, height() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -828,7 +837,7 @@ void trackContentWidget::paintEvent( QPaintEvent * _pe )
|
||||
|
||||
void trackContentWidget::resizeEvent( QResizeEvent * _re )
|
||||
{
|
||||
updateTCOs();
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
@@ -846,7 +855,6 @@ void trackContentWidget::undoStep( journalEntry & _je )
|
||||
dynamic_cast<trackContentObject *>(
|
||||
engine::getProjectJournal()->getJournallingObject(
|
||||
map["id"].toInt() ) );
|
||||
assert( tco != NULL );
|
||||
multimediaProject mmp(
|
||||
multimediaProject::JOURNAL_DATA );
|
||||
tco->saveState( mmp, mmp.content() );
|
||||
@@ -1107,7 +1115,7 @@ void trackOperationsWidget::removeTrack( void )
|
||||
void trackOperationsWidget::setMuted( bool _muted )
|
||||
{
|
||||
m_muteBtn->setChecked( _muted );
|
||||
m_trackWidget->getTrackContentWidget().updateTCOs();
|
||||
m_trackWidget->getTrackContentWidget().update();
|
||||
}
|
||||
|
||||
|
||||
@@ -1221,6 +1229,15 @@ trackWidget::trackWidget( track * _track, QWidget * _parent ) :
|
||||
QColor( 64, 64, 64 ) );
|
||||
m_trackSettingsWidget.setPalette( pal );
|
||||
|
||||
QHBoxLayout * layout = new QHBoxLayout( this );
|
||||
layout->setMargin( 0 );
|
||||
layout->setSpacing( 0 );
|
||||
layout->addWidget( &m_trackOperationsWidget );
|
||||
layout->addWidget( &m_trackSettingsWidget );
|
||||
layout->addWidget( &m_trackContentWidget, 1 );
|
||||
|
||||
resizeEvent( NULL );
|
||||
|
||||
setAcceptDrops( TRUE );
|
||||
}
|
||||
|
||||
@@ -1234,10 +1251,12 @@ trackWidget::~trackWidget()
|
||||
|
||||
|
||||
|
||||
void trackWidget::repaint( void )
|
||||
void trackWidget::resizeEvent( QResizeEvent * _re )
|
||||
{
|
||||
m_trackContentWidget.repaint();
|
||||
QWidget::repaint();
|
||||
m_trackOperationsWidget.setFixedSize( TRACK_OP_WIDTH, height() - 1 );
|
||||
m_trackSettingsWidget.setFixedSize( DEFAULT_SETTINGS_WIDGET_WIDTH,
|
||||
height() - 1 );
|
||||
m_trackContentWidget.setFixedHeight( height() - 1 );
|
||||
}
|
||||
|
||||
|
||||
@@ -1246,6 +1265,10 @@ void trackWidget::repaint( void )
|
||||
void trackWidget::update( void )
|
||||
{
|
||||
m_trackContentWidget.update();
|
||||
if( !m_track->getTrackContainer()->fixedTCOs() )
|
||||
{
|
||||
changePosition();
|
||||
}
|
||||
QWidget::update();
|
||||
}
|
||||
|
||||
@@ -1256,6 +1279,28 @@ void trackWidget::update( void )
|
||||
// change of visible viewport
|
||||
void trackWidget::changePosition( const midiTime & _new_pos )
|
||||
{
|
||||
const int tcos = m_trackContentWidget.numOfTCOs();
|
||||
|
||||
if( m_track->getTrackContainer() == engine::getBBEditor() )
|
||||
{
|
||||
const int showTco = engine::getBBEditor()->currentBB();
|
||||
for( int i = 0; i < tcos; ++i )
|
||||
{
|
||||
trackContentObject * tco = m_trackContentWidget.getTCO(
|
||||
i );
|
||||
if( i == showTco )
|
||||
{
|
||||
tco->move( 0, tco->y() );
|
||||
tco->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
tco->hide();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
midiTime pos = _new_pos;
|
||||
if( pos < 0 )
|
||||
{
|
||||
@@ -1265,7 +1310,6 @@ void trackWidget::changePosition( const midiTime & _new_pos )
|
||||
const Sint32 begin = pos;
|
||||
const Sint32 end = endPosition( pos );
|
||||
const float ppt = m_track->getTrackContainer()->pixelsPerTact();
|
||||
const int tcos = m_trackContentWidget.numOfTCOs();
|
||||
|
||||
for( int i = 0; i < tcos; ++i )
|
||||
{
|
||||
@@ -1408,7 +1452,7 @@ void trackWidget::mouseMoveEvent( QMouseEvent * _me )
|
||||
trackContainer * tc = m_track->getTrackContainer();
|
||||
// look which track-widget the mouse-cursor is over
|
||||
const trackWidget * track_at_y = tc->trackWidgetAt(
|
||||
mapTo( tc->containerWidget(), _me->pos() ).y() );
|
||||
mapTo( tc->contentWidget(), _me->pos() ).y() );
|
||||
// a track-widget not equal to ourself?
|
||||
if( track_at_y != NULL && track_at_y != this )
|
||||
{
|
||||
@@ -1451,27 +1495,10 @@ void trackWidget::mouseReleaseEvent( QMouseEvent * _me )
|
||||
|
||||
void trackWidget::paintEvent( QPaintEvent * _pe )
|
||||
{
|
||||
QStyleOption opt;
|
||||
opt.initFrom( this );
|
||||
QPainter p( this );
|
||||
p.setPen( QColor( 0, 0, 0 ) );
|
||||
p.drawLine( 0, height() - 1, width() - 1, height() - 1 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void trackWidget::resizeEvent( QResizeEvent * _re )
|
||||
{
|
||||
m_trackOperationsWidget.setFixedSize( TRACK_OP_WIDTH, height() - 1 );
|
||||
m_trackOperationsWidget.move( 0, 0 );
|
||||
m_trackSettingsWidget.setFixedSize( DEFAULT_SETTINGS_WIDGET_WIDTH,
|
||||
height() - 1 );
|
||||
m_trackSettingsWidget.move( TRACK_OP_WIDTH, 0 );
|
||||
m_trackContentWidget.resize( m_track->getTrackContainer()->width() -
|
||||
TRACK_OP_WIDTH -
|
||||
DEFAULT_SETTINGS_WIDGET_WIDTH,
|
||||
height() - 1 );
|
||||
m_trackContentWidget.move( m_trackOperationsWidget.width() +
|
||||
m_trackSettingsWidget.width(), 0 );
|
||||
style()->drawPrimitive( QStyle::PE_Widget, &opt, &p, this );
|
||||
}
|
||||
|
||||
|
||||
@@ -1499,9 +1526,7 @@ track::track( trackContainer * _tc, bool _create_widget ) :
|
||||
{
|
||||
if( _create_widget )
|
||||
{
|
||||
m_trackWidget = new trackWidget( this,
|
||||
m_trackContainer->containerWidget() );
|
||||
|
||||
m_trackWidget = new trackWidget( this, m_trackContainer );
|
||||
m_trackContainer->addTrack( this );
|
||||
}
|
||||
}
|
||||
@@ -1514,13 +1539,12 @@ track::~track()
|
||||
if( m_trackContainer == engine::getBBEditor()
|
||||
&& engine::getSongEditor() )
|
||||
{
|
||||
trackVector tracks = engine::getSongEditor()->tracks();
|
||||
for( trackVector::iterator it = tracks.begin();
|
||||
it != tracks.end(); ++it )
|
||||
QList<track *> tracks = engine::getSongEditor()->tracks();
|
||||
for( int i = 0; i < tracks.size(); ++i )
|
||||
{
|
||||
if( ( *it )->type() == BB_TRACK )
|
||||
if( tracks[i]->type() == BB_TRACK )
|
||||
{
|
||||
bbTrack * bb_track = (bbTrack *)*it;
|
||||
bbTrack * bb_track = (bbTrack *)tracks[i];
|
||||
if( bb_track->automationDisabled( this ) )
|
||||
{
|
||||
// Remove reference from bbTrack
|
||||
@@ -1566,9 +1590,7 @@ track * track::create( trackTypes _tt, trackContainer * _tc )
|
||||
default: break;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_LMMS
|
||||
assert( t != NULL );
|
||||
#endif
|
||||
_tc->updateAfterTrackAdd();
|
||||
|
||||
return( t );
|
||||
}
|
||||
|
||||
@@ -29,11 +29,11 @@
|
||||
#include "track_container.h"
|
||||
|
||||
|
||||
#include <Qt/QtXml>
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QProgressDialog>
|
||||
#include <QtGui/QWheelEvent>
|
||||
#include <QtGui/QMdiArea>
|
||||
#include <QtGui/QProgressDialog>
|
||||
#include <QtGui/QScrollBar>
|
||||
#include <QtGui/QWheelEvent>
|
||||
|
||||
|
||||
#include "bb_track.h"
|
||||
@@ -51,7 +51,6 @@
|
||||
#include "rubberband.h"
|
||||
#include "song_editor.h"
|
||||
#include "string_pair_drag.h"
|
||||
#include "templates.h"
|
||||
#include "track.h"
|
||||
|
||||
|
||||
@@ -62,6 +61,19 @@ trackContainer::trackContainer( void ) :
|
||||
m_rubberBand( new rubberBand( m_scrollArea ) ),
|
||||
m_origin()
|
||||
{
|
||||
QVBoxLayout * layout = new QVBoxLayout( this );
|
||||
layout->setMargin( 0 );
|
||||
layout->setSpacing( 0 );
|
||||
layout->addWidget( m_scrollArea );
|
||||
|
||||
QWidget * scrollContent = new QWidget;
|
||||
m_scrollLayout = new QVBoxLayout( scrollContent );
|
||||
m_scrollLayout->setMargin( 0 );
|
||||
m_scrollLayout->setSpacing( 0 );
|
||||
m_scrollLayout->setSizeConstraint( QLayout::SetMinimumSize );
|
||||
|
||||
m_scrollArea->setWidget( scrollContent );
|
||||
|
||||
m_scrollArea->show();
|
||||
m_rubberBand->hide();
|
||||
|
||||
@@ -73,14 +85,10 @@ trackContainer::trackContainer( void ) :
|
||||
|
||||
trackContainer::~trackContainer()
|
||||
{
|
||||
engine::getProjectJournal()->setJournalling( FALSE );
|
||||
|
||||
while( m_trackWidgets.size() )
|
||||
while( !m_tracks.empty() )
|
||||
{
|
||||
removeTrack( m_trackWidgets.front()->getTrack() );
|
||||
delete m_tracks.takeFirst();
|
||||
}
|
||||
|
||||
engine::getProjectJournal()->setJournalling( TRUE );
|
||||
}
|
||||
|
||||
|
||||
@@ -93,10 +101,9 @@ void trackContainer::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
mainWindow::saveWidgetState( this, _this );
|
||||
|
||||
// save settings of each track
|
||||
for( trackWidgetVector::iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
for( int i = 0; i < m_tracks.size(); ++i )
|
||||
{
|
||||
( *it )->getTrack()->saveState( _doc, _this );
|
||||
m_tracks[i]->saveState( _doc, _this );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,7 +169,8 @@ void trackContainer::addTrack( track * _track )
|
||||
map["id"] = _track->id();
|
||||
addJournalEntry( journalEntry( ADD_TRACK, map ) );
|
||||
|
||||
m_trackWidgets.push_back( _track->getTrackWidget() );
|
||||
m_tracks.push_back( _track );
|
||||
m_scrollLayout->addWidget( _track->getTrackWidget() );
|
||||
connect( this, SIGNAL( positionChanged( const midiTime & ) ),
|
||||
_track->getTrackWidget(),
|
||||
SLOT( changePosition( const midiTime & ) ) );
|
||||
@@ -174,9 +182,8 @@ void trackContainer::addTrack( track * _track )
|
||||
|
||||
void trackContainer::removeTrack( track * _track )
|
||||
{
|
||||
trackWidgetVector::iterator it = qFind( m_trackWidgets.begin(),
|
||||
m_trackWidgets.end(), _track->getTrackWidget() );
|
||||
if( it != m_trackWidgets.end() )
|
||||
int index = m_tracks.indexOf( _track );
|
||||
if( index != -1 )
|
||||
{
|
||||
QMap<QString, QVariant> map;
|
||||
multimediaProject mmp( multimediaProject::JOURNAL_DATA );
|
||||
@@ -185,8 +192,10 @@ void trackContainer::removeTrack( track * _track )
|
||||
map["state"] = mmp.toString();
|
||||
addJournalEntry( journalEntry( REMOVE_TRACK, map ) );
|
||||
|
||||
disconnect( *it );
|
||||
m_trackWidgets.erase( it );
|
||||
m_tracks.removeAt( index );
|
||||
|
||||
disconnect( _track->getTrackWidget() );
|
||||
m_scrollLayout->removeWidget( _track->getTrackWidget() );
|
||||
|
||||
delete _track;
|
||||
|
||||
@@ -203,15 +212,15 @@ void trackContainer::removeTrack( track * _track )
|
||||
|
||||
void trackContainer::moveTrackUp( track * _track )
|
||||
{
|
||||
for( trackWidgetVector::iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
for( int i = 1; i < m_tracks.size(); ++i )
|
||||
{
|
||||
if( *it == _track->getTrackWidget() &&
|
||||
it > m_trackWidgets.begin() )
|
||||
if( m_tracks[i] == _track )
|
||||
{
|
||||
bbTrack::swapBBTracks( ( *it )->getTrack(),
|
||||
( *( it - 1 ) )->getTrack() );
|
||||
qSwap( *it, *( it - 1 ) );
|
||||
bbTrack::swapBBTracks( m_tracks[i], m_tracks[i - 1] );
|
||||
QWidget * tw = m_tracks[i]->getTrackWidget();
|
||||
m_scrollLayout->removeWidget( tw );
|
||||
m_scrollLayout->insertWidget( i - 1, tw );
|
||||
m_tracks.swap( i - 1, i );
|
||||
realignTracks();
|
||||
break;
|
||||
}
|
||||
@@ -223,15 +232,15 @@ void trackContainer::moveTrackUp( track * _track )
|
||||
|
||||
void trackContainer::moveTrackDown( track * _track )
|
||||
{
|
||||
for( trackWidgetVector::iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
for( int i = 0; i < m_tracks.size() - 1; ++i )
|
||||
{
|
||||
if( *it == _track->getTrackWidget() &&
|
||||
it + 1 < m_trackWidgets.end() )
|
||||
if( m_tracks[i] == _track )
|
||||
{
|
||||
bbTrack::swapBBTracks( ( *it )->getTrack(),
|
||||
( *( it + 1 ) )->getTrack() );
|
||||
qSwap( *it, *( it + 1 ) );
|
||||
bbTrack::swapBBTracks( m_tracks[i], m_tracks[i + 1] );
|
||||
QWidget * tw = m_tracks[i]->getTrackWidget();
|
||||
m_scrollLayout->removeWidget( tw );
|
||||
m_scrollLayout->insertWidget( i + 1, tw );
|
||||
m_tracks.swap( i, i + 1 );
|
||||
realignTracks();
|
||||
break;
|
||||
}
|
||||
@@ -248,21 +257,19 @@ void trackContainer::updateAfterTrackAdd( void )
|
||||
|
||||
|
||||
|
||||
void trackContainer::realignTracks( bool _complete_update )
|
||||
void trackContainer::realignTracks( void )
|
||||
{
|
||||
int y = 0;
|
||||
for( trackWidgetVector::iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
QWidget * content = m_scrollArea->widget();
|
||||
content->setFixedWidth( width()
|
||||
- m_scrollArea->verticalScrollBar()->width() );
|
||||
content->setFixedHeight( content->minimumSizeHint().height() );
|
||||
|
||||
for( int i = 0; i < m_tracks.size(); ++i )
|
||||
{
|
||||
( *it )->show();
|
||||
( *it )->update();
|
||||
( *it )->move( 0, y );
|
||||
( *it )->resize( width() - DEFAULT_SCROLLBAR_SIZE,
|
||||
( *it )->height() );
|
||||
( *it )->changePosition( m_currentPosition );
|
||||
y += ( *it )->height();
|
||||
trackWidget * tw = m_tracks[i]->getTrackWidget();
|
||||
tw->show();
|
||||
tw->update();
|
||||
}
|
||||
updateScrollArea();
|
||||
}
|
||||
|
||||
|
||||
@@ -270,9 +277,9 @@ void trackContainer::realignTracks( bool _complete_update )
|
||||
|
||||
void trackContainer::clearAllTracks( void )
|
||||
{
|
||||
while( !m_trackWidgets.empty() )
|
||||
while( !m_tracks.empty() )
|
||||
{
|
||||
removeTrack( m_trackWidgets.front()->getTrack() );
|
||||
removeTrack( m_tracks.front() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,14 +290,13 @@ const trackWidget * trackContainer::trackWidgetAt( const int _y ) const
|
||||
{
|
||||
const int abs_y = _y + m_scrollArea->viewport()->y();
|
||||
int y_cnt = 0;
|
||||
for( trackWidgetVector::const_iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
for( int i = 0; i < m_tracks.size(); ++i )
|
||||
{
|
||||
const int y_cnt1 = y_cnt;
|
||||
y_cnt += ( *it )->height();
|
||||
y_cnt += m_tracks[i]->getTrackWidget()->height();
|
||||
if( abs_y >= y_cnt1 && abs_y < y_cnt )
|
||||
{
|
||||
return( *it );
|
||||
return( m_tracks[i]->getTrackWidget() );
|
||||
}
|
||||
}
|
||||
return( NULL );
|
||||
@@ -310,10 +316,9 @@ bool trackContainer::allowRubberband( void ) const
|
||||
Uint16 trackContainer::countTracks( track::trackTypes _tt ) const
|
||||
{
|
||||
Uint16 cnt = 0;
|
||||
for( trackWidgetVector::const_iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
for( int i = 0; i < m_tracks.size(); ++i )
|
||||
{
|
||||
if( ( *it )->getTrack()->type() == _tt ||
|
||||
if( m_tracks[i]->type() == _tt ||
|
||||
_tt == track::TOTAL_TRACK_TYPES )
|
||||
{
|
||||
++cnt;
|
||||
@@ -327,39 +332,26 @@ Uint16 trackContainer::countTracks( track::trackTypes _tt ) const
|
||||
|
||||
void trackContainer::setMutedOfAllTracks( bool _muted )
|
||||
{
|
||||
for( trackWidgetVector::iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
for( int i = 0; i < m_tracks.size(); ++i )
|
||||
{
|
||||
( *it )->getTrack()->setMuted( _muted );
|
||||
m_tracks[i]->setMuted( _muted );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
constTrackVector trackContainer::tracks( void ) const
|
||||
const QList<track *> trackContainer::tracks( void ) const
|
||||
{
|
||||
constTrackVector tracks;
|
||||
for( trackWidgetVector::const_iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
{
|
||||
tracks.push_back( ( *it )->getTrack() );
|
||||
}
|
||||
return( tracks );
|
||||
return( m_tracks );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
trackVector trackContainer::tracks( void )
|
||||
QList<track *> trackContainer::tracks( void )
|
||||
{
|
||||
trackVector tracks;
|
||||
for( trackWidgetVector::iterator it = m_trackWidgets.begin();
|
||||
it != m_trackWidgets.end(); ++it )
|
||||
{
|
||||
tracks.push_back( ( *it )->getTrack() );
|
||||
}
|
||||
return( tracks );
|
||||
return( m_tracks );
|
||||
}
|
||||
|
||||
|
||||
@@ -487,9 +479,6 @@ void trackContainer::dropEvent( QDropEvent * _de )
|
||||
{
|
||||
multimediaProject mmp( value, FALSE );
|
||||
track::create( mmp.content().firstChild().toElement(), this );
|
||||
// after adding a track, we have to make sure, actual editor
|
||||
// can setup new track (e.g. adding TCO's (bbEditor does so))
|
||||
updateAfterTrackAdd();
|
||||
_de->accept();
|
||||
}
|
||||
engine::getMixer()->unlock();
|
||||
@@ -541,18 +530,6 @@ void trackContainer::resizeEvent( QResizeEvent * )
|
||||
|
||||
|
||||
|
||||
void trackContainer::updateScrollArea( void )
|
||||
{
|
||||
m_scrollArea->resize( width(), scrollAreaRect().height() );
|
||||
/* m_scrollArea->resize( tMax( m_scrollArea->parentWidget()->width() -
|
||||
m_scrollArea->x() - 2, 0 ),
|
||||
tMax( m_scrollArea->parentWidget()->height() -
|
||||
m_scrollArea->y() - 2, 0 ) );*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
trackContainer::scrollArea::scrollArea( trackContainer * _parent ) :
|
||||
QScrollArea( _parent ),
|
||||
m_trackContainer( _parent )
|
||||
|
||||
@@ -307,8 +307,6 @@ bbTrack::bbTrack( trackContainer * _tc ) :
|
||||
|
||||
engine::getBBEditor()->setCurrentBB( bbNum );
|
||||
engine::getBBEditor()->updateComboBox();
|
||||
|
||||
_tc->updateAfterTrackAdd();
|
||||
}
|
||||
|
||||
|
||||
@@ -428,11 +426,10 @@ void bbTrack::saveTrackSpecificSettings( QDomDocument & _doc,
|
||||
}
|
||||
|
||||
int track_num = 0;
|
||||
trackVector tracks = engine::getBBEditor()->tracks();
|
||||
for( trackVector::iterator it = tracks.begin(); it != tracks.end();
|
||||
++it, ++track_num )
|
||||
QList<track *> tracks = engine::getBBEditor()->tracks();
|
||||
for( int i = 0; i < tracks.size(); ++i, ++track_num )
|
||||
{
|
||||
if( automationDisabled( *it ) )
|
||||
if( automationDisabled( tracks[i] ) )
|
||||
{
|
||||
QDomElement disabled = _doc.createElement(
|
||||
"automation-disabled" );
|
||||
@@ -468,7 +465,7 @@ void bbTrack::loadTrackSpecificSettings( const QDomElement & _this )
|
||||
engine::getBBEditor()->setCurrentBB( s_infoMap[this] );
|
||||
}*/
|
||||
|
||||
trackVector tracks = engine::getBBEditor()->tracks();
|
||||
QList<track *> tracks = engine::getBBEditor()->tracks();
|
||||
node = _this.firstChild();
|
||||
while( !node.isNull() )
|
||||
{
|
||||
|
||||
@@ -306,8 +306,6 @@ instrumentTrack::instrumentTrack( trackContainer * _tc ) :
|
||||
setWindowIcon( embed::getIconPixmap( "instrument_track" ) );
|
||||
|
||||
|
||||
_tc->updateAfterTrackAdd();
|
||||
|
||||
setFixedWidth( INSTRUMENT_WIDTH );
|
||||
resize( sizeHint() );
|
||||
|
||||
|
||||
@@ -677,10 +677,10 @@ void pattern::mouseDoubleClickEvent( QMouseEvent * _me )
|
||||
void pattern::mousePressEvent( QMouseEvent * _me )
|
||||
{
|
||||
if( _me->button() == Qt::LeftButton &&
|
||||
m_patternType == pattern::BEAT_PATTERN &&
|
||||
( pixelsPerTact() >= 192 ||
|
||||
m_steps != DEFAULT_STEPS_PER_TACT ) &&
|
||||
_me->y() > height() - s_stepBtnOff->height() )
|
||||
m_patternType == pattern::BEAT_PATTERN &&
|
||||
( fixedTCOs() || pixelsPerTact() >= 192 ||
|
||||
m_steps != DEFAULT_STEPS_PER_TACT ) &&
|
||||
_me->y() > height() - s_stepBtnOff->height() )
|
||||
{
|
||||
int step = ( _me->x() - TCO_BORDER_WIDTH ) *
|
||||
length() / BEATS_PER_TACT / width();
|
||||
@@ -725,9 +725,9 @@ void pattern::mousePressEvent( QMouseEvent * _me )
|
||||
void pattern::wheelEvent( QWheelEvent * _we )
|
||||
{
|
||||
if( m_patternType == pattern::BEAT_PATTERN &&
|
||||
( pixelsPerTact() >= 192 ||
|
||||
m_steps != DEFAULT_STEPS_PER_TACT ) &&
|
||||
_we->y() > height() - s_stepBtnOff->height() )
|
||||
( fixedTCOs() || pixelsPerTact() >= 192 ||
|
||||
m_steps != DEFAULT_STEPS_PER_TACT ) &&
|
||||
_we->y() > height() - s_stepBtnOff->height() )
|
||||
{
|
||||
int step = ( _we->x() - TCO_BORDER_WIDTH ) *
|
||||
length() / BEATS_PER_TACT / width();
|
||||
@@ -816,7 +816,10 @@ void pattern::paintEvent( QPaintEvent * )
|
||||
p.setPen( QColor( 0, 0, 0 ) );
|
||||
p.drawRect( 1, 1, width() - 2, height() - 2 );
|
||||
|
||||
const float ppt = pixelsPerTact();
|
||||
const float ppt = fixedTCOs() ?
|
||||
( parentWidget()->width() - 2 * TCO_BORDER_WIDTH )
|
||||
/ (float)length().getTact() :
|
||||
pixelsPerTact();
|
||||
|
||||
if( m_patternType == pattern::MELODY_PATTERN )
|
||||
{
|
||||
@@ -894,7 +897,8 @@ void pattern::paintEvent( QPaintEvent * )
|
||||
}
|
||||
}
|
||||
else if( m_patternType == pattern::BEAT_PATTERN &&
|
||||
( ppt >= 96 || m_steps != DEFAULT_STEPS_PER_TACT ) )
|
||||
( fixedTCOs() || ppt >= 96
|
||||
|| m_steps != DEFAULT_STEPS_PER_TACT ) )
|
||||
{
|
||||
QPixmap stepon;
|
||||
QPixmap stepoverlay;
|
||||
|
||||
@@ -356,8 +356,6 @@ sampleTrack::sampleTrack( trackContainer * _tc ) :
|
||||
tr( "With this knob you can set "
|
||||
"the volume of the opened "
|
||||
"channel." ) );
|
||||
|
||||
_tc->updateAfterTrackAdd();
|
||||
}
|
||||
|
||||
|
||||
@@ -365,6 +363,12 @@ sampleTrack::sampleTrack( trackContainer * _tc ) :
|
||||
|
||||
sampleTrack::~sampleTrack()
|
||||
{
|
||||
// disconnect sampleTCOs
|
||||
for( int i = 0; i < numOfTCOs(); ++i )
|
||||
{
|
||||
disconnect( engine::getSongEditor(), 0, getTCO( i ), 0 );
|
||||
}
|
||||
|
||||
engine::getMixer()->removePlayHandles( this );
|
||||
delete m_audioPort;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
|
||||
#include <QtGui/QAction>
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QCloseEvent>
|
||||
#include <QtGui/QColorDialog>
|
||||
#include <QtGui/QComboBox>
|
||||
#include <QtGui/QFontDatabase>
|
||||
|
||||
Reference in New Issue
Block a user