/** * @author Edouard DUPIN * * @copyright 2010, Edouard DUPIN, all right reserved * * @license GPL v3 (see license file) */ #include #include #include #undef __class__ #define __class__ "TextPluginMultiLineTab" appl::TextPluginMultiLineTab::TextPluginMultiLineTab(void) { m_activateOnEventEntry = true; } bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer, const ewol::EventEntry& _event) { if (isEnable() == false) { return false; } if (_event.getType() != ewol::keyEvent::keyboardChar) { return false; } //APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent); if (_event.getStatus() != ewol::keyEvent::statusDown) { return false; } etk::UChar localValue = _event.getChar(); if (localValue != etk::UChar::Tabulation) { return false; } if (_textDrawer.m_buffer->hasTextSelected() == false) { return false; } appl::Buffer::Iterator itStart = _textDrawer.m_buffer->selectStart(); appl::Buffer::Iterator itStop = _textDrawer.m_buffer->selectStop(); // get the compleate section of the buffer : itStart = _textDrawer.m_buffer->getStartLine(itStart); itStop = _textDrawer.m_buffer->getEndLine(itStop); // copy the curent data in a classicle string: etk::UString data; _textDrawer.m_buffer->copy(data, itStart, itStop); // TODO : Change this ... bool m_useTabs = true; int32_t m_tabDist = 4; if (true == _event.getSpecialKey().isSetShift() ) { // un-indent data.add(0, etk::UChar::Return); for (esize_t iii=1; iiisetSelectionPos(itStart+1); return true; }