#include <qtimer.h>
#include <qtooltip.h>
#include <qimage.h>
+#include <qwidgetaction.h>
+#include <qboxlayout.h>
#include <Music/Music.h>
void GLErrorHistory::Note::init()
}
QString GLErrorHistory::Note::getName() const
{
- return Music::h2n(ht)+factor;
+ return QString::fromStdString(Music::h2n(ht))+factor;
}
void GLErrorHistory::Note::addError(float err)
{
}
GLErrorHistory::GLErrorHistory(QWidget* parent)
-: QGLWidget(parent, "GLErrorHistory")
-, View("Error history", this)
+: QGLWidget(parent)
+, View(tr("Error history"), this)
{
// settings
- QImage img;
+ QPixmap img;
img.loadFromData(g_icon_error_graph, sizeof(g_icon_error_graph), "PNG");
- setting_show->setIconSet(QIconSet(QImage(img)));
- setting_show->setOn(true);
+ setting_show->setIcon(QIcon(img));
+ setting_show->setChecked(true);
- setting_keep = new QAction(this);
- setting_keep->setMenuText(tr("Keep previous notes"));
- setting_keep->setToggleAction(true);
- setting_keep->setOn(false);
+ setting_keep = new QAction(tr("Keep previous notes"), this);
+ setting_keep->setCheckable(true);
+ setting_keep->setChecked(false);
connect(setting_keep, SIGNAL(toggled(bool)), this, SLOT(keepPreviousNotes(bool)));
-// setting_keep->addTo(&m_popup_menu);
-
- ui_notesNameMenu = new QPopupMenu(this);
- ui_notesNameMenu->insertItem(tr("Anglo-saxon"), Music::LOCAL_ANGLO);
- ui_notesNameMenu->connectItem(int(Music::LOCAL_ANGLO), this, SLOT(selectNotesNames(int)));
- ui_notesNameMenu->insertItem(tr("Latin"), Music::LOCAL_LATIN);
- ui_notesNameMenu->connectItem(int(Music::LOCAL_LATIN), this, SLOT(selectNotesNames(int)));
- ui_notesNameMenu->setCheckable(true);
- ui_notesNameMenu->setItemChecked(int(Music::GetNotesName()), true);
-// m_popup_menu.insertItem("Notes names", ui_notesNameMenu);
-
- setting_useCents = new QAction(this);
- setting_useCents->setMenuText(tr("Use cents"));
- setting_useCents->setToggleAction(true);
- setting_useCents->setOn(true);
+ m_popup_menu.addAction(setting_keep);
+
+ setting_useCents = new QAction(tr("Use cents"), this);
+ setting_useCents->setCheckable(true);
+ setting_useCents->setChecked(true);
connect(setting_useCents, SIGNAL(toggled(bool)), this, SLOT(update()));
- setting_useCents->addTo(&m_popup_menu);
+ m_popup_menu.addAction(setting_useCents);
+
+ QHBoxLayout* scaleActionLayout = new QHBoxLayout(&m_popup_menu);
+
+ QLabel* scaleActionTitle = new QLabel(tr("Scale range"), &m_popup_menu);
+ scaleActionLayout->addWidget(scaleActionTitle);
- m_popup_menu.insertItem(new Title(tr("Scale range"), &m_popup_menu));
- setting_spinScale = new QSpinBox(5, 50, 1, &m_popup_menu);
+ setting_spinScale = new QSpinBox(&m_popup_menu);
+ setting_spinScale->setMinimum(5);
+ setting_spinScale->setMaximum(50);
+ setting_spinScale->setSingleStep(1);
setting_spinScale->setValue(50);
- QToolTip::add(setting_spinScale, tr("Scale range (in cents)"));
+ setting_spinScale->setToolTip(tr("Scale range (in cents)"));
connect(setting_spinScale, SIGNAL(valueChanged(int)), this, SLOT(update()));
- m_popup_menu.insertItem(setting_spinScale);
+ scaleActionLayout->addWidget(setting_spinScale);
+
+ QWidget* scaleActionWidget = new QWidget(&m_popup_menu);
+ scaleActionWidget->setLayout(scaleActionLayout);
+
+ QWidgetAction* scaleAction = new QWidgetAction(&m_popup_menu);
+ scaleAction->setDefaultWidget(scaleActionWidget);
+ m_popup_menu.addAction(scaleAction);
}
void GLErrorHistory::save()
{
- s_settings->writeEntry("keep", setting_keep->isOn());
-// s_settings->writeEntry("notesNames", int(Music::GetNotesName()));
- s_settings->writeEntry("useCents", setting_useCents->isOn());
- s_settings->writeEntry("spinScale", setting_spinScale->value());
+ s_settings->setValue("keep", setting_keep->isChecked());
+ s_settings->setValue("useCents", setting_useCents->isChecked());
+ s_settings->setValue("spinScale", setting_spinScale->value());
}
void GLErrorHistory::load()
{
- setting_keep->setOn(s_settings->readBoolEntry("keep", setting_keep->isOn()));
-// selectNotesNames(s_settings->readNumEntry("notesNames", int(Music::GetNotesName())));
- setting_useCents->setOn(s_settings->readBoolEntry("useCents", setting_useCents->isOn()));
- setting_spinScale->setValue(s_settings->readNumEntry("spinScale", setting_spinScale->value()));
+ setting_keep->setChecked(s_settings->value("keep", setting_keep->isChecked()).toBool());
+ setting_useCents->setChecked(s_settings->value("useCents", setting_useCents->isChecked()).toBool());
+ setting_spinScale->setValue(s_settings->value("spinScale", setting_spinScale->value()).toInt());
}
void GLErrorHistory::clearSettings()
{
-// cerr << "GLErrorHistory::clearSettings" << endl;
- s_settings->removeEntry("keep");
- s_settings->removeEntry("notesNames");
- s_settings->removeEntry("useCents");
- s_settings->removeEntry("spinScale");
+ s_settings->remove("keep");
+ s_settings->remove("useCents");
+ s_settings->remove("spinScale");
}
void GLErrorHistory::addNote(GLErrorHistory::Note note)
{
m_notes.push_back(note);
- if(!setting_keep->isOn())
+ if(!setting_keep->isChecked())
while(m_notes.size()>1)
m_notes.pop_front();
}
m_notes.pop_front();
}
-void GLErrorHistory::selectNotesNames(int id)
-{
- for(int i=0; i<int(ui_notesNameMenu->count()); i++)
- ui_notesNameMenu->setItemChecked(ui_notesNameMenu->idAt(i), id==ui_notesNameMenu->idAt(i));
-
- Music::SetNotesName((Music::NotesName)id);
-
- updateGL();
-}
-
void GLErrorHistory::initializeGL()
{
// Set the clear color to black
if(i>=0) txt = QString(" ")+txt;
if(i==0) txt = QString(" ")+txt;
glRasterPos2i(2, int(height()*i/100.0f*scale) + height()/2 - dy);
- for(size_t i=0; i<txt.length(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, txt.latin1()[i]);
+ string str = txt.toStdString();
+ for(size_t i=0; i<str.length(); i++)
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)str[i]);
}
}
glLineWidth(1.0f);
// name
- QString str = tr("Error");
+ string str = tr("Error").toStdString();
glColor3f(0.75,0.75,0.75);
glRasterPos2i(2, height()-20);
for(size_t i = 0; i < str.length(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, str.latin1()[i]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (unsigned char)str[i]);
int char_size = 9;
int ticks_size = 2+3*char_size;
int dy = char_size/2;
// horiz lines
- if(setting_useCents->isOn())
+ if(setting_useCents->isChecked())
{
glBegin(GL_LINES);
float gray = 0.87;
// text marks
float gray = 0.5;
glColor3f(gray, gray, gray);
- if(setting_useCents->isOn())
+ if(setting_useCents->isChecked())
{
int grad = 10;
if(setting_spinScale->value() <= 25) grad=5;
else
{
string sfraq, sufraq;
- sufraq = string("1/")+QString::number(int(50/setting_spinScale->value())*2).latin1();
+ sufraq = string("1/")+QString::number(int(50/setting_spinScale->value())*2).toStdString();
sfraq = string("+")+sufraq;
glRasterPos2i(2, 3*height()/4-dy);
for(size_t i = 0; i < sfraq.size(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, sfraq[i]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)sfraq[i]);
sfraq = string("-")+sufraq;
glRasterPos2i(2, height()/4-dy);
for(size_t i = 0; i < sfraq.size(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, sfraq[i]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)sfraq[i]);
- sufraq = string("1/")+QString::number(int(50/setting_spinScale->value())*4).latin1();
+ sufraq = string("1/")+QString::number(int(50/setting_spinScale->value())*4).toStdString();
sfraq = string("+")+sufraq;
glRasterPos2i(2, 5*height()/8-dy);
for(size_t i = 0; i < sfraq.size(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, sfraq[i]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)sfraq[i]);
sfraq = string("-")+sufraq;
glRasterPos2i(2, 3*height()/8-dy);
for(size_t i = 0; i < sfraq.size(); i++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, sfraq[i]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)sfraq[i]);
}
// errors
}
// the note name
- string str = m_notes[i].getName();
+ string str = m_notes[i].getName().toStdString();
glColor3f(0.0,0.0,1.0);
glRasterPos2f(x+2, 2);
for(size_t c=0; c<str.length(); c++)
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[c]);
+ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, (unsigned char)str[c]);
// draw the error graph
glColor3f(0.0f,0.0f,0.0f);
glLineWidth(2.0f);
glBegin(GL_LINE_STRIP);
- if(setting_useCents->isOn())
+ if(setting_useCents->isChecked())
{
float scale = 50.0f/setting_spinScale->value();
glVertex2f(x, int(scale*m_notes[i].errors[0]*height()) + height()/2);