Merge remote-tracking branch 'ranft/notelabels-2' into stable-0.4
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user