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); } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- 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); }