static int motFontDlgShow_CB(Ihandle* ih, int state) { if (state == IUP_SHOW) { Ihandle* sample = IupGetDialogChild(ih, "SAMPLE"); char* value = iupAttribGet(ih, "PREVIEWTEXT"); if (value) IupStoreAttribute(sample, "TITLE", value); value = iupAttribGet(ih, "VALUE"); if (value) { IupStoreAttribute(sample, "FONT", value); value = IupGetAttribute(sample, "FONTFACE"); motFontDlgSelectFontFace(ih, value, 1); } if (!IupGetCallback(ih, "HELP_CB")) { Ihandle* help_bt = IupGetDialogChild(ih, "HELPBUT"); IupSetAttribute(help_bt, "VISIBLE", "NO"); } } return IUP_DEFAULT; }
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 btn_key_cb (Ihandle* ih) { Ihandle *mltline = IupGetDialogChild(ih, "mltline"); Ihandle *text = IupGetDialogChild(ih, "text"); IupSetFocus(mltline); IupFlush(); return IUP_DEFAULT; }
static int btn_key_cb (Ihandle* ih) { Ihandle *mltline = IupGetDialogChild(ih, "mltline"); Ihandle *text = IupGetDialogChild(ih, "text"); IupSetFocus(mltline); IupFlush(); IupSetfAttribute(NULL, "KEY", "%d", IupGetInt(text, "VALUE")); return IUP_DEFAULT; }
static int classesList_ActionCB (Ihandle *ih, char *className, int pos, int state) { if (state == 1) { Iclass* ic; int i, attr_n, cb_n; Ihandle* listAttributes = IupGetDialogChild(ih, "listAttributes"); Ihandle* listCallbacks = IupGetDialogChild(ih, "listCallbacks"); Ihandle* labelInfo = IupGetDialogChild(ih, "labelInfo"); char **attr_names = (char **) malloc(MAX_ITEMS * sizeof(char *)); char **cb_names; attr_n = IupGetClassAttributes(className, attr_names, MAX_ITEMS); qsort(attr_names, attr_n, sizeof(char*), compare); cb_names = attr_names + attr_n; cb_n = IupGetClassCallbacks(className, cb_names, MAX_ITEMS); qsort(cb_names, cb_n, sizeof(char*), compare); /* Clear lists */ IupSetAttribute(listAttributes, "REMOVEITEM", NULL); IupSetAttribute(listCallbacks, "REMOVEITEM", NULL); /* Populate lists */ for (i = 0; i < attr_n; i++) IupSetAttribute(listAttributes, "APPENDITEM", attr_names[i]); for (i = 0; i < cb_n; i++) IupSetAttribute(listCallbacks, "APPENDITEM", cb_names[i]); ic = iupRegisterFindClass(className); /* Update labels (values) */ IupSetfAttribute(labelInfo, "TITLE", "Class Name: %s\n" "Creation Parameters: (%s)\n" "Native Type: %s\n" "Container Type: %s\n" "%s\n" "%s\n", ic->name, getParameters(ic->format), getNativeType(ic->nativetype), getChildType(ic->childtype), ic->is_interactive? "Is Interactive": "NOT Interactive", ic->has_attrib_id? "Has Id Attributes": ""); free(attr_names); } (void)pos; return IUP_DEFAULT; }
static int insertitem_cb(Ihandle *ih) { Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); Ihandle *text = IupGetDialogChild(ih, "text"); IupSetAttribute(list, "INSERTITEM3", IupGetAttribute(text, "VALUE")); return IUP_DEFAULT; }
static void motFontDlgInitFamilyList(Ihandle* ih) { int i, j = 1, count = 0; char prev[1024]="", family[1024]; Ihandle* list1 = IupGetDialogChild(ih, "LIST1"); /* this will reduce the initial number */ char**font_list_str = XListFonts(iupmot_display, "-*-*-medium-r-*-*-0-0-*-*-*-*-*-*", 32767, &count); char*backup_list[32767]; if (!font_list_str) return; memcpy(backup_list, font_list_str, count*sizeof(char*)); qsort(font_list_str, count, sizeof(char*), motFontDlgCompareStr); for (i=0; i<count; i++) { motFontGetFamily(font_list_str[i], family); if (!iupStrEqual(family, prev)) /* avoid duplicates */ { IupStoreAttributeId(list1, "", j, family); strcpy(prev, family); j++; } } IupSetAttributeId(list1, "", j, NULL); memcpy(font_list_str, backup_list, count*sizeof(char*)); XFreeFontNames(font_list_str); }
int item_saveas_action_cb(Ihandle* item_saveas) { Ihandle* multitext = IupGetDialogChild(item_saveas, "MULTITEXT"); Ihandle *filedlg = IupFileDlg(); IupSetAttribute(filedlg, "DIALOGTYPE", "SAVE"); IupSetAttribute(filedlg, "FILTER", "*.txt"); IupSetAttribute(filedlg, "FILTERINFO", "Text Files"); IupSetAttributeHandle(filedlg, "PARENTDIALOG", IupGetDialog(item_saveas)); IupPopup(filedlg, IUP_CENTERPARENT, IUP_CENTERPARENT); if (IupGetInt(filedlg, "STATUS") != -1) { Ihandle* config = (Ihandle*)IupGetAttribute(multitext, "CONFIG"); char* filename = IupGetAttribute(filedlg, "VALUE"); char* str = IupGetAttribute(multitext, "VALUE"); int count = IupGetInt(multitext, "COUNT"); write_file(filename, str, count); IupConfigRecentUpdate(config, filename); } IupDestroy(filedlg); return IUP_DEFAULT; }
static int removeitem_cb(Ihandle *ih) { Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); Ihandle *text = IupGetDialogChild(ih, "text"); IupSetAttribute(list, "REMOVEITEM", IupGetAttribute(text, "VALUE")); return IUP_DEFAULT; }
static int show_error_copy_action(Ihandle* ih) { Ihandle* multi_text = IupGetDialogChild(ih, "TEXT"); IupSetAttribute(multi_text, "SELECTION", "ALL"); IupSetAttribute(multi_text, "CLIPBOARD", "COPY"); return IUP_DEFAULT; }
int actualsize_action_cb(Ihandle* ih) { Ihandle* zoom_val = IupGetDialogChild(ih, "ZOOMVAL"); IupSetDouble(zoom_val, "VALUE", 0); zoom_update(ih, 0); return IUP_DEFAULT; }
int item_revert_action_cb(Ihandle* item_revert) { Ihandle* canvas = IupGetDialogChild(item_revert, "CANVAS"); char* filename = IupGetAttribute(canvas, "FILENAME"); open_file(item_revert, filename); return IUP_DEFAULT; }
static void TestFocusInChild(Ihandle* ih, int pos) { /* Works only in Windows, GTK will set the focus to the first child always */ if(pos==0) { Ihandle* text = IupGetDialogChild(ih, "ATEXT"); if (text) IupSetFocus(text); } else if(pos==4) { Ihandle* button = IupGetDialogChild(ih, "EEEEEBUTTON"); if (button) IupSetFocus(button); } }
int item_select_all_action_cb(Ihandle* item_select_all) { Ihandle* multitext = IupGetDialogChild(item_select_all, "MULTITEXT"); IupSetFocus(multitext); IupSetAttribute(multitext, "SELECTION", "ALL"); return IUP_DEFAULT; }
int item_open_action_cb(Ihandle* item_open) { Ihandle* multitext = IupGetDialogChild(item_open, "MULTITEXT"); Ihandle *filedlg = IupFileDlg(); IupSetAttribute(filedlg, "DIALOGTYPE", "OPEN"); IupSetAttribute(filedlg, "FILTER", "*.txt"); IupSetAttribute(filedlg, "FILTERINFO", "Text Files"); IupSetAttributeHandle(filedlg, "PARENTDIALOG", IupGetDialog(item_open)); IupPopup(filedlg, IUP_CENTERPARENT, IUP_CENTERPARENT); if (IupGetInt(filedlg, "STATUS") != -1) { char* filename = IupGetAttribute(filedlg, "VALUE"); char* str = read_file(filename); if (str) { IupSetStrAttribute(multitext, "VALUE", str); free(str); } } IupDestroy(filedlg); return IUP_DEFAULT; }
static int getvalue_cb(Ihandle *ih) { Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); Ihandle *text = IupGetDialogChild(ih, "text"); IupSetAttribute(text, "VALUE", IupGetAttribute(list, "VALUE")); return IUP_DEFAULT; }
static int selectedtext_cb(Ihandle *ih) { Ihandle *list = (Ihandle*)IupGetAttribute(IupGetDialog(ih), "_ACTIVE_LIST"); Ihandle *text = IupGetDialogChild(ih, "text"); IupSetAttribute(text, "VALUE", IupGetAttribute(list, "SELECTEDTEXT")); return IUP_DEFAULT; }
int select_file(Ihandle* parent_dlg, int is_open) { Ihandle* config = (Ihandle*)IupGetAttribute(parent_dlg, "CONFIG"); Ihandle* canvas = IupGetDialogChild(parent_dlg, "CANVAS"); const char* dir = IupConfigGetVariableStr(config, "MainWindow", "LastDirectory"); Ihandle* filedlg = IupFileDlg(); if (is_open) IupSetAttribute(filedlg, "DIALOGTYPE", "OPEN"); else { IupSetAttribute(filedlg, "DIALOGTYPE", "SAVE"); IupSetStrAttribute(filedlg, "FILE", IupGetAttribute(canvas, "FILENAME")); } IupSetAttribute(filedlg, "EXTFILTER", "Image Files|*.bmp;*.jpg;*.png;*.tif;*.tga|All Files|*.*|"); IupSetStrAttribute(filedlg, "DIRECTORY", dir); IupSetAttributeHandle(filedlg, "PARENTDIALOG", parent_dlg); IupPopup(filedlg, IUP_CENTERPARENT, IUP_CENTERPARENT); if (IupGetInt(filedlg, "STATUS") != -1) { char* filename = IupGetAttribute(filedlg, "VALUE"); if (is_open) open_file(parent_dlg, filename); else saveas_file(canvas, filename); dir = IupGetAttribute(filedlg, "DIRECTORY"); IupConfigSetVariableStr(config, "MainWindow", "LastDirectory", dir); } IupDestroy(filedlg); return IUP_DEFAULT; }
int item_revert_action_cb(Ihandle* item_revert) { Ihandle* multitext = IupGetDialogChild(item_revert, "MULTITEXT"); char* filename = IupGetAttribute(multitext, "FILENAME"); open_file(item_revert, filename); return IUP_DEFAULT; }
static int motFontDlgButtonOK_CB(Ihandle* ih) { Ihandle* sample = IupGetDialogChild(ih, "SAMPLE"); iupAttribStoreStr(IupGetDialog(ih), "TITLE", IupGetAttribute(sample, "FONT")); iupAttribSetStr(IupGetDialog(ih), "STATUS", "1"); return IUP_CLOSE; }
int canvas_action_cb(Ihandle* canvas) { int x, y, canvas_width, canvas_height; unsigned int ri, gi, bi; imImage* image; cdCanvas* cd_canvas = (cdCanvas*)IupGetAttribute(canvas, "cdCanvas"); Ihandle* config = (Ihandle*)IupGetAttribute(canvas, "CONFIG"); const char* background = IupConfigGetVariableStrDef(config, "MainWindow", "Background", "255 255 255"); IupGetIntInt(canvas, "DRAWSIZE", &canvas_width, &canvas_height); cdCanvasActivate(cd_canvas); /* draw the background */ sscanf(background, "%u %u %u", &ri, &gi, &bi); cdCanvasBackground(cd_canvas, cdEncodeColor((unsigned char)ri, (unsigned char)gi, (unsigned char)bi)); cdCanvasClear(cd_canvas); /* draw the image at the center of the canvas */ image = (imImage*)IupGetAttribute(canvas, "IMAGE"); if (image) { int view_width, view_height; Ihandle* zoom_val = IupGetDialogChild(canvas, "ZOOMVAL"); double zoom_index = IupGetDouble(zoom_val, "VALUE"); double zoom_factor = pow(2, zoom_index); float posy = IupGetFloat(canvas, "POSY"); float posx = IupGetFloat(canvas, "POSX"); view_width = (int)(zoom_factor * image->width); view_height = (int)(zoom_factor * image->height); if (canvas_width < view_width) x = (int)floor(-posx*view_width); else x = (canvas_width - view_width) / 2; if (canvas_height < view_height) { /* posy is top-bottom, CD is bottom-top. invert posy reference (YMAX-DY - POSY) */ float dy = IupGetFloat(canvas, "DY"); posy = 1.0f - dy - posy; y = (int)floor(-posy*view_height); } else y = (canvas_height - view_height) / 2; /* black line around the image */ cdCanvasForeground(cd_canvas, CD_BLACK); cdCanvasRect(cd_canvas, x - 1, x + view_width, y - 1, y + view_height); imcdCanvasPutImage(cd_canvas, image, x, y, view_width, view_height, 0, 0, 0, 0); } cdCanvasFlush(cd_canvas); return IUP_DEFAULT; }
static int GetDialogChild(lua_State *L) { Ihandle * ih = iuplua_checkihandle(L,1); const char* name = luaL_checkstring(L,2); Ihandle * child = IupGetDialogChild(ih, name); iuplua_pushihandle(L, child); 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; }
void set_new_image(Ihandle* canvas, imImage* image, const char* filename, int dirty) { imImage* old_image = (imImage*)IupGetAttribute(canvas, "IMAGE"); Ihandle* size_lbl = IupGetDialogChild(canvas, "SIZELABEL"); Ihandle* zoom_val = IupGetDialogChild(canvas, "ZOOMVAL"); if (filename) { IupSetStrAttribute(canvas, "FILENAME", filename); IupSetfAttribute(IupGetDialog(canvas), "TITLE", "%s - Simple Paint", str_filetitle(filename)); } else { IupSetAttribute(canvas, "FILENAME", NULL); IupSetAttribute(IupGetDialog(canvas), "TITLE", "Untitled - Simple Paint"); } /* 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; } /* default file format */ const char* format = imImageGetAttribString(image, "FileFormat"); if (!format) imImageSetAttribString(image, "FileFormat", "JPEG"); IupSetAttribute(canvas, "DIRTY", dirty? "Yes": "No"); IupSetAttribute(canvas, "IMAGE", (char*)image); IupSetfAttribute(size_lbl, "TITLE", "%d x %d px", image->width, image->height); if (old_image) imImageDestroy(old_image); IupSetDouble(zoom_val, "VALUE", 0); zoom_update(canvas, 0); }
/* Update callback labels */ static int callbacksList_ActionCB (Ihandle *ih, char *callName, int pos, int state) { if (state == 1) { Ihandle* listClasses = IupGetDialogChild(ih, "listClasses"); Ihandle* labelInfo = IupGetDialogChild(ih, "labelInfo"); char* className = IupGetAttribute(listClasses, IupGetAttribute(listClasses, "VALUE")); Iclass* ic = iupRegisterFindClass(className); char* format = iupClassCallbackGetFormat(ic, callName); const char* ret = strchr(format, '='); if (ret!=NULL) IupSetfAttribute(labelInfo, "TITLE", "%s %s(%s)", callName, getParameters(ret+1)); else IupSetfAttribute(labelInfo, "TITLE", "Ihandle* %s(%s)", callName, getParameters(format)); } (void)pos; return IUP_DEFAULT; }
static int motFontDlgList3_CB(Ihandle *list3, char *name, int item, int state) { (void)item; if (state) { Ihandle* sample = IupGetDialogChild(list3, "SAMPLE"); IupStoreAttribute(sample, "FONTSIZE", name); } return IUP_DEFAULT; }
int file_menu_open_cb(Ihandle* ih) { Ihandle* item_revert = IupGetDialogChild(ih, "ITEM_REVERT"); Ihandle* item_save = IupGetDialogChild(ih, "ITEM_SAVE"); Ihandle* multitext = IupGetDialogChild(ih, "MULTITEXT"); char* filename = IupGetAttribute(multitext, "FILENAME"); int dirty = IupGetInt(multitext, "DIRTY"); if (dirty) IupSetAttribute(item_save, "ACTIVE", "YES"); else IupSetAttribute(item_save, "ACTIVE", "NO"); if (dirty && filename) IupSetAttribute(item_revert, "ACTIVE", "YES"); else IupSetAttribute(item_revert, "ACTIVE", "NO"); return IUP_DEFAULT; }
void new_file(Ihandle* ih) { Ihandle* dlg = IupGetDialog(ih); Ihandle* multitext = IupGetDialogChild(dlg, "MULTITEXT"); IupSetAttribute(dlg, "TITLE", "Untitled - Simple Notepad"); IupSetAttribute(multitext, "FILENAME", NULL); IupSetAttribute(multitext, "DIRTY", "NO"); IupSetAttribute(multitext, "VALUE", ""); }