コード例 #1
0
ファイル: CEdit.C プロジェクト: 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);
	}
    }

}
コード例 #2
0
ファイル: iupmot_list.c プロジェクト: Vulcanior/IUP
static int motListSetClipboardAttrib(Ihandle *ih, const char *value)
{
  Widget cbedit;
  if (!ih->data->has_editbox)
    return 0;

  XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);

  if (iupStrEqualNoCase(value, "COPY"))
  {
    Ihandle* clipboard;
    char *str = XmTextFieldGetSelection(cbedit);
    if (!str) return 0;

    clipboard = IupClipboard();
    IupSetAttribute(clipboard, "TEXT", str);
    IupDestroy(clipboard);

    XtFree(str);
  }
  else if (iupStrEqualNoCase(value, "CUT"))
  {
    Ihandle* clipboard;
    char *str = XmTextFieldGetSelection(cbedit);
    if (!str) return 0;

    clipboard = IupClipboard();
    IupSetAttribute(clipboard, "TEXT", str);
    IupDestroy(clipboard);

    XtFree(str);

    /* disable callbacks */
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
    XmTextFieldRemove(cbedit);
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
  }
  else if (iupStrEqualNoCase(value, "PASTE"))
  {
    Ihandle* clipboard;
    char *str;

    clipboard = IupClipboard();
    str = IupGetAttribute(clipboard, "TEXT");

    /* disable callbacks */
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
    XmTextFieldRemove(cbedit);
    XmTextFieldInsert(cbedit, XmTextFieldGetInsertionPosition(cbedit), str);
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
  }
  else if (iupStrEqualNoCase(value, "CLEAR"))
  {
    /* disable callbacks */
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", "1");
    XmTextFieldRemove(cbedit);
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
  }
  return 0;
}
コード例 #3
0
static void
darkness_text_cb(Widget w, XtPointer client_data, XtPointer call_data)
{
    char *text;
    int val;
    struct topic_info *info = (struct topic_info *)client_data;
    struct prefs_choice *prefs = (struct prefs_choice *)(info->data);
    
#if USE_SPINBOX
    /* synchronize internal spinbox value. Apparently this loses the insertion position,
       so we need to save it and set it again. */
    XmTextPosition pos = XmTextFieldGetInsertionPosition(w);
    
    UNUSED(call_data);
    text = XmTextFieldGetString(w);
    val = strtol(text, (char **)NULL, 10);

    if (val != 0) {
	XtVaSetValues(w, XmNposition, val, NULL);
	XmTextFieldSetInsertionPosition(w, pos);
    }
#else
    Widget text_field;
    UNUSED(call_data);

    XtVaGetValues(w, XmNuserData, &text_field, NULL);
    XtVaGetValues(text_field, XmNvalue, &text, NULL);
    val = strtol(text, (char **)NULL, 10);
#endif
    if (XtIsRealized(w)) {
	do_set_density(val / 100.0, True, False);
	store_preference(&(prefs->db), "gamma", "%f", val / 100.0);
    }
    XtFree(text);
}
コード例 #4
0
ファイル: NumEntry.c プロジェクト: idunham/dtextra
static Boolean
set_values(Widget old, Widget request, Widget new_w, ArgList args, Cardinal *num_args)
{
    Boolean refresh = False;

#ifdef DEBUG
    printf("NumEntry - set_values(%s) - >%s< >%s<\n", XtName(new_w), NumEntry_Value(old), NumEntry_Value(new_w));
#endif
    if (XtIsSensitive(old) != XtIsSensitive(new_w) && !XtIsSensitive(new_w))
    {
	if (NumEntry_TimerId(new_w))
	{
	    XtRemoveTimeOut(NumEntry_TimerId(new_w));
	    NumEntry_TimerId(new_w) = (XtIntervalId)NULL;
	}
    }
    if (NumEntry_LabelString(old) != NumEntry_LabelString(new_w))
    {
	NumEntry_LabelString(new_w) = XmStringCopy(NumEntry_LabelString(new_w));
	XtVaSetValues(NumEntry_Label(new_w),
		      XmNlabelString, NumEntry_LabelString(new_w),
		      NULL);
	if (NumEntry_LabelString(old))
	{
	    XmStringFree(NumEntry_LabelString(old));
	}
    }
    if (NumEntry_Value(old) != NumEntry_Value(new_w))
    {
	char *tmp;
	Position Place;
#ifdef DEBUG
	printf("NumEntry - set_values(%s) - value old >%s< new >%s<\n", XtName(new_w),
	       NumEntry_Value(old), NumEntry_Value(new_w));
#endif
	tmp = NumEntry_Value(new_w);
	NumEntry_Value(new_w) = XtNewString(tmp);
	Place = XmTextFieldGetInsertionPosition(NumEntry_TextField(new_w));
	XmTextFieldSetString(NumEntry_TextField(new_w), NumEntry_Value(new_w));
	XmTextFieldSetInsertionPosition(NumEntry_TextField(new_w), Place);
	if (NumEntry_Value(old))
	{
	    XtFree(NumEntry_Value(old));
	}
	refresh = True;
	DoMath(new_w);
    }
    if (NumEntry_Columns(old) != NumEntry_Columns(new_w))
    {
    Dimension old_width = XtWidth(NumEntry_TextField(new_w));

	XtVaSetValues(NumEntry_TextField(new_w),
		      XmNcolumns, NumEntry_Columns(new_w),
		      NULL);
	XtWidth(new_w) -= (old_width - XtWidth(NumEntry_TextField(new_w)));
	refresh = True;
    }
    return (refresh);
}
コード例 #5
0
ファイル: iupmot_list.c プロジェクト: Vulcanior/IUP
static char* motListGetCaretPosAttrib(Ihandle* ih)
{
  if (ih->data->has_editbox)
  {
    XmTextPosition pos;
    Widget cbedit;
    XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
    pos = XmTextFieldGetInsertionPosition(cbedit);
    return iupStrReturnInt((int)pos);
  }
  else
    return NULL;
}
コード例 #6
0
ファイル: iupmot_list.c プロジェクト: kmx/mirror-iup
static char* motListGetCaretPosAttrib(Ihandle* ih)
{
  if (ih->data->has_editbox)
  {
    XmTextPosition pos;
    Widget cbedit;
    char* str = iupStrGetMemory(50);
    XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
    pos = XmTextFieldGetInsertionPosition(cbedit);
    sprintf(str, "%d", (int)pos);
    return str;
  }
  else
    return NULL;
}
コード例 #7
0
ファイル: iupmot_list.c プロジェクト: Vulcanior/IUP
static int motListSetInsertAttrib(Ihandle* ih, const char* value)
{
  if (!value)
    return 0;

  if (ih->data->has_editbox)
  {
    Widget cbedit;
    XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL);
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */
    XmTextFieldRemove(cbedit);
    XmTextFieldInsert(cbedit, XmTextFieldGetInsertionPosition(cbedit), (char*)value);
    iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL);
  }

  return 0;
}
コード例 #8
0
ファイル: editing.C プロジェクト: fooeybartoni/CSI702
void insert_source_argAct(Widget w, XEvent*, String*, Cardinal*)
{
    clear_isearch();

    string arg = source_arg->get_string();
    if (XmIsText(w)) {
	if (XmTextGetEditable(w)) {
	    XmTextPosition pos = XmTextGetInsertionPosition(w);
	    XmTextReplace(w, pos, pos, XMST(arg.chars()));
	}
    }
    else if (XmIsTextField(w)) {
	if (XmTextFieldGetEditable(w)) {
	    XmTextPosition pos = XmTextFieldGetInsertionPosition(w);
	    XmTextFieldReplace(w, pos, pos, XMST(arg.chars()));
	}
    }
}
コード例 #9
0
ファイル: NumEntry.c プロジェクト: idunham/dtextra
static void
DoMath(Widget W)
{
    String value;
    double result;
    Position Place;

#ifdef DEBUG
    printf("DoMath(%s)\n", XtName(W));
#endif
    value = XmTextFieldGetString(NumEntry_TextField(W));
    Place = XmTextFieldGetInsertionPosition(NumEntry_TextField(W));
    result = XltCalc(value);
    if (result != NumEntry_Result(W))
    {
	char buf[1024];
	XltNumEntryVerifyCallbackStruct cbs;

	NumEntry_Result(W) = result;
	sprintf(buf, "%.*g", NumEntry_Columns(W), result);
	cbs.reason = XmCR_VALUE_CHANGED;
	cbs.event = NULL;
	cbs.doit = True;
	cbs.value = XtNewString(buf);
	cbs.dvalue = NumEntry_Result(W);
	XtCallCallbacks(W, XmNvalueChangedCallback, &cbs);
	if (cbs.doit)
	{
	    XtFree(NumEntry_Value(W));
	    NumEntry_Value(W) = cbs.value;
	    NumEntry_Result(W) = cbs.dvalue;
	}
	else
	{
	    XtFree(cbs.value);
	}
    }
    XmTextFieldSetString(NumEntry_TextField(W), NumEntry_Value(W));
    XmTextFieldSetInsertionPosition(NumEntry_TextField(W), Place);
    XtFree(value);
}
コード例 #10
0
ファイル: NumEntry.c プロジェクト: idunham/dtextra
static void
StepValue(Widget W, int a, int b)
{
    Widget Rc = XtParent(XtParent(W));
    Position Place;
    char *buf;

#ifdef DEBUG
    printf("NumEntry - StepValue(%s) - %s\n", XtName(W), XtName(Rc));
#endif
    buf = XmTextFieldGetString(NumEntry_TextField(Rc));
    Place = XmTextFieldGetInsertionPosition(NumEntry_TextField(Rc));
    if (buf[Place] != '.')
    {
	buf = IncDigit(buf, &Place, a);
	XmTextFieldSetString(NumEntry_TextField(Rc), buf);
	XmTextFieldSetInsertionPosition(NumEntry_TextField(Rc), Place);
	DoMath(Rc);
    }
    XtFree(buf);
}