comparison src/dialogs.c @ 3035:0f1766887ddd

[gaim-migrate @ 3048] Maybe this totally sucks, maybe it doesn't. If you like this, please let me know. If you have geniunely sincere constructive criticism, then approach me in a nic way. If you think it sucks then you can build yourself a wee little bridge and get the hell on over it. committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Wed, 13 Mar 2002 04:06:23 +0000
parents f42b738368bb
children 910fbed99c2e
comparison
equal deleted inserted replaced
3034:4f43ccaf4360 3035:0f1766887ddd
80 #include "pixmaps/ab.xpm" 80 #include "pixmaps/ab.xpm"
81 81
82 #define PATHSIZE 1024 82 #define PATHSIZE 1024
83 83
84 int smiley_array[FACE_TOTAL]; 84 int smiley_array[FACE_TOTAL];
85 char *current_smiley;
85 GdkColor bgcolor; 86 GdkColor bgcolor;
86 GdkColor fgcolor; 87 GdkColor fgcolor;
87 88
88 static GtkWidget *imdialog = NULL; /*I only want ONE of these :) */ 89 static GtkWidget *imdialog = NULL; /*I only want ONE of these :) */
89 static GtkWidget *infodialog = NULL; 90 static GtkWidget *infodialog = NULL;
3180 dialogwindows = g_list_remove(dialogwindows, c->smiley_dialog); 3181 dialogwindows = g_list_remove(dialogwindows, c->smiley_dialog);
3181 gtk_widget_destroy(c->smiley_dialog); 3182 gtk_widget_destroy(c->smiley_dialog);
3182 c->smiley_dialog = NULL; 3183 c->smiley_dialog = NULL;
3183 } 3184 }
3184 3185
3186 void set_smiley(GtkWidget *w, char *face)
3187 {
3188 current_smiley = face;
3189 }
3190
3185 void set_smiley_array(GtkWidget *widget, int smiley_type) 3191 void set_smiley_array(GtkWidget *widget, int smiley_type)
3186 { 3192 {
3187 int i; 3193 int i;
3188 3194
3189 for (i = 0; i < FACE_TOTAL; i++) 3195 for (i = 0; i < FACE_TOTAL; i++)
3197 void insert_smiley_text(GtkWidget *widget, struct conversation *c) 3203 void insert_smiley_text(GtkWidget *widget, struct conversation *c)
3198 { 3204 {
3199 char *smiley_text; 3205 char *smiley_text;
3200 int i; 3206 int i;
3201 3207
3202 for (i = 0; i < FACE_TOTAL; i++) 3208 if (c->gc->prpl->smiley_list) {
3203 if (smiley_array[i] == 1) 3209 smiley_text = strdup(current_smiley);
3210 } else {
3211
3212 for (i = 0; i < FACE_TOTAL; i++)
3213 if (smiley_array[i] == 1)
3214 break;
3215
3216 switch (i) {
3217 case (FACE_ANGEL):
3218 smiley_text = g_strndup("O:-)", strlen("O:-)"));
3204 break; 3219 break;
3205 3220 case (FACE_BIGSMILE):
3206 switch (i) { 3221 smiley_text = g_strndup(":-D", strlen(":-D"));
3207 case (FACE_ANGEL): 3222 break;
3208 smiley_text = g_strndup("O:-)", strlen("O:-)")); 3223 case (FACE_BURP):
3209 break; 3224 smiley_text = g_strndup(":-!", strlen(":-!"));
3210 case (FACE_BIGSMILE): 3225 break;
3211 smiley_text = g_strndup(":-D", strlen(":-D")); 3226 case (FACE_CROSSEDLIPS):
3212 break; 3227 smiley_text = g_strndup(":-X", strlen(":-X"));
3213 case (FACE_BURP): 3228 break;
3214 smiley_text = g_strndup(":-!", strlen(":-!")); 3229 case (FACE_CRY):
3215 break; 3230 smiley_text = g_strndup(":'(", strlen(":'("));
3216 case (FACE_CROSSEDLIPS): 3231 break;
3217 smiley_text = g_strndup(":-X", strlen(":-X")); 3232 case (FACE_EMBARRASSED):
3218 break; 3233 smiley_text = g_strndup(":-[", strlen(":-["));
3219 case (FACE_CRY): 3234 break;
3220 smiley_text = g_strndup(":'(", strlen(":'(")); 3235 case (FACE_KISS):
3221 break; 3236 smiley_text = g_strndup(":-*", strlen(":-*"));
3222 case (FACE_EMBARRASSED): 3237 break;
3223 smiley_text = g_strndup(":-[", strlen(":-[")); 3238 case (FACE_MONEYMOUTH):
3224 break; 3239 smiley_text = g_strndup(":-$", strlen(":-$"));
3225 case (FACE_KISS): 3240 break;
3226 smiley_text = g_strndup(":-*", strlen(":-*")); 3241 case (FACE_SAD):
3227 break; 3242 smiley_text = g_strndup(":-(", strlen(":-("));
3228 case (FACE_MONEYMOUTH): 3243 break;
3229 smiley_text = g_strndup(":-$", strlen(":-$")); 3244 case (FACE_SCREAM):
3230 break; 3245 smiley_text = g_strndup("=-O", strlen("=-O"));
3231 case (FACE_SAD): 3246 break;
3232 smiley_text = g_strndup(":-(", strlen(":-(")); 3247 case (FACE_SMILE):
3233 break; 3248 smiley_text = g_strndup(":-)", strlen(":-)"));
3234 case (FACE_SCREAM): 3249 break;
3235 smiley_text = g_strndup("=-O", strlen("=-O")); 3250 case (FACE_SMILE8):
3236 break; 3251 smiley_text = g_strndup("8-)", strlen("8-)"));
3237 case (FACE_SMILE): 3252 break;
3238 smiley_text = g_strndup(":-)", strlen(":-)")); 3253 case (FACE_THINK):
3239 break; 3254 smiley_text = g_strndup(":-/", strlen(":-/"));
3240 case (FACE_SMILE8): 3255 break;
3241 smiley_text = g_strndup("8-)", strlen("8-)")); 3256 case (FACE_TONGUE):
3242 break; 3257 smiley_text = g_strndup(":-P", strlen(":-p"));
3243 case (FACE_THINK): 3258 break;
3244 smiley_text = g_strndup(":-/", strlen(":-/")); 3259 case (FACE_WINK):
3245 break; 3260 smiley_text = g_strndup(";-)", strlen(";-)"));
3246 case (FACE_TONGUE): 3261 break;
3247 smiley_text = g_strndup(":-P", strlen(":-p")); 3262 case (FACE_YELL):
3248 break; 3263 smiley_text = g_strndup(">:o", strlen(">:o"));
3249 case (FACE_WINK): 3264 break;
3250 smiley_text = g_strndup(";-)", strlen(";-)")); 3265 default:
3251 break; 3266 smiley_text = g_strndup(":-)", strlen(":-)"));
3252 case (FACE_YELL): 3267 break;
3253 smiley_text = g_strndup(">:o", strlen(">:o")); 3268 }
3254 break; 3269 }
3255 default: 3270
3256 smiley_text = g_strndup(":-)", strlen(":-)"));
3257 break;
3258 }
3259 3271
3260 /* surround(c->entry, smiley_text, ""); */ 3272 /* surround(c->entry, smiley_text, ""); */
3261 3273
3262 if (GTK_OLD_EDITABLE(c->entry)->has_selection) { 3274 if (GTK_OLD_EDITABLE(c->entry)->has_selection) {
3263 int finish = GTK_OLD_EDITABLE(c->entry)->selection_end_pos; 3275 int finish = GTK_OLD_EDITABLE(c->entry)->selection_end_pos;
3274 3286
3275 return; 3287 return;
3276 } 3288 }
3277 3289
3278 static void toolbar_add_smiley(struct conversation *c, GtkWidget *bar, char **xpm, GtkWidget *win, 3290 static void toolbar_add_smiley(struct conversation *c, GtkWidget *bar, char **xpm, GtkWidget *win,
3279 int face) 3291 char *face)
3280 { 3292 {
3281 GtkWidget *tpm; 3293 GtkWidget *tpm;
3282 GdkBitmap *mask; 3294 GdkBitmap *mask;
3283 GdkPixmap *dpm; 3295 GdkPixmap *dpm;
3284 GtkWidget *button; 3296 GtkWidget *button;
3288 gtk_widget_show(tpm); 3300 gtk_widget_show(tpm);
3289 gdk_pixmap_unref(dpm); 3301 gdk_pixmap_unref(dpm);
3290 gdk_bitmap_unref(mask); 3302 gdk_bitmap_unref(mask);
3291 button = 3303 button =
3292 gtk_toolbar_append_element(GTK_TOOLBAR(bar), GTK_TOOLBAR_CHILD_BUTTON, NULL, NULL, NULL, 3304 gtk_toolbar_append_element(GTK_TOOLBAR(bar), GTK_TOOLBAR_CHILD_BUTTON, NULL, NULL, NULL,
3293 NULL, tpm, GTK_SIGNAL_FUNC(set_smiley_array), (int *)face); 3305 NULL, tpm, GTK_SIGNAL_FUNC(set_smiley), (char *)face);
3294 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(insert_smiley_text), c); 3306 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(insert_smiley_text), c);
3295 3307
3296 /* these look really weird with borders */ 3308 /* these look really weird with borders */
3297 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); 3309 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
3298 } 3310 }
3299 3311
3300 void show_smiley_dialog(struct conversation *c, GtkWidget *widget) 3312 void show_smiley_dialog(struct conversation *c, GtkWidget *widget)
3301 { 3313 {
3302 GtkWidget *dialog; 3314 GtkWidget *dialog;
3303 GtkWidget *vbox, *smiley_box_1, *smiley_box_2, *smiley_box_3, *smiley_box_4; 3315 GtkWidget *vbox, *smiley_box = NULL;
3304 GtkWidget *win; 3316 GtkWidget *win;
3305 GtkWidget *bbox; 3317 GtkWidget *bbox;
3318 GSList *smilies;
3319 int smiley_count = 0;
3306 3320
3307 if (c->smiley_dialog) 3321 if (c->smiley_dialog)
3308 return; 3322 return;
3309 3323
3310 win = c->window; 3324 win = c->window;
3316 3330
3317 /* setup boxes */ 3331 /* setup boxes */
3318 vbox = gtk_vbox_new(TRUE, 5); 3332 vbox = gtk_vbox_new(TRUE, 5);
3319 bbox = gtk_hbox_new(FALSE, 5); 3333 bbox = gtk_hbox_new(FALSE, 5);
3320 3334
3321 smiley_box_1 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3322 smiley_box_2 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3323 smiley_box_3 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3324 smiley_box_4 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3325 3335
3326 /* setup buttons */ 3336 /* setup buttons */
3327 3337
3328 /* pack buttons */ 3338 /* pack buttons */
3329 toolbar_add_smiley(c, smiley_box_1, angel_xpm, win, FACE_ANGEL); 3339 if (c->gc->prpl->smiley_list == NULL) {
3330 toolbar_add_smiley(c, smiley_box_1, bigsmile_xpm, win, FACE_BIGSMILE); 3340 smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3331 toolbar_add_smiley(c, smiley_box_1, burp_xpm, win, FACE_BURP); 3341 gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0);
3332 toolbar_add_smiley(c, smiley_box_1, crossedlips_xpm, win, FACE_CROSSEDLIPS); 3342
3333 3343 toolbar_add_smiley(c, smiley_box, angel_xpm, win, "O:-)");
3334 toolbar_add_smiley(c, smiley_box_2, cry_xpm, win, FACE_CRY); 3344 toolbar_add_smiley(c, smiley_box, bigsmile_xpm, win, ":-D");
3335 toolbar_add_smiley(c, smiley_box_2, embarrassed_xpm, win, FACE_EMBARRASSED); 3345 toolbar_add_smiley(c, smiley_box, burp_xpm, win, ":-!");
3336 toolbar_add_smiley(c, smiley_box_2, kiss_xpm, win, FACE_KISS); 3346 toolbar_add_smiley(c, smiley_box, crossedlips_xpm, win, ":-X");
3337 toolbar_add_smiley(c, smiley_box_2, moneymouth_xpm, win, FACE_MONEYMOUTH); 3347
3338 3348 smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3339 toolbar_add_smiley(c, smiley_box_3, sad_xpm, win, FACE_SAD); 3349 gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0);
3340 toolbar_add_smiley(c, smiley_box_3, scream_xpm, win, FACE_SCREAM); 3350
3341 toolbar_add_smiley(c, smiley_box_3, smile_xpm, win, FACE_SMILE); 3351 toolbar_add_smiley(c, smiley_box, cry_xpm, win, ":'(");
3342 toolbar_add_smiley(c, smiley_box_3, smile8_xpm, win, FACE_SMILE8); 3352 toolbar_add_smiley(c, smiley_box, embarrassed_xpm, win, ":-[");
3343 3353 toolbar_add_smiley(c, smiley_box, kiss_xpm, win, ":-*");
3344 toolbar_add_smiley(c, smiley_box_4, think_xpm, win, FACE_THINK); 3354 toolbar_add_smiley(c, smiley_box, moneymouth_xpm, win, ":-$");
3345 toolbar_add_smiley(c, smiley_box_4, tongue_xpm, win, FACE_TONGUE); 3355
3346 toolbar_add_smiley(c, smiley_box_4, wink_xpm, win, FACE_WINK); 3356 smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3347 toolbar_add_smiley(c, smiley_box_4, yell_xpm, win, FACE_YELL); 3357 gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0);
3348 3358
3349 /* pack containers */ 3359 toolbar_add_smiley(c, smiley_box, sad_xpm, win, ":-(");
3350 gtk_box_pack_start(GTK_BOX(vbox), smiley_box_1, TRUE, TRUE, 0); 3360 toolbar_add_smiley(c, smiley_box, scream_xpm, win, "=-O");
3351 gtk_box_pack_start(GTK_BOX(vbox), smiley_box_2, TRUE, TRUE, 0); 3361 toolbar_add_smiley(c, smiley_box, smile_xpm, win, ":-)");
3352 gtk_box_pack_start(GTK_BOX(vbox), smiley_box_3, TRUE, TRUE, 0); 3362 toolbar_add_smiley(c, smiley_box, smile8_xpm, win, "8-)");
3353 gtk_box_pack_start(GTK_BOX(vbox), smiley_box_4, TRUE, TRUE, 0); 3363
3364 smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3365 gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0);
3366
3367 toolbar_add_smiley(c, smiley_box, think_xpm, win, ":-/");
3368 toolbar_add_smiley(c, smiley_box, tongue_xpm, win, ":-P");
3369 toolbar_add_smiley(c, smiley_box, wink_xpm, win, ";-)");
3370 toolbar_add_smiley(c, smiley_box, yell_xpm, win, ">:o");
3371 } else {
3372
3373 smilies = c->gc->prpl->smiley_list();
3374
3375 while (smilies) {
3376 struct _prpl_smiley *smile =
3377 (struct _prpl_smiley *)smilies->data;
3378
3379 if ((!(smiley_count % 4)) && (smiley_count > 0)) {
3380 smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
3381 gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0);
3382 }
3383
3384 if (smile->show) {
3385 toolbar_add_smiley(c, smiley_box, smile->xpm, win, smile->key);
3386 smiley_count++;
3387 }
3388
3389 smilies = g_slist_next(smilies);
3390
3391 }
3392 }
3393
3354 3394
3355 gtk_container_add(GTK_CONTAINER(dialog), vbox); 3395 gtk_container_add(GTK_CONTAINER(dialog), vbox);
3356 gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); 3396 gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
3357 3397
3358 /* connect signals */ 3398 /* connect signals */