Merge remote-tracking branch 'ranft/notelabels-2' into stable-0.4

This commit is contained in:
Tobias Doerffel
2014-01-09 23:23:34 +01:00
3 changed files with 107 additions and 11 deletions

View File

@@ -110,6 +110,7 @@ private slots:
void toggleCompactTrackButtons( bool _enabled );
void toggleSyncVSTPlugins( bool _enabled );
void toggleAnimateAFP( bool _enabled );
void toggleNoteLabels( bool en );
private:
@@ -160,6 +161,7 @@ private:
bool m_compactTrackButtons;
bool m_syncVSTPlugins;
bool m_animateAFP;
bool m_printNoteLabels;
typedef QMap<QString, AudioDevice::setupWidget *> AswMap;
typedef QMap<QString, MidiClient::setupWidget *> MswMap;

View File

@@ -45,6 +45,7 @@
#include <math.h>
#include <algorithm>
#include "config_mgr.h"
#include "piano_roll.h"
#include "bb_track_container.h"
#include "Clipboard.h"
@@ -2651,7 +2652,66 @@ void pianoRoll::dragNotes( int x, int y, bool alt, bool shift )
engine::getSong()->setModified();
}
static QString calculateNoteLabel(QString note, int octave)
{
if(note.isEmpty())
return "";
return note + QString::number(octave);
}
static void printNoteHeights(QPainter& p, int bottom, int width, int startKey)
{
assert(Key_C == 0);
assert(Key_H == 11);
struct KeyLabel
{
QString key, minor, major;
};
const KeyLabel labels[12] = {
{QObject::tr("C", "Note name")},
{"", QObject::tr("Db", "Note name"), QObject::tr("C#", "Note name")},
{QObject::tr("D", "Note name")},
{"", QObject::tr("Eb", "Note name"), QObject::tr("D#", "Note name")},
{QObject::tr("E", "Note name"), QObject::tr("Fb", "Note name")},
{"F"},
{"", QObject::tr("Gb", "Note name"), QObject::tr("F#", "Note name")},
{QObject::tr("G", "Note name")},
{"", QObject::tr("Ab", "Note name"),QObject::tr( "G#", "Note name")},
{QObject::tr("A", "Note name")},
{"", QObject::tr("Bb", "Note name"),QObject::tr( "A#", "Note name")},
{QObject::tr("B", "Note name")}
};
p.setFont( pointSize<KEY_LINE_HEIGHT-4>( p.font() ) );
p.setPen( QColor( 255, 255, 0 ) );
for( int y = bottom, key = startKey; y > PR_TOP_MARGIN;
y -= KEY_LINE_HEIGHT, key++)
{
const unsigned note = key % KeysPerOctave;
assert( note < ( sizeof( labels ) / sizeof( *labels) ));
const KeyLabel& noteLabel( labels[note] );
const int octave = key / KeysPerOctave;
const KeyLabel notes = {
calculateNoteLabel(noteLabel.key, octave),
calculateNoteLabel(noteLabel.minor, octave),
calculateNoteLabel(noteLabel.major, octave),
};
const int drawWidth( width - WHITE_KEY_WIDTH );
const int hspace = 300;
const int columnCount = drawWidth/hspace + 1;
for(int col = 0; col < columnCount; col++)
{
const int subOffset = 42;
const int x = subOffset + hspace/2 + hspace * col;
p.drawText( WHITE_KEY_WIDTH + x, y, notes.key);
p.drawText( WHITE_KEY_WIDTH + x - subOffset, y, notes.minor);
p.drawText( WHITE_KEY_WIDTH + x + subOffset, y, notes.major);
}
}
}
void pianoRoll::paintEvent( QPaintEvent * _pe )
{
@@ -3125,6 +3185,11 @@ void pianoRoll::paintEvent( QPaintEvent * _pe )
p.drawPixmap( mapFromGlobal( QCursor::pos() ) + QPoint( 8, 8 ),
*cursor );
}
if( configManager::inst()->value( "ui", "printnotelabels").toInt() )
{
printNoteHeights(p, keyAreaBottom(), width(), m_startKey);
}
}

View File

@@ -121,7 +121,9 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
m_syncVSTPlugins( configManager::inst()->value( "ui",
"syncvstplugins" ).toInt() ),
m_animateAFP(configManager::inst()->value( "ui",
"animateafp").toInt() )
"animateafp").toInt() ),
m_printNoteLabels(configManager::inst()->value( "ui",
"printnotelabels").toInt() )
{
setWindowIcon( embed::getIconPixmap( "setup_general" ) );
setWindowTitle( tr( "Setup LMMS" ) );
@@ -190,12 +192,17 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
tabWidget * misc_tw = new tabWidget( tr( "MISC" ), general );
misc_tw->setFixedHeight( 174 );
const int XDelta = 10;
const int YDelta = 18;
const int HeaderSize = 30;
int labelNumber = 0;
ledCheckBox * enable_tooltips = new ledCheckBox(
tr( "Enable tooltips" ),
misc_tw );
enable_tooltips->move( 10, 18 );
labelNumber++;
enable_tooltips->move( XDelta, YDelta*labelNumber );
enable_tooltips->setChecked( m_toolTips );
connect( enable_tooltips, SIGNAL( toggled( bool ) ),
this, SLOT( toggleToolTips( bool ) ) );
@@ -204,7 +211,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * restart_msg = new ledCheckBox(
tr( "Show restart warning after changing settings" ),
misc_tw );
restart_msg->move( 10, 36 );
labelNumber++;
restart_msg->move( XDelta, YDelta*labelNumber );
restart_msg->setChecked( m_warnAfterSetup );
connect( restart_msg, SIGNAL( toggled( bool ) ),
this, SLOT( toggleWarnAfterSetup( bool ) ) );
@@ -212,7 +220,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * dbv = new ledCheckBox( tr( "Display volume as dBV " ),
misc_tw );
dbv->move( 10, 54 );
labelNumber++;
dbv->move( XDelta, YDelta*labelNumber );
dbv->setChecked( m_displaydBV );
connect( dbv, SIGNAL( toggled( bool ) ),
this, SLOT( toggleDisplaydBV( bool ) ) );
@@ -221,7 +230,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * mmpz = new ledCheckBox(
tr( "Compress project files per default" ),
misc_tw );
mmpz->move( 10, 72 );
labelNumber++;
mmpz->move( XDelta, YDelta*labelNumber );
mmpz->setChecked( m_MMPZ );
connect( mmpz, SIGNAL( toggled( bool ) ),
this, SLOT( toggleMMPZ( bool ) ) );
@@ -229,7 +239,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * oneitw = new ledCheckBox(
tr( "One instrument track window mode" ),
misc_tw );
oneitw->move( 10, 90 );
labelNumber++;
oneitw->move( XDelta, YDelta*labelNumber );
oneitw->setChecked( m_oneInstrumentTrackWindow );
connect( oneitw, SIGNAL( toggled( bool ) ),
this, SLOT( toggleOneInstrumentTrackWindow( bool ) ) );
@@ -237,7 +248,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * hqaudio = new ledCheckBox(
tr( "HQ-mode for output audio-device" ),
misc_tw );
hqaudio->move( 10, 108 );
labelNumber++;
hqaudio->move( XDelta, YDelta*labelNumber );
hqaudio->setChecked( m_hqAudioDev );
connect( hqaudio, SIGNAL( toggled( bool ) ),
this, SLOT( toggleHQAudioDev( bool ) ) );
@@ -245,7 +257,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * compacttracks = new ledCheckBox(
tr( "Compact track buttons" ),
misc_tw );
compacttracks->move( 10, 126 );
labelNumber++;
compacttracks->move( XDelta, YDelta*labelNumber );
compacttracks->setChecked( m_compactTrackButtons );
connect( compacttracks, SIGNAL( toggled( bool ) ),
this, SLOT( toggleCompactTrackButtons( bool ) ) );
@@ -254,11 +267,22 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * syncVST = new ledCheckBox(
tr( "Sync VST plugins to host playback" ),
misc_tw );
syncVST->move( 10, 144 );
labelNumber++;
syncVST->move( XDelta, YDelta*labelNumber );
syncVST->setChecked( m_syncVSTPlugins );
connect( syncVST, SIGNAL( toggled( bool ) ),
this, SLOT( toggleSyncVSTPlugins( bool ) ) );
ledCheckBox * noteLabels = new ledCheckBox(
tr( "Enable note labels in piano roll" ),
misc_tw );
labelNumber++;
noteLabels->move( XDelta, YDelta*labelNumber );
noteLabels->setChecked( m_printNoteLabels );
connect( noteLabels, SIGNAL( toggled( bool ) ),
this, SLOT( toggleNoteLabels( bool ) ) );
misc_tw->setFixedHeight( YDelta*labelNumber + HeaderSize );
gen_layout->addWidget( bufsize_tw );
@@ -800,6 +824,8 @@ void setupDialog::accept()
QString::number( m_syncVSTPlugins ) );
configManager::inst()->setValue( "ui", "animateafp",
QString::number( m_animateAFP ) );
configManager::inst()->setValue( "ui", "printnotelabels",
QString::number( m_printNoteLabels ) );
configManager::inst()->setWorkingDir( m_workingDir );
@@ -994,7 +1020,10 @@ void setupDialog::toggleAnimateAFP( bool _enabled )
}
void setupDialog::toggleNoteLabels( bool en )
{
m_printNoteLabels = en;
}
void setupDialog::toggleOneInstrumentTrackWindow( bool _enabled )