Esempio n. 1
0
File: CEdit.C Progetto: dhaley/dcp
void CEdit::ReplaceSel(LPCSTR lpszNewText)
{
    // Inserts the given text to replace the current selection
    // or at the insert cursor position if there is no selection.
    Boolean        has_selection = False;
    XmTextPosition left          = (XmTextPosition) 0 ;
    XmTextPosition right         = (XmTextPosition) 0 ;

    if (_xd_textwidget!=NULL)
    {
	if (XmIsText(_xd_textwidget))
	{
	    has_selection = XmTextGetSelectionPosition(_xd_textwidget, &left, &right);

	    if (!has_selection)
		left = right = XmTextGetInsertionPosition(_xd_textwidget);

	    XmTextReplace(_xd_textwidget, left, right, (char *)lpszNewText);
	}
	else if (XmIsTextField(_xd_textwidget))
	{
	    has_selection = XmTextFieldGetSelectionPosition(_xd_textwidget, &left, &right);

	    if (!has_selection)
		left = right = XmTextFieldGetInsertionPosition(_xd_textwidget);

	    XmTextFieldReplace(_xd_textwidget, left, right, (char *)lpszNewText);
	}
    }

}
Esempio n. 2
0
static char* get_selection(Ihandle *n)
{
   if (type(n) == TEXT_ || (type(n) == LIST_ && iupCheck(n, "EDITBOX")==YES))
   {
     XmTextPosition left, right;
     Widget w = (Widget)handle(n);
     if (type(n) == LIST_)
       w = (Widget)IupGetAttribute(n, "_IUPMOT_EDITBOX");
     if (XmTextFieldGetSelectionPosition(w, &left, &right))
     {
        static char val[20];
        sprintf(val,"%ld:%ld",(long int)left+1, (long int)right+1-1);
        return val;
     }
   }
   else if (type(n) == MULTILINE_)
   {
     XmTextPosition left, right;
     if (XmTextGetSelectionPosition((Widget)handle(n), &left, &right))
     {
        static char val[40];
        long int l1, l2, r1, r2;
        char *str = XmTextGetString((Widget)handle(n));
        iupmotLincol( str, left,  &l1, &l2 );
        iupmotLincol( str, right, &r1, &r2 );
        sprintf(val,"%ld,%ld:%ld,%ld",l1, l2, r1, r2-1);
        XtFree(str);
        return val;
     }
   }
   return NULL;
}
Esempio n. 3
0
static char* motListGetSelectionPosAttrib(Ihandle* ih)
{
  XmTextPosition start = 0, end = 0;
  Widget cbedit;
  if (!ih->data->has_editbox)
    return NULL;

  XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
  if (!XmTextFieldGetSelectionPosition(cbedit, &start, &end) || start==end)
    return NULL;

  /* end is inside the selection, in IUP is outside */
  end++;

  return iupStrReturnIntInt((int)start, (int)end, ':');
}
Esempio n. 4
0
static int motListSetSelectedTextAttrib(Ihandle* ih, const char* value)
{
  XmTextPosition start, end;
  Widget cbedit;
  if (!ih->data->has_editbox)
    return 0;

  if (!value)
    return 0;

  XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
  if (XmTextFieldGetSelectionPosition(cbedit, &start, &end) && start!=end)
  {
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */
    XmTextFieldReplace(cbedit, start, end, (char*)value);
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
  }

  return 0;
}
Esempio n. 5
0
static char* motListGetSelectionPosAttrib(Ihandle* ih)
{
  XmTextPosition start = 0, end = 0;
  char* str;
  Widget cbedit;
  if (!ih->data->has_editbox)
    return NULL;

  XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
  if (!XmTextFieldGetSelectionPosition(cbedit, &start, &end) || start==end)
    return NULL;

  str = iupStrGetMemory(100);

  /* end is inside the selection, in IUP is outside */
  end++;

  sprintf(str, "%d:%d", (int)start, (int)end);

  return str;
}
Esempio n. 6
0
File: CEdit.C Progetto: dhaley/dcp
void CEdit::GetSel(int& nStartChar, int& nEndChar) const
{
    // Get the start and end of the selected text
    // Returns start and end as zero if there is no selected text
    Boolean        has_selection = False ;
    XmTextPosition left          = (XmTextPosition) 0 ;
    XmTextPosition right         = (XmTextPosition) 0 ;
    	
    nStartChar = nEndChar = 0;

    if (_xd_textwidget != NULL)
    {
	if (XmIsText(_xd_textwidget))
	    has_selection = XmTextGetSelectionPosition(_xd_textwidget, &left, &right);
	else if (XmIsTextField(_xd_textwidget))
	    has_selection = XmTextFieldGetSelectionPosition(_xd_textwidget, &left, &right);

	if (has_selection)
	{
	    nStartChar = (int)left;
	    nEndChar   = (int)right;
	}
    }
}