diff options
Diffstat (limited to 'muse2')
-rw-r--r-- | muse2/muse/master/lmaster.cpp | 40 | ||||
-rw-r--r-- | muse2/muse/master/lmaster.h | 2 | ||||
-rw-r--r-- | muse2/muse/midiedit/scoreedit.cpp | 5 |
3 files changed, 32 insertions, 15 deletions
diff --git a/muse2/muse/master/lmaster.cpp b/muse2/muse/master/lmaster.cpp index 897ad0b4..5370a493 100644 --- a/muse2/muse/master/lmaster.cpp +++ b/muse2/muse/master/lmaster.cpp @@ -31,6 +31,7 @@ #include <QToolButton> #include <QTreeWidget> #include <QComboBox> +#include <QTimer> #define LMASTER_BEAT_COL 0 #define LMASTER_TIME_COL 1 @@ -41,7 +42,7 @@ //don't remove or insert new elements in keyStrs. -//only renaming (keeping the semantic sense) is allowed! (flo( +//only renaming (keeping the semantic sense) is allowed! (flo) QStringList keyStrs = QStringList() << "C (sharps)" << "G" << "D" << "A"<< "E" << "B" << "F#" << "C (flats)"<< "F"<< "Bb" << "Eb"<< "Ab"<< "Db"<< "Gb"; @@ -54,8 +55,8 @@ key_enum stringToKey(QString input) //flo return map[index]; } -//don't change this function (except when renaming stuff) -QString keyToString(key_enum key) //flo +//don't change the below two functions (except when renaming stuff) +int keyToIndex(key_enum key) { int index=0; switch(key) @@ -79,18 +80,21 @@ QString keyToString(key_enum key) //flo case KEY_SHARP_END: case KEY_B_BEGIN: case KEY_B_END: - printf("ILLEGAL FUNCTION CALL: keyToString called with key_sharp_begin etc.\n"); - return ""; + printf("ILLEGAL FUNCTION CALL: keyToIndex called with key_sharp_begin etc.\n"); + return 0; break; default: - printf("ILLEGAL FUNCTION CALL: keyToString called with illegal key value (not in enum)\n"); - return ""; + printf("ILLEGAL FUNCTION CALL: keyToIndex called with illegal key value (not in enum)\n"); + return 0; } - return keyStrs[index]; + return index; } - +QString keyToString(key_enum key) +{ + return keyStrs[keyToIndex(key)]; +} //--------------------------------------------------------- // closeEvent @@ -130,6 +134,13 @@ LMaster::LMaster() setFixedWidth(400); setFocusPolicy(Qt::StrongFocus); + + comboboxTimer=new QTimer(this); + comboboxTimer->setInterval(150); + comboboxTimer->setSingleShot(true); + connect(comboboxTimer, SIGNAL(timeout()), this, SLOT(comboboxTimerSlot())); + + //---------Pulldown Menu---------------------------- menuEdit = menuBar()->addMenu(tr("&Edit")); QSignalMapper *signalMapper = new QSignalMapper(this); @@ -238,7 +249,7 @@ LMaster::LMaster() key_editor = new QComboBox(view->viewport()); key_editor->addItems(keyStrs); key_editor->hide(); - connect(key_editor, SIGNAL(currentIndexChanged(int)), SLOT(returnPressed())); + connect(key_editor, SIGNAL(activated(int)), SLOT(returnPressed())); connect(view, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(select(QTreeWidgetItem*, QTreeWidgetItem*))); connect(view, SIGNAL(itemPressed(QTreeWidgetItem*, int)), SLOT(itemPressed(QTreeWidgetItem*, int))); @@ -582,11 +593,11 @@ void LMaster::itemDoubleClicked(QTreeWidgetItem* i) sig_editor->setFocus(); } else if (editedItem->getType() == LMASTER_KEYEVENT) { - //key_editor->setCurrentIndex(-1); key_editor->setGeometry(itemRect); + key_editor->setCurrentIndex(keyToIndex(dynamic_cast<LMasterKeyEventItem*>(editedItem)->key())); key_editor->show(); - key_editor->showPopup(); key_editor->setFocus(); + comboboxTimer->start(); } else { printf("illegal Master list type\n"); @@ -1034,3 +1045,8 @@ void LMaster::initShortcuts() posAction->setShortcut(shortcuts[SHRT_LM_EDIT_BEAT].key); valAction->setShortcut(shortcuts[SHRT_LM_EDIT_VALUE].key); } + +void LMaster::comboboxTimerSlot() +{ + key_editor->showPopup(); +} diff --git a/muse2/muse/master/lmaster.h b/muse2/muse/master/lmaster.h index d79fee4d..9372d1b2 100644 --- a/muse2/muse/master/lmaster.h +++ b/muse2/muse/master/lmaster.h @@ -114,6 +114,7 @@ class LMaster : public MidiEditor { QTreeWidget* view; QToolBar* tools; QMenu* menuEdit; + QTimer* comboboxTimer; enum { CMD_DELETE, CMD_INSERT_SIG, CMD_INSERT_TEMPO, CMD_EDIT_BEAT, CMD_EDIT_VALUE, CMD_INSERT_KEY }; @@ -145,6 +146,7 @@ class LMaster : public MidiEditor { void timeSigButtonClicked(); void insertKey(); void cmd(int cmd); + void comboboxTimerSlot(); public slots: void songChanged(int); diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp index dcf132ab..a4b9eb1b 100644 --- a/muse2/muse/midiedit/scoreedit.cpp +++ b/muse2/muse/midiedit/scoreedit.cpp @@ -4458,9 +4458,8 @@ void staff_t::update_part_indices() * o implement borland-style maximize: free windows do not cover the main menu, even when maximized * * IMPORTANT TODO - * o fix sigedit boxes - * o mastertrack editor: key-combobox is buggy - + * ! o fix sigedit boxes + * * o redo transport menu: offer "one beat" and "one bar" steps * maybe also offer scrollbar * o quick "set left/right marker", "select between markers" |