123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /* $Id: bitmaps.c,v 1.5 2001/04/25 16:37:21 kilobug Exp $ */
- #include "mclient.h"
- #define SEND_MESSAGE "ns_send_msg"
- typedef struct _msg_t
- {
- GSList *recv;
- GtkWidget *dialog;
- GtkWidget *entry;
- } msg_t;
- static void bmp_msg_do_send(GtkWidget *wid, msg_t *msg)
- {
- GSList *l;
- char buf[MYSQL_BUFFER_SIZE];
- for (l = msg->recv; l != NULL; l = l->next)
- {
- g_snprintf(buf, MYSQL_BUFFER_SIZE, "%s %s '%s'",
- SEND_MESSAGE, (char *) l->data,
- gtk_entry_get_text(GTK_ENTRY(msg->entry)));
- system(buf);
- }
- }
- static void bmp_msg_free(msg_t *msg)
- {
- GSList *l;
- for (l = msg->recv; l != NULL; l = l->next)
- g_free(l->data);
- g_slist_free(msg->recv);
- g_free(msg);
- }
- void bmp_send_message(GtkWidget *wid, void *data)
- {
- GList *bmps, *l;
- msg_t *msg;
- int id;
- bmps = GTK_CLIST(gl_config->bmpl)->selection;
- if (bmps == NULL)
- return;
- msg = g_malloc(sizeof(*msg));
- for (msg->recv = NULL, l = bmps; l != NULL; l = l->next)
- {
- id = *((int *) gtk_clist_get_row_data(GTK_CLIST(gl_config->bmpl),
- GPOINTER_TO_INT(l->data)));
- msg->recv = g_slist_prepend(msg->recv,
- mysql_get_str(gl_config->mysql,
- "SELECT login FROM Bitmaps "
- "WHERE id=%d", id));
- }
- msg->entry = create_entry("", 200);
- msg->dialog = create_dialog("Envoyer un message", msg->entry,
- "Envoyer", "Annuler", bmp_msg_do_send,
- msg, destroy_widget);
- gtk_object_set_data_full(GTK_OBJECT(msg->dialog), "42", msg,
- (GtkDestroyNotify) bmp_msg_free);
- gtk_signal_connect(GTK_OBJECT(msg->entry), "activate",
- bmp_msg_do_send, msg);
- gtk_signal_connect_after(GTK_OBJECT(msg->entry), "activate",
- destroy_widget, msg->dialog);
- gtk_widget_show(msg->dialog);
- }
- int bmp_sort(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2)
- {
- return clist_compare_str(clist, ptr1, ptr2);
- }
- static char *bmp_statut(const char *val, void *data)
- {
- switch (atoi(val))
- {
- case STATUT_ABSENT:
- return "Absent";
- case STATUT_PRESENT:
- return "Présent";
- case STATUT_ZLOCKE:
- return "Zlocké";
- }
- return "Inconnu";
- }
- static char *bmp_type(const char *val, void *data)
- {
- switch (atoi(val))
- {
- case 0:
- return "Bitmap";
- default:
- return "Organisateur";
- }
- }
- static const char *bmp_colors[] =
- { "#900000", "#009000", "#000090",
- "#FF0000", "#00FF00", "#0000FF" };
- static GdkColor *bmp_color(const sql_list_t *l, int id, void *data)
- {
- GdkColor *col = NULL;
- int i;
- if (mysql_get_int(gl_config->mysql,
- "SELECT staff FROM Bitmaps WHERE id=%d", id))
- i = 3;
- else
- i = 0;
- switch (mysql_get_int(gl_config->mysql,
- "SELECT statut FROM Bitmaps WHERE id=%d", id))
- {
- case STATUT_ABSENT:
- i += 0;
- break;
- case STATUT_ZLOCKE:
- i += 1;
- break;
- case STATUT_PRESENT:
- i += 2;
- break;
- }
- col = g_malloc(sizeof(*col));
- gdk_color_parse(bmp_colors[i], col);
- gdk_color_alloc(gdk_colormap_get_system(), col);
- return col;
- }
- void bmp_refresh(GtkWidget *wid, void *data)
- {
- static sql_list_t *lst = NULL;
- if (lst == NULL)
- {
- lst = mysql_list_make("SELECT * FROM Bitmaps WHERE 1",
- 8, GTK_CLIST(gl_config->bmpl),
- 6, bmp_statut, NULL, NULL,
- 7, bmp_type, NULL, NULL, -1);
- mysql_list_set_color_func(lst, bmp_color, NULL);
- }
- mysql_list_refresh(lst, NULL);
- }
|