diff options
| author | Pixel <pixel@nobis-crew.org> | 2009-11-04 11:56:41 -0800 | 
|---|---|---|
| committer | Pixel <pixel@nobis-crew.org> | 2009-11-04 11:59:33 -0800 | 
| commit | d577d991b97ae2b5ee1af23641bcffc3f83af5b2 (patch) | |
| tree | 590639d50205d1bcfaff2a7d2dc6ebf3f373c7ed /iup/test/text.c | |
Initial import. Contains the im, cd and iup librairies, and a "working" Makefile for them under linux.
Diffstat (limited to 'iup/test/text.c')
| -rwxr-xr-x | iup/test/text.c | 433 | 
1 files changed, 433 insertions, 0 deletions
| diff --git a/iup/test/text.c b/iup/test/text.c new file mode 100755 index 0000000..f1c29a2 --- /dev/null +++ b/iup/test/text.c @@ -0,0 +1,433 @@ +#include <stdlib.h> +#include <stdio.h> +#include <iup.h> +#include <iupkey.h> + +static void text2multiline (Ihandle* ih, char* attribute) +{ +  Ihandle *mltline = IupGetDialogChild(ih, "mltline"); +  Ihandle *text = IupGetDialogChild(ih, "text"); +  IupSetAttribute (mltline, attribute, IupGetAttribute (text, "VALUE")); +} + +static void multiline2text (Ihandle* ih, char* attribute) +{ +  Ihandle *mltline = IupGetDialogChild(ih, "mltline"); +  Ihandle *text = IupGetDialogChild(ih, "text"); +  IupSetAttribute (text, "VALUE", IupGetAttribute(mltline, attribute)); +} + +static int btn_append_cb (Ihandle* ih) +{ +  text2multiline(ih, "APPEND");  +  return IUP_DEFAULT; +} + +static int btn_insert_cb (Ihandle* ih) +{ +  text2multiline(ih, "INSERT");  +  return IUP_DEFAULT; +} + +static int btn_clip_cb (Ihandle* ih) +{ +  text2multiline(ih, "CLIPBOARD");  +  return IUP_DEFAULT; +} + +int iupKeyNameToCode(const char *name); + +static int btn_key_cb (Ihandle* ih) +{ +  Ihandle *mltline = IupGetDialogChild(ih, "mltline"); +  Ihandle *text = IupGetDialogChild(ih, "text"); +  IupSetFocus(mltline); +  IupFlush(); +  IupSetfAttribute(NULL, "KEY", "%d", iupKeyNameToCode(IupGetAttribute(text, "VALUE"))); +  return IUP_DEFAULT; +} + +static int btn_caret_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle("text2multi"); +  if (IupGetInt(opt, "VALUE"))  +    text2multiline(ih, "CARET");  +  else  +    multiline2text(ih, "CARET"); +  return IUP_DEFAULT; +} + +static int btn_readonly_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle("text2multi"); +  if (IupGetInt(opt, "VALUE"))  +    text2multiline(ih, "READONLY");  +  else  +    multiline2text(ih, "READONLY"); +  return IUP_DEFAULT; +} + +static int btn_selection_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "SELECTION");  +  else  +    multiline2text (ih, "SELECTION"); +  return IUP_DEFAULT; +} + +static int btn_selectedtext_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "SELECTEDTEXT");  +  else  +    multiline2text (ih, "SELECTEDTEXT"); +  return IUP_DEFAULT; +} + +static int btn_overwrite_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "OVERWRITE");  +  else  +    multiline2text (ih, "OVERWRITE"); +  return IUP_DEFAULT; +} + +static int btn_active_cb(Ihandle *ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "ACTIVE");  +  else  +    multiline2text (ih, "ACTIVE"); +  return IUP_DEFAULT; +} + +static int btn_remformat_cb(Ihandle *ih) +{ +  text2multiline (ih, "REMOVEFORMATTING");  +  return IUP_DEFAULT; +} + +static int btn_nc_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "NC");  +  else  +    multiline2text (ih, "NC"); +  return IUP_DEFAULT; +} + +static int btn_value_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "VALUE");  +  else  +    multiline2text (ih, "VALUE"); +  return IUP_DEFAULT; +} + +static int btn_tabsize_cb (Ihandle* ih) +{ +  Ihandle *opt = IupGetHandle ("text2multi"); +  if (IupGetInt (opt, "VALUE"))  +    text2multiline (ih, "TABSIZE");  +  else  +    multiline2text (ih, "TABSIZE"); +  return IUP_DEFAULT; +} + +static int k_f2(void) +{ +  printf("K_F2\n"); +  return IUP_DEFAULT; +} + +static int file_open(void) +{ +  char filename[100] = ""; +  IupGetFile(filename);  // test key after dlg in multiline +  printf(filename); +  return IUP_DEFAULT; +} + +char *iupKeyCodeToName(int code); + +static int k_any(Ihandle *ih, int c) +{ +  if (iup_isprint(c)) +    printf("K_ANY(%d = %s \'%c\')\n", c, iupKeyCodeToName(c), (char)c); +  else +    printf("K_ANY(%d = %s)\n", c, iupKeyCodeToName(c)); +  printf("  CARET(%s)\n", IupGetAttribute(ih, "CARET")); +  if (c == K_cA) +    return IUP_IGNORE;   // Sound a beep in Windows +  if (c == K_cP) +  { +    file_open(); +    return IUP_IGNORE;   // Sound a beep in Windows +  } +  return IUP_CONTINUE; +} + +static int action(Ihandle *ih, int c, char* after) +{ +  if (iup_isprint(c)) +    printf("ACTION(%d = %s \'%c\', %s)\n", c, iupKeyCodeToName(c), (char)c, after); +  else +    printf("ACTION(%d = %s, %s)\n", c, iupKeyCodeToName(c), after); +  if (c == K_i) +    return IUP_IGNORE;   // OK +  if (c == K_cD) +    return IUP_IGNORE;   // Sound a beep in Windows +  if (c == K_h) +    return K_j; +  return IUP_DEFAULT; +} + +static int caret_cb(Ihandle *ih, int lin, int col, int pos) +{ +  printf("CARET_CB(%d, %d - %d)\n", lin, col, pos); +  printf("  CARET(%s - %s)\n", IupGetAttribute(ih, "CARET"), IupGetAttribute(ih, "CARETPOS")); +  return IUP_DEFAULT; +} + +static int getfocus_cb(void) +{ +  printf("GETFOCUS_CB()\n"); +  return IUP_DEFAULT; +} + +static int help_cb(void) +{ +  printf("HELP_CB()\n"); +  return IUP_DEFAULT; +} +      +static int killfocus_cb(void) +{ +  printf("KILLFOCUS_CB()\n"); +  return IUP_DEFAULT; +} + +static int leavewindow_cb(void) +{ +  printf("LEAVEWINDOW_CB()\n"); +  return IUP_DEFAULT; +} + +static int enterwindow_cb(void) +{ +  printf("ENTERWINDOW_CB()\n"); +  return IUP_DEFAULT; +} + +static int btn_def_esc_cb(void) +{ +  printf("DEFAULTESC\n"); +  return IUP_DEFAULT; +} + +static int btn_def_enter_cb(void) +{ +  printf("DEFAULTENTER\n"); +  return IUP_DEFAULT; +} + +static int dropfiles_cb(Ihandle *ih, const char* filename, int num, int x, int y) +{ +  printf("DROPFILES_CB(%s, %d, x=%d, y=%d)\n", filename, num, x, y); +  return IUP_DEFAULT; +} + +static int button_cb(Ihandle *ih,int but,int pressed,int x,int y,char* status) +{ +  int lin, col, pos; +  printf("BUTTON_CB(but=%c (%d), x=%d, y=%d [%s])\n",(char)but,pressed,x,y, status); +  pos = IupConvertXYToPos(ih, x, y); +  IupTextConvertPosToLinCol(ih, pos, &lin, &col); +  printf("         (lin=%d, col=%d, pos=%d)\n", lin, col, pos); +  return IUP_DEFAULT; +} + +static int motion_cb(Ihandle *ih,int x,int y,char* status) +{ +  int lin, col, pos; +  printf("MOTION_CB(x=%d, y=%d [%s])\n",x,y, status); +  pos = IupConvertXYToPos(ih, x, y); +  IupTextConvertPosToLinCol(ih, pos, &lin, &col); +  printf("         (lin=%d, col=%d, pos=%d)\n", lin, col, pos); +  return IUP_DEFAULT; +} + +void TextTest(void) +{ +  int formatting = 0; +  Ihandle *dlg, *mltline, *text, *opt, *btn_def_enter, *btn_def_esc, *btn_active, *btn_overwrite, +          *btn_append, *btn_insert, *btn_caret, *btn_clip, *btn_key, *btn_readonly, *btn_tabsize, +          *btn_selection, *btn_selectedtext, *btn_nc, *btn_value, *lbl, *formattag, *btn_remformat; + +//  IupSetGlobal("UTF8AUTOCONVERT", "NO"); + +  text = IupText (NULL); +  IupSetAttribute(text, "EXPAND", "HORIZONTAL"); +//  IupSetAttribute(text, "VALUE", "Single Line Text"); +  IupSetAttribute(text, "CUEBANNER", "Enter Attribute Value Here"); +  IupSetAttribute(text, "NAME", "text"); +  IupSetAttribute(text, "TIP", "Attribute Value"); + +  opt = IupToggle("Set/Get", NULL); +  IupSetAttribute (opt, "VALUE", "ON"); +  IupSetHandle ("text2multi", opt); + +  mltline = IupMultiLine(NULL);   +//  mltline = IupText(NULL);   +//  IupSetAttribute(mltline, "MULTILINE", "YES"); +  IupSetAttribute(mltline, "NAME", "mltline"); + +  IupSetCallback(mltline, "DROPFILES_CB", (Icallback)dropfiles_cb); +  IupSetCallback(mltline, "BUTTON_CB",    (Icallback)button_cb); +//  IupSetCallback(mltline, "MOTION_CB",    (Icallback)motion_cb); +  IupSetCallback(mltline, "HELP_CB",      (Icallback)help_cb); +  IupSetCallback(mltline, "GETFOCUS_CB",  (Icallback)getfocus_cb);  +  IupSetCallback(mltline, "KILLFOCUS_CB", (Icallback)killfocus_cb); +  IupSetCallback(mltline, "ENTERWINDOW_CB", (Icallback)enterwindow_cb); +  IupSetCallback(mltline, "LEAVEWINDOW_CB", (Icallback)leavewindow_cb); +  //IupSetCallback(mltline, "ACTION", (Icallback)action); +  IupSetCallback(mltline, "K_ANY", (Icallback)k_any); +  IupSetCallback(mltline, "K_F2", (Icallback)k_f2); +  IupSetCallback(mltline, "CARET_CB", (Icallback)caret_cb); +//  IupSetAttribute(mltline, "WORDWRAP", "YES"); +//  IupSetAttribute(mltline, "BORDER", "NO"); +//  IupSetAttribute(mltline, "AUTOHIDE", "YES"); +//  IupSetAttribute(mltline, "BGCOLOR", "255 0 128"); +//  IupSetAttribute(mltline, "FGCOLOR", "0 128 192"); +//  IupSetAttribute(mltline, "PADDING", "15x15"); +//  IupSetAttribute(mltline, "VALUE", "First Line\nSecond Line Big Big Big\nThird Line\nmore\nmore\nçãõáóé"); // UTF-8 +  IupSetAttribute(mltline, "VALUE", "First Line\nSecond Line Big Big Big\nThird Line\nmore\nmore\nçãõáóé"); // Windows-1252 +  IupSetAttribute(mltline, "TIP", "First Line\nSecond Line\nThird Line"); +//  IupSetAttribute(mltline, "FONT", "Helvetica, 14"); +//  IupSetAttribute(mltline, "MASK", IUP_MASK_FLOAT); +//  IupSetAttribute(mltline, "FILTER", "UPPERCASE"); +//  IupSetAttribute(mltline, "ALIGNMENT", "ACENTER"); + +  /* Turns on multiline expand and text horizontal expand */ +  IupSetAttribute(mltline, "SIZE", "80x40"); +  IupSetAttribute(mltline, "EXPAND", "YES"); + +  formatting = 0; +  if (formatting)          /* just to make easier to comment this section */ +  { +    /* formatting before Map */ +    IupSetAttribute(mltline, "FORMATTING", "YES"); + +    formattag = IupUser(); +    IupSetAttribute(formattag, "ALIGNMENT", "CENTER"); +    IupSetAttribute(formattag, "SPACEAFTER", "10"); +    IupSetAttribute(formattag, "FONTSIZE", "24"); +    IupSetAttribute(formattag, "SELECTION", "3,1:3,50"); +    IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag); + +    formattag = IupUser(); +    IupSetAttribute(formattag, "BGCOLOR", "255 128 64"); +    IupSetAttribute(formattag, "UNDERLINE", "SINGLE"); +    IupSetAttribute(formattag, "WEIGHT", "BOLD"); +    IupSetAttribute(formattag, "SELECTION", "3,7:3,11"); +    IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag); +  } + +  /* Creates buttons */ +//  btn_append = IupButton ("APPEND çãõáóé", NULL);   // Windows-1252 +//  btn_append = IupButton ("APPEND çãõáóé", NULL);  // UTF-8 +  btn_append = IupButton ("&APPEND", NULL); +  btn_insert = IupButton ("INSERT", NULL); +  btn_caret = IupButton ("CARET", NULL); +  btn_readonly = IupButton ("READONLY", NULL); +  btn_selection = IupButton ("SELECTION", NULL); +  btn_selectedtext = IupButton ("SELECTEDTEXT", NULL); +  btn_nc = IupButton ("NC", NULL); +  btn_value = IupButton ("VALUE", NULL); +  btn_tabsize = IupButton ("TABSIZE", NULL); +  btn_clip = IupButton ("CLIPBOARD", NULL); +  btn_key = IupButton ("KEY", NULL); +  btn_def_enter = IupButton ("Default Enter", NULL); +  btn_def_esc = IupButton ("Default Esc", NULL); +  btn_active = IupButton("ACTIVE", NULL); +  btn_remformat = IupButton("REMOVEFORMATTING", NULL); +  btn_overwrite = IupButton("OVERWRITE", NULL); + +  IupSetAttribute(btn_append, "TIP", "First Line\nSecond Line\nThird Line"); + +  /* Registers callbacks */ +  IupSetCallback(btn_append, "ACTION", (Icallback) btn_append_cb); +  IupSetCallback(btn_insert, "ACTION", (Icallback) btn_insert_cb); +  IupSetCallback(btn_caret, "ACTION", (Icallback) btn_caret_cb); +  IupSetCallback(btn_readonly, "ACTION", (Icallback) btn_readonly_cb); +  IupSetCallback(btn_selection, "ACTION", (Icallback) btn_selection_cb); +  IupSetCallback(btn_selectedtext, "ACTION", (Icallback) btn_selectedtext_cb); +  IupSetCallback(btn_nc, "ACTION", (Icallback) btn_nc_cb); +  IupSetCallback(btn_value, "ACTION", (Icallback) btn_value_cb); +  IupSetCallback(btn_tabsize, "ACTION", (Icallback) btn_tabsize_cb); +  IupSetCallback(btn_clip, "ACTION", (Icallback) btn_clip_cb); +  IupSetCallback(btn_key, "ACTION", (Icallback) btn_key_cb); +  IupSetCallback(btn_def_enter, "ACTION", (Icallback) btn_def_enter_cb); +  IupSetCallback(btn_def_esc, "ACTION", (Icallback) btn_def_esc_cb); +  IupSetCallback(btn_active, "ACTION", (Icallback) btn_active_cb); +  IupSetCallback(btn_remformat, "ACTION", (Icallback) btn_remformat_cb); +  IupSetCallback(btn_overwrite, "ACTION", (Icallback) btn_overwrite_cb); + +  lbl = IupLabel("&Multiline:"); +  IupSetAttribute(lbl, "PADDING", "2x2"); + +  /* Creates dlg */ +  dlg = IupDialog(IupVbox(lbl, +                          mltline,  +                          IupHbox (text, opt, NULL), +                          IupHbox (btn_append, btn_insert, btn_caret, btn_readonly, btn_selection, NULL), +                          IupHbox (btn_selectedtext, btn_nc, btn_value, btn_tabsize, btn_clip, btn_key, NULL),  +                          IupHbox (btn_def_enter, btn_def_esc, btn_active, btn_remformat, btn_overwrite, NULL),  +                          NULL)); +  IupSetCallback(dlg, "K_cO", (Icallback)file_open); +  IupSetAttribute(dlg, "TITLE", "IupText Test"); +  IupSetAttribute(dlg, "MARGIN", "10x10"); +  IupSetAttribute(dlg, "GAP", "5"); +  IupSetAttributeHandle(dlg, "DEFAULTENTER", btn_def_enter); +  IupSetAttributeHandle(dlg, "DEFAULTESC", btn_def_esc); +  IupSetAttribute(dlg, "SHRINK", "YES"); + +  if (formatting)          /* just to make easier to comment this section */ +  { +    IupMap(dlg); +    /* formatting after Map */ + +    formattag = IupUser(); +    IupSetAttribute(formattag, "ITALIC", "YES"); +    IupSetAttribute(formattag, "STRIKEOUT", "YES"); +    IupSetAttribute(formattag, "SELECTION", "2,1:2,12"); +    IupSetAttribute(mltline, "ADDFORMATTAG_HANDLE", (char*)formattag); +  } + +  /* Shows dlg in the center of the screen */ +  IupShowXY(dlg, IUP_CENTER, IUP_CENTER); +} + +#ifndef BIG_TEST +int main(int argc, char* argv[]) +{ +  IupOpen(&argc, &argv); + +  TextTest(); + +  IupMainLoop(); + +  IupClose(); + +  return EXIT_SUCCESS; +} +#endif | 
