예제 #1
0
파일: config.c 프로젝트: B-Rich/mintty
static void
charset_handler(control *ctrl, void *unused(data), int event)
{
  char *charset = new_cfg.charset;
  switch (event) {
    when EVENT_REFRESH:
      dlg_update_start(ctrl);
      dlg_listbox_clear(ctrl);
      const char *cs;
      for (int i = 0; (cs = charset_menu[i]); i++)
        dlg_listbox_add(ctrl, cs);
      dlg_update_done(ctrl);
      update_charset();
    when EVENT_UNFOCUS:
      dlg_editbox_set(ctrl, charset);
      update_locale();
    when EVENT_VALCHANGE or EVENT_SELCHANGE:
      dlg_editbox_get(ctrl, charset, sizeof cfg.charset);
      if (event == EVENT_SELCHANGE) {
        if (*charset == '(')
          *charset = 0;
        else 
          *strchr(charset, ' ') = 0;
        update_locale();
      }
  }
}
예제 #2
0
파일: config.c 프로젝트: B-Rich/mintty
static void
locale_handler(control *ctrl, void *unused(data), int event)
{
  char *locale = new_cfg.locale;
  switch (event) {
    when EVENT_REFRESH:
      dlg_update_start(ctrl);
      dlg_listbox_clear(ctrl);
      const char *l;
      for (int i = 0; (l = locale_menu[i]); i++)
        dlg_listbox_add(ctrl, l);
      dlg_update_done(ctrl);
      dlg_editbox_set(ctrl, locale);
    when EVENT_UNFOCUS:
      dlg_editbox_set(ctrl, locale);
      update_charset();
    when EVENT_VALCHANGE or EVENT_SELCHANGE:
      dlg_editbox_get(ctrl, locale, sizeof cfg.locale);
      if (event == EVENT_SELCHANGE) {
        if (*locale == '(')
          *locale = 0;
        update_charset();
      }
  }
}
예제 #3
0
파일: config.c 프로젝트: B-Rich/mintty
static void
string_handler(control *ctrl, void *data, int event)
{
  int offset = ctrl->context.i;
  int size = ctrl->editbox.context2.i;
  char *buf = &atoffset(char, data, offset);
  switch (event) {
    when EVENT_VALCHANGE:
      dlg_editbox_get(ctrl, buf, size);
    when EVENT_REFRESH:
      dlg_editbox_set(ctrl, buf);
  }
}
예제 #4
0
void
dlg_stdintbox_handler(control *ctrl, int event)
{
  int *ip = ctrl->context;
  if (event == EVENT_VALCHANGE) {
      string val = 0;
      dlg_editbox_get(ctrl, &val);
      *ip = max(0, atoi(val));
      delete(val);
  }
  else if (event == EVENT_REFRESH) {
    char buf[16];
    sprintf(buf, "%i", *ip);
    dlg_editbox_set(ctrl, buf);
  }
}
예제 #5
0
파일: config.c 프로젝트: B-Rich/mintty
static void
int_handler(control *ctrl, void *data, int event)
{
  int offset = ctrl->context.i;
  int limit = ctrl->editbox.context2.i;
  int *field = &atoffset(int, data, offset);
  char buf[16];
  switch (event) {
    when EVENT_VALCHANGE:
      dlg_editbox_get(ctrl, buf, lengthof(buf));
      *field = max(0, min(atoi(buf), limit));
    when EVENT_REFRESH:
      sprintf(buf, "%i", *field);
      dlg_editbox_set(ctrl, buf);
  }
}
예제 #6
0
파일: config.c 프로젝트: B-Rich/mintty
static void
term_handler(control *ctrl, void *unused(data), int event)
{
  switch (event) {
    when EVENT_REFRESH:
      dlg_update_start(ctrl);
      dlg_listbox_clear(ctrl);
      dlg_listbox_add(ctrl, "xterm");
      dlg_listbox_add(ctrl, "xterm-256color");
      dlg_listbox_add(ctrl, "vt100");
      dlg_update_done(ctrl);
      dlg_editbox_set(ctrl, new_cfg.term);
    when EVENT_VALCHANGE or EVENT_SELCHANGE:
      dlg_editbox_get(ctrl, new_cfg.term, sizeof cfg.term);
  }
}
예제 #7
0
파일: config.c 프로젝트: B-Rich/mintty
static void
printerbox_handler(control *ctrl, void *unused(data), int event)
{
  if (event == EVENT_REFRESH) {
    dlg_update_start(ctrl);
    dlg_listbox_clear(ctrl);
    dlg_listbox_add(ctrl, PRINTER_DISABLED_STRING);
    uint num = printer_start_enum();
    for (uint i = 0; i < num; i++)
      dlg_listbox_add(ctrl, printer_get_name(i));
    printer_finish_enum();
    dlg_editbox_set(
      ctrl, *new_cfg.printer ? new_cfg.printer : PRINTER_DISABLED_STRING
    );
    dlg_update_done(ctrl);
  }
  else if (event == EVENT_VALCHANGE || event == EVENT_SELCHANGE) {
    dlg_editbox_get(ctrl, new_cfg.printer, sizeof (cfg.printer));
    if (strcmp(new_cfg.printer, PRINTER_DISABLED_STRING) == 0)
      *new_cfg.printer = '\0';
  }
}