//------------------------------------------------------------------------ int32_t CTextEdit::onKeyDown (VstKeyCode& keyCode) { if (platformControl) { if (keyCode.virt == VKEY_ESCAPE) { bWasReturnPressed = false; platformControl->setText (text); getFrame ()->setFocusView (0); looseFocus (); return 1; } else if (keyCode.virt == VKEY_RETURN) { bWasReturnPressed = true; getFrame ()->setFocusView (0); looseFocus (); return 1; } } return -1; }
long cBitmapFontEditable::onKeyDown(VstKeyCode &keyCode) { if(!m_editing) { return 0; } if(m_edit_index >= MAX_EDIT_CHARS || keyCode.character == KEY_ESC || keyCode.character == KEY_ENTER || keyCode.character == KEY_TAB || keyCode.character == KEY_RETURN || keyCode.character == 0) { if(keyCode.character == KEY_ESC) { setText(m_old_buffer); } else { setText(m_edit_buffer); } m_editing = false; looseFocus(); return 0; } else if(keyCode.character == KEY_DELETE && m_edit_index >= 0) { if(m_edit_index) { m_edit_buffer[--m_edit_index] = '\0'; } else { m_edit_index = 0; m_edit_buffer[0] = '\0'; } } else { m_edit_buffer[m_edit_index++] = (char)keyCode.character; } if(m_edit_index >= m_max_chars) { setText(m_edit_buffer + m_edit_index - m_max_chars); } else { setText(m_edit_buffer); } return keyCode.character; }
//------------------------------------------------------------------------ CTextEdit::~CTextEdit () { listener = 0; if (platformControl) looseFocus (); }
void COverlayDistance::mousePressEvent(QMouseEvent * e) { if(thePoint == 0) return; IMap& map = CMapDB::self().getMap(); if(e->button() == Qt::LeftButton) { if(doMove) { if(*thePoint == points.last() && addType == eAtEnd) { const int size = subline.size(); if(size < 2) { pt_t pt; pt.u = e->pos().x(); pt.v = e->pos().y(); map.convertPt2Rad(pt.u, pt.v); points.push_back(pt); } else { pt_t pt; pt.u = subline[1].x(); pt.v = subline[1].y(); map.convertPt2Rad(pt.u, pt.v); *thePoint = pt; for(int i = 2; i < size; i++) { pt.u = subline[i].x(); pt.v = subline[i].y(); map.convertPt2Rad(pt.u, pt.v); points.push_back(pt); } points.push_back(pt); } thePointBefor = &(*(points.end() - 2)); thePoint = &points.last(); thePointAfter = 0; } else if(*thePoint == points.first() && addType == eAtEnd) { const int size = subline.size(); if(size < 2) { pt_t pt; pt.u = e->pos().x(); pt.v = e->pos().y(); map.convertPt2Rad(pt.u, pt.v); points.push_front(pt); } else { pt_t pt; pt.u = subline[1].x(); pt.v = subline[1].y(); map.convertPt2Rad(pt.u, pt.v); *thePoint = pt; for(int i = 2; i < size; i++) { pt.u = subline[i].x(); pt.v = subline[i].y(); map.convertPt2Rad(pt.u, pt.v); points.push_front(pt); } points.push_front(pt); } thePointBefor = 0; thePoint = &points.first(); thePointAfter = &(*(points.begin() + 1)); } else if(addType != eNone) { pt_t pt; const int size = subline.size(); int idx = points.indexOf(*thePoint); if(size > 2) { if(addType == eAfter) { pt.u = subline[0].x(); pt.v = subline[0].y(); map.convertPt2Rad(pt.u, pt.v); points[idx - 1] = pt; pt.u = subline[size - 1].x(); pt.v = subline[size - 1].y(); map.convertPt2Rad(pt.u, pt.v); points[idx] = pt; for(int i = 1; i < size - 1; i++) { pt.u = subline[i].x(); pt.v = subline[i].y(); map.convertPt2Rad(pt.u, pt.v); points.insert(idx - 1 + i,pt); } idx += size - 2; } else { pt.u = subline[0].x(); pt.v = subline[0].y(); map.convertPt2Rad(pt.u, pt.v); points[idx + 1] = pt; pt.u = subline[size - 1].x(); pt.v = subline[size - 1].y(); map.convertPt2Rad(pt.u, pt.v); points[idx] = pt; for(int i = 1; i < size - 1; i++) { pt.u = subline[i].x(); pt.v = subline[i].y(); map.convertPt2Rad(pt.u, pt.v); points.insert(idx+1,pt); } } } if(addType == eAfter) { idx++; } pt.u = e->pos().x(); pt.v = e->pos().y(); map.convertPt2Rad(pt.u, pt.v); points.insert(idx,pt); thePointBefor = idx ? &points[idx - 1] : 0; thePoint = &points[idx]; thePointAfter = (idx + 1) == points.count() ? 0 : &points[idx + 1]; } else { pt_t pt; pt.u = e->pos().x(); pt.v = e->pos().y(); map.convertPt2Rad(pt.u, pt.v); *thePoint = pt; doMove = false; addType = eNone; thePoint = 0; thePointBefor = 0; thePointAfter = 0; } subline.clear(); calcDistance(); theMainWindow->getCanvas()->update(); //if(addType == eNone) // why? //{ emit sigChanged(); //} return; } if(!doFuncWheel) { selectedPoints.clear(); selectedPoints << points.indexOf(*thePoint); emit sigSelectionChanged(); doFuncWheel = true; theMainWindow->getCanvas()->update(); return; } QPoint pos1 = e->pos(); projXY pt = *thePoint; map.convertRad2Pt(pt.u, pt.v); pos1 -= QPoint(pt.u - 24, pt.v - 24); if(rectDel.contains(pos1)) { int idx = points.indexOf(*thePoint); if(idx == -1) return; points.takeAt(idx); if(points.isEmpty()) { QStringList keys(getKey()); COverlayDB::self().delOverlays(keys); } calcDistance(); doFuncWheel = false; thePoint = 0; thePointBefor = 0; thePointAfter = 0; emit sigChanged(); } else if(rectMove.contains(pos1)) { QApplication::setOverrideCursor(QCursor(QPixmap(":/cursors/cursorMoveWpt.png"),0,0)); doMove = true; doFuncWheel = false; savePoint = *thePoint; } else if(rectAdd1.contains(pos1)) { int idx = points.indexOf(*thePoint); if(idx == -1) return; pt_t pt; pt.u = e->pos().x(); pt.v = e->pos().y(); map.convertPt2Rad(pt.u, pt.v); points.insert(idx,pt); thePointBefor = idx ? &points[idx - 1] : 0; thePoint = &points[idx]; thePointAfter = (idx + 1) == points.count() ? 0 : &points[idx + 1]; doMove = true; addType = eBefore; doFuncWheel = false; theMainWindow->getCanvas()->update(); } else if(rectAdd2.contains(pos1)) { int idx = points.indexOf(*thePoint); if(idx == -1) return; idx++; pt_t pt; pt.u = e->pos().x(); pt.v = e->pos().y(); map.convertPt2Rad(pt.u, pt.v); points.insert(idx,pt); thePointBefor = idx ? &points[idx - 1] : 0; thePoint = &points[idx]; thePointAfter = (idx + 1) == points.count() ? 0 : &points[idx + 1]; doMove = true; addType = eAfter; doFuncWheel = false; theMainWindow->getCanvas()->update(); } else { doFuncWheel = false; thePoint = 0; thePointBefor = 0; thePointAfter = 0; } } else if(e->button() == Qt::RightButton) { looseFocus(); return; } selectedPoints.clear(); if(addType == eNone) { emit sigSelectionChanged(); } }