KTModuleWidgetBase::KTModuleWidgetBase(QWidget *parent, const char *name) : QWidget(parent), m_isChildHidden(false), m_originalParent(parent) { setObjectName(name); m_container = new QVBoxLayout(this); m_title = new KTModuleWidgetTitle("", this); setMinimumHeight(m_title->height()); // m_title->setToolTip(tr("Double click for roll up")); m_container->addWidget(m_title); m_container->setAlignment(m_title, Qt::AlignTop); // m_container->setDirection ( QBoxLayout::TopToBottom); m_container->setMargin(5); m_container->setSpacing(1); // m_container->setSizeConstraint(QLayout::SetFixedSize); connect(m_title, SIGNAL(doubleClicked()), SLOT(toggleView())); // connect(this, SIGNAL(placeChanged(QDockWindow::Place)), SLOT(fixPosition(QDockWindow::Place))); adjustSize(); hide(); }
QWidget* createWidgets(BasePropertyWidget* parent) { m_parent = parent; m_property = parent->property(); m_propertyValue = m_property->value<value_type>(); if (!m_propertyValue) return nullptr; m_value = m_propertyValue->value(); // Get widget creator std::string widget; auto meta = m_propertyValue->metaContainer().get<meta::Widget>(); if (meta) widget = meta->type(); auto id = std::type_index(typeid(base_type)); m_widgetCreator = PropertyWidgetFactory::instance().creator(id, widget); auto container = new QWidget(parent); auto layout = new QVBoxLayout(container); layout->setContentsMargins(0, 0, 0, 0); auto topLayout = new QHBoxLayout; m_toggleButton = new QPushButton(QPushButton::tr("show")); m_toggleButton->setCheckable(true); QObject::connect(m_toggleButton, &QPushButton::toggled, [this](bool toggled){ toggleView(toggled); }); topLayout->addWidget(m_toggleButton); if (!list_traits::fixed(m_value)) { m_spinBox = new QSpinBox; m_spinBox->setMaximum(INT_MAX); m_spinBox->setValue(list_traits::size(m_value)); topLayout->addWidget(m_spinBox, 1); auto resizeButton = new QPushButton(QPushButton::tr("resize")); QObject::connect(resizeButton, &QPushButton::clicked, [this]() { for (auto w : m_propertyWidgets) w->updatePropertyValue(); resize(m_spinBox->value()); }); QObject::connect(resizeButton, &QPushButton::clicked, parent, &BasePropertyWidget::setWidgetDirty); topLayout->addWidget(resizeButton); } else topLayout->addStretch(); m_scrollArea = new QScrollArea(); layout->addLayout(topLayout); layout->addWidget(m_scrollArea, 1); m_scrollArea->hide(); m_scrollArea->setWidgetResizable(true); return container; }
void Window::handleKeyDown(SDL_keysym keySym) { bool topView; string v; switch (keySym.sym) { case SDLK_ESCAPE: quit = true; break; case SDLK_LEFT: moveLight(SDLK_LEFT); break; case SDLK_RIGHT: moveLight(SDLK_RIGHT); break; case SDLK_UP: moveLight(SDLK_UP); break; case SDLK_DOWN: moveLight(SDLK_DOWN); break; case SDLK_PAGEUP: moveLight(SDLK_PAGEUP); break; case SDLK_PAGEDOWN: moveLight(SDLK_PAGEDOWN); break; case SDLK_PLUS: pressedKeys[KEY_PLUS] = true; break; case SDLK_MINUS: pressedKeys[KEY_MINUS] = true; break; case SDLK_a: pressedKeys[KEY_a] = true; break; case SDLK_b: pressedKeys[KEY_b] = true; break; case SDLK_d: pressedKeys[KEY_d] = true; break; case SDLK_f: SDL_WM_ToggleFullScreen(sdlSurface); break; case SDLK_n: pressedKeys[KEY_n] = true; break; case SDLK_p: pressedKeys[KEY_p] = true; break; case SDLK_s: pressedKeys[KEY_s] = true; break; case SDLK_v: topView = toggleView(); v = topView ? "Enabled" : "Disabled"; cout << "Topview: " << v << endl; break; case SDLK_w: pressedKeys[KEY_w] = true; break; } }
void HexSequencer::processOP1Event(midiPacket &event){ // cout << "event name: "<<event.event<<", element name: "<<event.elementName<<endl; if (event.elementName=="encoder_blue") { // cout << "event.event is"<<event.event<<endl; if(event.event == "button_up"){ gates[currentHover].active = !gates[currentHover].active; return; } int nextHover = (currentHover>12)?0:currentHover; //weirdly sometimes overflows gates[nextHover].selected = false; if (event.event == "encoder_cw"){ nextHover ++; }else if(event.event == "encoder_ccw"){ nextHover --; } nextHover = (nextHover>12)?0:nextHover; nextHover = (nextHover<0)?12:nextHover; currentHover = nextHover; gates[currentHover].selected = true; // cout << "blue encoder event"<<endl; return; } if (event.elementName=="encoder_green") { if (event.event == "button_down"){ // }else if (event.event == "button_up"){ randomiseGates(0); }else{ //turning int nextTurretAngle = gates[currentHover].turretZeroDir; if (event.event == "encoder_cw"){ nextTurretAngle ++; }else if(event.event == "encoder_ccw"){ nextTurretAngle --; } nextTurretAngle = (nextTurretAngle>5)?0:nextTurretAngle; nextTurretAngle = (nextTurretAngle<0)?5:nextTurretAngle; gates[currentHover].turretZeroDir = nextTurretAngle; gates[currentHover].turretZeroGate = gates[currentHover].neighbours[nextTurretAngle]; if (gates[currentHover].turretOneDir == nextTurretAngle){ gates[currentHover].turretOneDir = -1; gates[currentHover].turretActive = 0; } } // cout << "green encoder event"<<endl; return; } if (event.elementName=="encoder_white") { if (event.event == "button_down"){ // }else if (event.event == "button_up"){ randomiseGates(1); }else{ //turning int nextTurretAngle = gates[currentHover].turretOneDir; if (nextTurretAngle==-1){ nextTurretAngle = gates[currentHover].turretZeroDir; } if (event.event == "encoder_cw"){ nextTurretAngle ++; }else if(event.event == "encoder_ccw"){ nextTurretAngle --; } nextTurretAngle = (nextTurretAngle>5)?0:nextTurretAngle; nextTurretAngle = (nextTurretAngle<0)?5:nextTurretAngle; gates[currentHover].turretOneDir = nextTurretAngle; gates[currentHover].turretOneGate = gates[currentHover].neighbours[nextTurretAngle]; if (gates[currentHover].turretZeroDir == nextTurretAngle){ gates[currentHover].turretOneDir = -1; gates[currentHover].turretActive = 0; } } // cout << "white encoder event"<<endl; return; } if (event.elementName=="encoder_orange") { if (event.event == "encoder_cw"){ if (!orangeEncoderDown){ if (noteLength<32) noteLength++; noteLengthName = getNoteLengthName(noteLength); }else{ bpm ++; metro.setBPM(bpm); } }else if(event.event == "encoder_ccw"){ if (!orangeEncoderDown){ if (noteLength>1) noteLength--; noteLengthName = getNoteLengthName(noteLength); }else{ if (bpm>2)bpm --; metro.setBPM(bpm); } }else if (event.event == "button_down"){ orangeEncoderDown = true; }else if (event.event == "button_up"){ orangeEncoderDown = false; } // cout << "orange encoder event"<<endl; return; } if (event.event == "key_down"){ //keyboard press if (insertNotes){ Note newNote(scale); newNote.inputMidiId = newNote.playedMidiId = event.elementId; newNote.posX = gates[currentHover].posX; //makes it stay in place newNote.posY = gates[currentHover].posY; newNote.targetGateX = newNote.posX; newNote.targetGateX = newNote.posY; newNote.lastGateX = newNote.posX; newNote.lastGateX = newNote.posY; newNote.moveNote = false; gates[currentHover].notesIncoming.push_back(newNote); // cout << "added new note. midi id is"<<newNote.inputMidiId <<endl; }else{ //transpose notes transposition = event.elementId-64; //offset from middle-ish of keyboard (E) cout << "elem id "<<event.elementId<<"gives new transposition: "<<transposition<<endl; } } if(event.event == "button_down"){ // cout << "button down is: "<<event.elementName<<endl; if (event.elementName == "One"){ insertNotes = true; }else if (event.elementName == "Two"){ insertNotes = false; }else if (event.elementName == "Sequencer"){ toggleView(); } } }