Ejemplo n.º 1
0
void EditField::UpdateTexture() throw()
{
   try
   {
      Font& font = GetFont();

      Size s = GetSize();

      m_text.UpdateText(font, GetDisplayText(), s, TextTexture::textAlignLeft,
         Color::Black(), Color::White()); // TODO settable colors

      UpdateCaretPos();
   }
   catch (...)
   {
   }
}
Ejemplo n.º 2
0
void CEditorView::UpdateEditor()
{
	//save current caret position.
	int x = m_pTermData->m_CaretPos.x;
	int y = m_pTermData->m_CaretPos.y;

	m_pTermData->m_CaretPos.x = 0;
	m_pTermData->m_CaretPos.y = 0;

	//clear screen.
	m_pTermData->ClearScreen(2);
	GetEditor()->EditorActions(CEditor::Load_Editor_Text);

	//reset caret position
	m_pTermData->m_CaretPos.x = x;
	m_pTermData->m_CaretPos.y = y;
	UpdateCaretPos();
}
Ejemplo n.º 3
0
bool EditField::OnKeyboardEvent(bool bKeyDown, unsigned int sym, unsigned int mod)
{
   if (!bKeyDown)
      return true;

   switch (sym)
   {
   case SDLK_LEFT:
      if (m_uiCaretPos > 0)
         m_uiCaretPos--;
      UpdateCaretPos();
      break;

   case SDLK_RIGHT:
      if (m_uiCaretPos < static_cast<unsigned int>(m_cszText.GetLength()))
         m_uiCaretPos++;
      UpdateCaretPos();
      break;

   case SDLK_HOME:
      m_uiCaretPos = 0;
      UpdateCaretPos();
      break;

   case SDLK_END:
      m_uiCaretPos = m_cszText.GetLength();
      UpdateCaretPos();
      break;

   case SDLK_DELETE:
      if (m_uiCaretPos < static_cast<unsigned int>(m_cszText.GetLength()))
      {
         m_cszText.Delete(m_uiCaretPos);
         UpdateTexture();
      }
      break;

   case SDLK_BACKSPACE:
      if (m_uiCaretPos > 0)
      {
         m_cszText.Delete(--m_uiCaretPos);
         UpdateTexture();
      }
      break;

   case SDLK_ESCAPE:
      GetWindowManager().SetFocus();
      m_bFocused = false;
      break;

   default:
      if (IsAllowedChar(sym, mod))
      {
         unsigned int ch = sym;
         if (sym >= SDLK_a && sym <= SDLK_z && (mod & KMOD_SHIFT) != 0)
            ch -= 32; // make uppercase

         m_cszText.Insert(m_uiCaretPos++, static_cast<TCHAR>(ch));
         UpdateTexture();
      }
      break;
   }

   // update text attribute
   SetAttr(EditFieldAttr::Text, m_cszText, true);

   return true;
}