Пример #1
0
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);
}
Пример #2
0
/*! 
 * 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 );
}
Пример #3
0
/*! 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);
	
}
Пример #4
0
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);
    }
}