Mercurial > pidgin.yaz
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 */ |