コード例 #1
0
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();
}
コード例 #2
0
	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;
	}
コード例 #3
0
ファイル: Window.cpp プロジェクト: johans/lab4
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;
    }
}
コード例 #4
0
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();
        }
        
    }
    
}