Import upstream version 0.99.2
[fmit.git] / src / modules / GLErrorHistory.cpp
index 3ae6b23..e7207b9 100644 (file)
@@ -175,6 +175,8 @@ using namespace std;
 #include <qtimer.h>
 #include <qtooltip.h>
 #include <qimage.h>
+#include <qwidgetaction.h>
+#include <qboxlayout.h>
 #include <Music/Music.h>
 
 void GLErrorHistory::Note::init()
@@ -202,7 +204,7 @@ GLErrorHistory::Note::Note(int h, float cents)
 }
 QString GLErrorHistory::Note::getName() const
 {
-       return Music::h2n(ht)+factor;
+       return QString::fromStdString(Music::h2n(ht))+factor;
 }
 void GLErrorHistory::Note::addError(float err)
 {
@@ -219,74 +221,73 @@ 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();
 }
@@ -302,16 +303,6 @@ void GLErrorHistory::keepPreviousNotes(bool keep)
                        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
@@ -352,8 +343,9 @@ void GLErrorHistory::drawTextTickCent(int r, int dy)
                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]);
        }
 }
 
@@ -366,18 +358,18 @@ void GLErrorHistory::paintGL()
        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;
@@ -420,7 +412,7 @@ void GLErrorHistory::paintGL()
        // 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;
@@ -430,25 +422,25 @@ void GLErrorHistory::paintGL()
        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
@@ -478,18 +470,18 @@ void GLErrorHistory::paintGL()
                        }
 
                        // 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);