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; }
int edit_menu_open_cb(Ihandle* ih) { Ihandle *clipboard = IupClipboard(); Ihandle *item_paste = IupGetDialogChild(ih, "ITEM_PASTE"); Ihandle *item_cut = IupGetDialogChild(ih, "ITEM_CUT"); Ihandle *item_delete = IupGetDialogChild(ih, "ITEM_DELETE"); Ihandle *item_copy = IupGetDialogChild(ih, "ITEM_COPY"); Ihandle* multitext = IupGetDialogChild(ih, "MULTITEXT"); if (!IupGetInt(clipboard, "TEXTAVAILABLE")) IupSetAttribute(item_paste, "ACTIVE", "NO"); else IupSetAttribute(item_paste, "ACTIVE", "YES"); if (!IupGetAttribute(multitext, "SELECTEDTEXT")) { IupSetAttribute(item_cut, "ACTIVE", "NO"); IupSetAttribute(item_delete, "ACTIVE", "NO"); IupSetAttribute(item_copy, "ACTIVE", "NO"); } else { IupSetAttribute(item_cut, "ACTIVE", "YES"); IupSetAttribute(item_delete, "ACTIVE", "YES"); IupSetAttribute(item_copy, "ACTIVE", "YES"); } IupDestroy(clipboard); return IUP_DEFAULT; }
static int iMatrixExSetPasteAttrib(Ihandle *ih, const char* value) { int lin=0, col=0; Ihandle* clipboard = IupClipboard(); char* data = IupGetAttribute(clipboard, "TEXT"); IupDestroy(clipboard); if (iupStrEqualNoCase(value, "FOCUS")) IupGetIntInt(ih, "FOCUS_CELL", &lin, &col); else if (iupStrEqualNoCase(value, "MARKED")) { char *marked = IupGetAttribute(ih,"MARKED"); if (marked) { int num_lin = IupGetInt(ih, "NUMLIN"); int num_col = IupGetInt(ih, "NUMCOL"); iMatrixExCellMarkedStart(marked, num_lin, num_col, &lin, &col); } } else { if (iupStrToIntInt(value, &lin, &col, ':')!=2) return 0; } iMatrixExPasteData(ih, data, lin, col, "PASTECLIP"); return 0; }
static int Clipboard(lua_State *L) { Ihandle *ih = IupClipboard(); iuplua_plugstate(L, ih); iuplua_pushihandle_raw(L, ih); return 1; }
int item_paste_action_cb(Ihandle* item_paste) { Ihandle* multitext = IupGetDialogChild(item_paste, "MULTITEXT"); Ihandle *clipboard = IupClipboard(); IupSetAttribute(multitext, "INSERT", IupGetAttribute(clipboard, "TEXT")); IupDestroy(clipboard); return IUP_DEFAULT; }
int item_copy_action_cb(Ihandle* item_copy) { Ihandle* multitext = IupGetDialogChild(item_copy, "MULTITEXT"); Ihandle *clipboard = IupClipboard(); IupSetAttribute(clipboard, "TEXT", IupGetAttribute(multitext, "SELECTEDTEXT")); IupDestroy(clipboard); return IUP_DEFAULT; }
int item_copy_action_cb(Ihandle* item_copy) { Ihandle* canvas = IupGetDialogChild(item_copy, "CANVAS"); imImage* image = (imImage*)IupGetAttribute(canvas, "IMAGE"); Ihandle *clipboard = IupClipboard(); IupSetAttribute(clipboard, "NATIVEIMAGE", (char*)IupGetImageNativeHandle(image)); IupDestroy(clipboard); return IUP_DEFAULT; }
int edit_menu_open_cb(Ihandle* ih) { Ihandle *clipboard = IupClipboard(); Ihandle *item_paste = IupGetDialogChild(ih, "ITEM_PASTE"); if (!IupGetInt(clipboard, "IMAGEAVAILABLE")) IupSetAttribute(item_paste, "ACTIVE", "NO"); else IupSetAttribute(item_paste, "ACTIVE", "YES"); IupDestroy(clipboard); return IUP_DEFAULT; }
int item_paste_action_cb(Ihandle* item_paste) { if (save_check(item_paste)) { Ihandle* canvas = IupGetDialogChild(item_paste, "CANVAS"); imImage* old_image = (imImage*)IupGetAttribute(canvas, "IMAGE"); Ihandle *clipboard = IupClipboard(); imImage* image = IupGetNativeHandleImage(IupGetAttribute(clipboard, "NATIVEIMAGE")); IupDestroy(clipboard); if (!image) { show_error("Invalid Clipboard Data", 1); return IUP_DEFAULT; } /* we are going to support only RGB images with no alpha */ imImageRemoveAlpha(image); if (image->color_space != IM_RGB) { imImage* new_image = imImageCreateBased(image, -1, -1, IM_RGB, -1); imConvertColorSpace(image, new_image); imImageDestroy(image); image = new_image; } /* create OpenGL compatible data */ imImageGetOpenGLData(image, NULL); imImageSetAttribString(image, "FileFormat", "JPEG"); IupSetAttribute(canvas, "DIRTY", "Yes"); IupSetAttribute(canvas, "IMAGE", (char*)image); IupSetAttribute(canvas, "FILENAME", NULL); IupSetAttribute(IupGetDialog(canvas), "TITLE", "Untitled - Simple Paint"); IupUpdate(canvas); if (old_image) imImageDestroy(old_image); } return IUP_DEFAULT; }
int item_paste_action_cb(Ihandle* item_paste) { if (save_check(item_paste)) { Ihandle* canvas = IupGetDialogChild(item_paste, "CANVAS"); Ihandle *clipboard = IupClipboard(); imImage* image = IupGetNativeHandleImage(IupGetAttribute(clipboard, "NATIVEIMAGE")); IupDestroy(clipboard); if (!image) { show_error("Invalid Clipboard Data", 1); return IUP_DEFAULT; } set_new_image(canvas, image, NULL, 1); /* set dirty */ } return IUP_DEFAULT; }
static int iMatrixExSetCopyAttrib(Ihandle *ih, const char* value) { ImatExData* matex_data = (ImatExData*)iupAttribGet(ih, "_IUP_MATEX_DATA"); Iarray* data = iupArrayCreate(100, sizeof(char)); iMatrixExCopyData(matex_data, data, value); if (iupArrayCount(data)!=0) { Ihandle* clipboard; iMatrixExArrayAddChar(data, '\0'); clipboard = IupClipboard(); IupSetAttribute(clipboard, "TEXT", NULL); /* clear all data from clipboard */ IupSetAttribute(clipboard, "TEXT", (char*)iupArrayGetData(data)); IupDestroy(clipboard); } iupArrayDestroy(data); return 0; }
static int motTextSetClipboardAttrib(Ihandle *ih, const char *value) { Boolean editable; XtVaGetValues(ih->handle, XmNeditable, &editable, NULL); /* NOTE: the functions XmTextCopy, XmTextPaste and XmTextCut did not work as expected. But using IupClipboard does not catch selections made in a terminal. */ if (iupStrEqualNoCase(value, "COPY")) { Ihandle* clipboard; char *str = XmTextGetSelection(ih->handle); if (!str) return 0; clipboard = IupClipboard(); IupSetAttribute(clipboard, "TEXT", str); IupDestroy(clipboard); XtFree(str); } else if (iupStrEqualNoCase(value, "CUT")) { Ihandle* clipboard; char *str; if (!editable) return 0; str = XmTextGetSelection(ih->handle); if (!str) return 0; clipboard = IupClipboard(); IupSetAttribute(clipboard, "TEXT", str); IupDestroy(clipboard); XtFree(str); /* disable callbacks if not interactive */ if (ih->data->disable_callbacks == -1) ih->data->disable_callbacks = 0; else ih->data->disable_callbacks = 1; XmTextRemove(ih->handle); ih->data->disable_callbacks = 0; } else if (iupStrEqualNoCase(value, "PASTE")) { Ihandle* clipboard; char *str; if (!editable) return 0; clipboard = IupClipboard(); str = IupGetAttribute(clipboard, "TEXT"); /* disable callbacks */ /* disable callbacks if not interactive */ if (ih->data->disable_callbacks == -1) ih->data->disable_callbacks = 0; else ih->data->disable_callbacks = 1; XmTextRemove(ih->handle); XmTextInsert(ih->handle, XmTextGetInsertionPosition(ih->handle), str); ih->data->disable_callbacks = 0; } else if (iupStrEqualNoCase(value, "CLEAR")) { if (!editable) return 0; /* disable callbacks if not interactive */ if (ih->data->disable_callbacks == -1) ih->data->disable_callbacks = 0; else ih->data->disable_callbacks = 1; XmTextRemove(ih->handle); ih->data->disable_callbacks = 0; } return 0; }