X-Git-Url: http://git.johnwright.org/?p=fmit.git;a=blobdiff_plain;f=src%2Fmodules%2FGLErrorHistory.cpp;fp=src%2Fmodules%2FGLErrorHistory.cpp;h=e7207b953dbae642545b6608650d1d8ed591051d;hp=3ae6b235e3eed09039b67d358d44834ccb3c6da8;hb=49947d1cd4506f5574b3be62ee90e9f00227d9fd;hpb=82c9faab9421b3d87a0faa84a73f55aaccbbb689 diff --git a/src/modules/GLErrorHistory.cpp b/src/modules/GLErrorHistory.cpp index 3ae6b23..e7207b9 100644 --- a/src/modules/GLErrorHistory.cpp +++ b/src/modules/GLErrorHistory.cpp @@ -175,6 +175,8 @@ using namespace std; #include #include #include +#include +#include #include 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; icount()); 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; iisOn()) + 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; cisOn()) + if(setting_useCents->isChecked()) { float scale = 50.0f/setting_spinScale->value(); glVertex2f(x, int(scale*m_notes[i].errors[0]*height()) + height()/2);