示例#1
0
/**************************************************************************
  Comparison function for qsort; i1 and i2 are pointers to an event
  (enum event_type).
**************************************************************************/
static int compar_event_message_texts(const void *i1, const void *i2)
{
  const enum event_type *j1 = i1;
  const enum event_type *j2 = i2;
  
  return mystrcasecmp(get_event_message_text(*j1),
		      get_event_message_text(*j2));
}
示例#2
0
void fc_mysql_log_chat(const char *message, const struct tile* ptile, enum event_type event, int conn_id) {
    fc_mysql_query(
	"INSERT INTO `" FC__MYSQL_CHATLOG_TABLE "` "
	"("        "created," "tile_x," "tile_y," "message," "event) "
	"VALUES (" "NOW(),"   "%d,"     "%d,"     "%s,"      "%s)",
		TILE_XY(ptile),
		message,
		get_event_message_text(event)
	);
}
示例#3
0
/**************************************************************************
...
**************************************************************************/
Widget create_messageopt_dialog(void)
{
  Widget shell, form, title, scrolled, explanation, ok, cancel, col;
  Widget colhead, space_head;
  Widget label[E_LAST];
  Widget longest_label = 0;
  Widget toggle = 0;
  int i, longest_len = 0;
  Dimension width;
  
  shell = I_T(XtCreatePopupShell("messageoptpopup", transientShellWidgetClass,
				 toplevel, NULL, 0));

  form = XtVaCreateManagedWidget("messageoptform", formWidgetClass, 
				 shell, NULL);   

  title = I_L(XtVaCreateManagedWidget("messageopttitle", labelWidgetClass,
				      form, NULL));

  explanation = I_L(XtVaCreateManagedWidget("messageoptexpl", labelWidgetClass,
					    form, NULL));

  scrolled = XtVaCreateManagedWidget("messageoptscroll", viewportWidgetClass, 
                                     form, NULL);

  col = XtVaCreateManagedWidget("messageoptcol", formWidgetClass, 
                                scrolled, NULL);

  /* space_head labels are "empty" labels in column heading which are
   * used so that we can arrange the constraints without loops.
   * They essentially act as vertical filler.
   */
  space_head = XtVaCreateManagedWidget("messageoptspacehead", labelWidgetClass,
                                       col, NULL);
  
  colhead = I_L(XtVaCreateManagedWidget("messageoptcolhead", labelWidgetClass,
                                        col, NULL));

  for(i = 0; i < E_LAST; i++)  {
    const char *text = get_event_message_text(sorted_events[i]);
    int len = strlen(text);

    label[i] = XtVaCreateManagedWidget("label", labelWidgetClass, col,
				       XtNlabel, text, XtNfromVert,
				       (i == 0) ? space_head : label[i - 1],
				       NULL);

    if (len > longest_len) {
      longest_len = len;
      longest_label = label[i];
    }

    /* 
     * The addition of a scrollbar screws things up. There must be a
     * better way to do this.
     */
    XtVaGetValues(label[i], XtNwidth, &width, NULL);
    XtVaSetValues(label[i], XtNwidth, width + 15, NULL);
  }

  XtVaGetValues(longest_label, XtNwidth, &width, NULL);
  XtVaSetValues(space_head, XtNwidth, width + 15, NULL);
  XtVaSetValues(colhead, XtNfromHoriz, space_head, NULL);

  for (i = 0; i < E_LAST; i++) {
    int j;

    for (j = 0; j < NUM_MW; j++) {
      toggle = XtVaCreateManagedWidget("toggle", toggleWidgetClass, col,
				       XtNfromHoriz,
				       (j == 0 ? space_head : toggle),
				       XtNfromVert,
				       (i == 0) ? space_head : label[i - 1],
				       NULL);
      XtAddCallback(toggle, XtNcallback, toggle_callback, NULL);
      messageopt_toggles[sorted_events[i]][j] = toggle;
    }
  }

  ok = I_L(XtVaCreateManagedWidget("messageoptokcommand",
				   commandWidgetClass,
				   form, NULL));
  
  cancel = I_L(XtVaCreateManagedWidget("messageoptcancelcommand",
				       commandWidgetClass,
				       form, NULL));
	       
  XtAddCallback(ok, XtNcallback, messageopt_ok_command_callback, 
                (XtPointer)shell);
  XtAddCallback(cancel, XtNcallback, messageopt_cancel_command_callback, 
                (XtPointer)shell);
  
  XtRealizeWidget(shell);

  xaw_horiz_center(title);
  xaw_horiz_center(explanation);

  return shell;
}