bool CursesAttachmentDisplay::Attachment::processKeyInFocus(const Curses::Key &key) { if (key == key_SAVE) { parent->download(this); return true; } if (key == key_DELETE) { if (mime && !mime->messagerfc822()) markDeleted(true); return true; } if (key == key_UNDELETE) { if (mime && !mime->messagerfc822()) markDeleted(false); return true; } return CursesButton::processKeyInFocus(key); }
/*! * Shows popup menu. * \param item (in) - current item. * \param p (in) - mouse pointer position. * \param col (in) - current column. */ void aListView::showMenu( QListViewItem* item, const QPoint& p, int col) { delete menu; menu = new QPopupMenu(); if(toSelect) { menu->insertItem(tr("Select"), this, SLOT(select())); menu->insertSeparator(); } menu->insertItem(tr("Edit"), this, SLOT(edit())); menu->insertSeparator(); menu->insertItem(tr("New element"), this, SLOT(newItem())); menu->insertItem(tr("New group"), this, SLOT(newGroup())); menu->insertSeparator(); //menu->setItemEnabled(menu->idAt(3),false); menu->insertItem(tr("Undo mark delete"), this, SLOT(undoMarkDeleted())); menu->insertItem(tr("Delete (mark deleted)"),this, SLOT(markDeleted())); menu->insertItem(tr("Delete (phisical)"), this, SLOT(delItem())); parentItem = item; if(col==-1) col = 0; columnClicked = col; menu->popup( p ); }
/*! Key press event handler. Emit signal keyEnterPressed(). * \param e (in) - key press event. */ void aListView::keyPressEvent(QKeyEvent *e) { switch(e->key()) { case Qt::Key_Return: e->accept(); parentItem = selectedItem(); columnClicked = 0; if(toSelect) { select(); } else { edit(); } break; case Qt::Key_Insert: parentItem = selectedItem(); columnClicked = 0; switch(QMessageBox::question(this, tr("Type of new item"), tr("<p align=\"center\">Select type of new item</p>"), tr("&Elemnt"), tr("&Group"))) { case 0: newItem(); break; case 1: newGroup(); break; default: break; } break; case Qt::Key_Delete: parentItem = selectedItem(); columnClicked = 0; switch(QMessageBox::question(this, tr("Delete item"), tr("<p align=\"center\">Mark deleted or delete?</p>"), tr("&Mark deleted"), tr("&Delete"))) { case 0: markDeleted(); break; case 1: delItem(); break; default: break; } break; default: e->ignore(); break; } QListView::keyPressEvent(e); }
static void selectStatus(struct gbStatusTbl* statusTbl, struct gbStatus* tmpStatus, void* clientData) /* Function called to determine if a status entry should be loaded. This * compares the status parsed from the gbStatus file with the gbIndex. * Unchanged entries are not loaded into the table, decresing memory required * for incremental loads. */ { struct selectStatusData* ssData = clientData; struct gbEntry* entry = gbReleaseFindEntry(ssData->select->release, tmpStatus->acc); struct gbProcessed* processed = NULL; struct gbAligned* aligned = NULL; struct hashEl* seqAccEl = hashLookup(ssData->seqHash, tmpStatus->acc); /* check if in seq table, record if found */ if (seqAccEl == NULL) { fprintf(stderr, "Error: %s is in gbStatus but not in gbSeq table\n", tmpStatus->acc); gErrorCnt++; } else seqAccEl->val = (void*)TRUE; if (entry != NULL) processed = getProcAligned(entry, &aligned); /* if no entry or not aligned, or if it shouldn't be included, delete */ if ((entry == NULL) || (aligned == NULL)) markDeleted(statusTbl, tmpStatus, ssData); else if (!loadNonCoding && (processed->molType != mol_mRNA)) markIgnore(statusTbl, tmpStatus, entry); else { /* validate entries are not going backwards */ if (aligned->version < tmpStatus->version) errAbort("version for %s in release (%d) is less than one in database (%d)", entry->acc, aligned->version, tmpStatus->version); if (processed->modDate < tmpStatus->modDate) { fprintf(stderr, "Warning: modDate for %s in release (%s) is before one in database (%s)\n", entry->acc, gbFormatDate(processed->modDate), gbFormatDate(tmpStatus->modDate)); } /* flag updates for changed for latter processing, order of checks is * very important.*/ if ((aligned->version > tmpStatus->version) || (aligned->numAligns != tmpStatus->numAligns)) markSeqChanged(statusTbl, tmpStatus, processed, aligned); else if (processed->modDate != tmpStatus->modDate) markMetaChanged(ssData->select, statusTbl, tmpStatus, processed, aligned); else if (statusTbl->extFileUpdate && !sameString(tmpStatus->extRelease, ssData->select->release->version)) markExtChanged(statusTbl, tmpStatus, processed, aligned); else if ((gOptions->flags & DBLOAD_REBUILD_DERIVED) && (entry->type == GB_MRNA)) markRebuildDerived(statusTbl, tmpStatus, processed, aligned); else markNoChange(statusTbl, tmpStatus, entry); } }