예제 #1
0
void CSVSplitter::init(unsigned _maxColumns, ICsvParameters * csvInfo, const char * dfsQuotes, const char * dfsSeparators, const char * dfsTerminators)
{
    reset();
    maxCsvSize = csvInfo->queryMaxSize();
    unquotedBuffer = (byte *)malloc(maxCsvSize);

    maxColumns = _maxColumns;
    lengths = new unsigned [maxColumns+1];      // NB: One larger to remove some tests in main loop...
    data = new const byte * [maxColumns+1];

    unsigned idx;
    unsigned flags = csvInfo->getFlags();
    if (dfsQuotes && (flags & ICsvParameters::defaultQuote))
        addActionList(matcher, dfsQuotes, QUOTE);
    else
    {
        for (idx=0;;idx++)
        {
            const char * text = csvInfo->queryQuote(idx);
            if (!text)
                break;
            addQuote(text);
        }
    }

    if (dfsSeparators && (flags & ICsvParameters::defaultSeparate))
        addActionList(matcher, dfsSeparators, SEPARATOR);
    else
    {
        for (idx=0;;idx++)
        {
            const char * text = csvInfo->querySeparator(idx);
            if (!text)
                break;
            addSeparator(text);
        }
    }

    if (dfsTerminators && (flags & ICsvParameters::defaultTerminate))
        addActionList(matcher, dfsTerminators, TERMINATOR);
    else
    {
        for (idx=0;;idx++)
        {
            const char * text = csvInfo->queryTerminator(idx);
            if (!text)
                break;
            addTerminator(text);
        }
    }

    //MORE Should this be configurable??
    if (!(flags & ICsvParameters::preserveWhitespace))
    {
        matcher.queryAddEntry(1, " ", WHITESPACE);
        matcher.queryAddEntry(1, "\t", WHITESPACE);
    }
}
예제 #2
0
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void FilterLibraryTreeWidget::showContextMenu(QTreeWidgetItem* item, const QPoint& globalPos)
{
    // Clear menu's previous actions
    m_Menu.clear();

    if (item == NULL)
    {
        if ( !m_LeafActions.isEmpty() )
        {
            addActionList(m_DefaultActions);
        }
    }
    else
    {
        int itemType = item->type();
        switch (itemType)
        {
        case Leaf_Item_Type:
            if ( !m_LeafActions.isEmpty() )
            {
                addActionList(m_LeafActions);
            }
            break;


        case Node_Item_Type:
            if ( !m_NodeActions.isEmpty() )
            {
                addActionList(m_NodeActions);
            }
            break;
        }
    }

    m_Menu.exec(globalPos);
}