comparison src/ui.h @ 4359:5fb47ec9bfe4

[gaim-migrate @ 4625] Wow, okay, where to begin with this one ;) I rewrote the whole conversation backend. It is now core/UI split. Here's how it works.. Every conversation is represented by a gaim_conversation structure. This branches out into gaim_im and gaim_chat structures. Every conversation lives in (well, normally, but it doesn't have to) a gaim_window structure. This is a _CORE_ representation of a window. There can be multiple gaim_window structures around. The gaim_window and gaim_conversation structures have UI-specific operation structures associated with them. At the moment, the only UI is GTK+, and this will be for some time. Don't start thinking you can write a QT UI now. It's just not going to happen. Everything that is done on a conversation is done through the core API. This API does core processing and then calls the UI operations for the rendering and anything else. Now, what does this give the user? - Multiple windows. - Multiple tabs per window. - Draggable tabs. - Send As menu is moved to the menubar. - Menubar for chats. - Some very cool stuff in the future, like replacing, say, IRC chat windows with an X-Chat interface, or whatever. - Later on, customizable window/conversation positioning. For developers: - Fully documented API - Core/UI split - Variable checking and mostly sane handling of incorrect variables. - Logical structure to conversations, both core and UI. - Some very cool stuff in the future, like replacing, say, IRC chat windows with an X-Chat interface, or whatever. - Later on, customizable window/conversation positioning. - Oh yeah, and the beginning of a stock icon system. Now, there are things that aren't there yet. You will see tabs even if you have them turned off. This will be fixed in time. Also, the preferences will change to work with the new structure. I'm starting school in 2 days, so it may not be done immediately, but hopefully in the next week. Enjoy! committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Mon, 20 Jan 2003 09:10:23 +0000
parents 0c68d402f59f
children 8067614e49e4
comparison
equal deleted inserted replaced
4358:2b8abf7f9cc1 4359:5fb47ec9bfe4
27 #endif 27 #endif
28 28
29 #include <gtk/gtk.h> 29 #include <gtk/gtk.h>
30 #include <gdk-pixbuf/gdk-pixbuf.h> 30 #include <gdk-pixbuf/gdk-pixbuf.h>
31 31
32 #include "gtkconv.h"
33 #include "gtkutils.h"
34 #include "stock.h"
35
32 #define GAIM_DIALOG(x) x = gtk_window_new(GTK_WINDOW_TOPLEVEL); \ 36 #define GAIM_DIALOG(x) x = gtk_window_new(GTK_WINDOW_TOPLEVEL); \
33 gtk_window_set_type_hint(GTK_WINDOW(x), GDK_WINDOW_TYPE_HINT_DIALOG) 37 gtk_window_set_type_hint(GTK_WINDOW(x), GDK_WINDOW_TYPE_HINT_DIALOG)
34 #define GAIM_WINDOW_ICONIFIED(x) (gdk_window_get_state(GTK_WIDGET(x)->window) & GDK_WINDOW_STATE_ICONIFIED) 38 #define GAIM_WINDOW_ICONIFIED(x) (gdk_window_get_state(GTK_WIDGET(x)->window) & GDK_WINDOW_STATE_ICONIFIED)
35 39
36 #define DEFAULT_FONT_FACE "Helvetica" 40 #define DEFAULT_FONT_FACE "Helvetica"
92 int height; 96 int height;
93 int entry_height; 97 int entry_height;
94 }; 98 };
95 99
96 /* struct buddy_chat went away and got merged with this. */ 100 /* struct buddy_chat went away and got merged with this. */
97 struct conversation { 101 #if 0
102 struct gaim_conversation {
98 struct gaim_connection *gc; 103 struct gaim_connection *gc;
99 104
100 /* stuff used for both IM and chat */ 105 /* stuff used for both IM and chat */
101 GtkWidget *window; 106 GtkWidget *window;
102 char name[80]; 107 char name[80];
185 GtkTextBuffer *entry_buffer; 190 GtkTextBuffer *entry_buffer;
186 GtkWidget *entry; 191 GtkWidget *entry;
187 192
188 GtkWidget *tab_label; 193 GtkWidget *tab_label;
189 }; 194 };
195 #endif
190 196
191 struct log_conversation { 197 struct log_conversation {
192 char name[80]; 198 char name[80];
193 char filename[512]; 199 char filename[512];
194 struct log_conversation *next; 200 struct log_conversation *next;
298 extern GtkWidget *bpmenu; 304 extern GtkWidget *bpmenu;
299 extern GtkWidget *blist; 305 extern GtkWidget *blist;
300 extern int docklet_count; 306 extern int docklet_count;
301 307
302 /* Globals in buddy_chat.c */ 308 /* Globals in buddy_chat.c */
309 #if 0
303 extern GList *chats; /* list of all chats (only use for tabbing!) */ 310 extern GList *chats; /* list of all chats (only use for tabbing!) */
304 extern GtkWidget *all_chats; 311 extern GtkWidget *all_chats;
305 extern GtkWidget *joinchat; 312 extern GtkWidget *joinchat;
313 #endif
306 314
307 /* Globals in conversation.c */ 315 /* Globals in conversation.c */
316 #if 0
308 extern GtkWidget *all_convos; 317 extern GtkWidget *all_convos;
318 #endif
309 319
310 /* Globals in dialog.c */ 320 /* Globals in dialog.c */
311 extern char fontface[128]; 321 extern char fontface[128];
312 extern char fontxfld[256]; 322 extern char fontxfld[256];
313 extern int fontsize; 323 extern int fontsize;
383 extern void unhide_buddy_list(); 393 extern void unhide_buddy_list();
384 extern void docklet_add(); 394 extern void docklet_add();
385 extern void docklet_remove(); 395 extern void docklet_remove();
386 extern void docklet_toggle(); 396 extern void docklet_toggle();
387 extern GtkWidget *gaim_new_item(GtkWidget *, const char *); 397 extern GtkWidget *gaim_new_item(GtkWidget *, const char *);
398 extern void update_idle_times();
399 extern void build_imchat_box(gboolean);
388 400
389 /* Functions in buddy_chat.c */ 401 /* Functions in buddy_chat.c */
390 extern void join_chat(); 402 #if 0
391 extern void chat_write(struct conversation *, char *, int, char *, time_t); 403 extern void chat_write(struct gaim_conversation *, char *, int, char *, time_t);
392 extern void delete_chat(struct conversation *); 404 extern void delete_chat(struct gaim_conversation *);
393 extern void build_imchat_box(gboolean);
394 extern void update_chat_button_pix(); 405 extern void update_chat_button_pix();
395 extern void update_im_button_pix(); 406 extern void update_im_button_pix();
396 extern void update_chat_tabs(); 407 extern void update_chat_tabs();
397 extern void update_im_tabs(); 408 extern void update_im_tabs();
398 extern void update_idle_times();
399 extern void do_join_chat(); 409 extern void do_join_chat();
410 #endif
400 411
401 /* Functions in conversation.c */ 412 /* Functions in conversation.c */
402 extern void gaim_setup_imhtml(GtkWidget *); 413 #if 0
403 extern void update_convo_add_button(struct conversation *); 414 extern void update_convo_add_button(struct gaim_conversation *);
404 extern void raise_convo_tab(struct conversation *); 415 extern void raise_convo_tab(struct gaim_conversation *);
405 extern void set_convo_title(struct conversation *); 416 extern void set_convo_title(struct gaim_conversation *);
406 extern void show_conv(struct conversation *); 417 extern void show_conv(struct gaim_conversation *);
407 void set_convo_name(struct conversation *c, const char *nname); 418 void set_convo_name(struct gaim_conversation *c, const char *nname);
408 extern struct conversation *new_conversation(char *); 419 extern struct gaim_conversation *new_conversation(char *);
409 extern void delete_conversation(struct conversation *); 420 extern void delete_conversation(struct gaim_conversation *);
410 extern void surround(struct conversation *, char *, char *); 421 extern void surround(struct gaim_conversation *, char *, char *);
411 extern int is_logging(char *); 422 extern int is_logging(char *);
412 extern void set_state_lock(int); 423 extern void set_state_lock(int);
413 extern void remove_tags(struct conversation *, char *); 424 extern void remove_tags(struct gaim_conversation *, char *);
414 extern void update_transparency(); 425 extern void update_transparency();
415 extern void update_font_buttons(); 426 extern void update_font_buttons();
416 extern void toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle); 427 extern void set_font_face(char *, struct gaim_conversation *);
417 extern void do_bold(GtkWidget *, struct conversation *);
418 extern void do_italic(GtkWidget *, struct conversation *);
419 extern void do_underline(GtkWidget *, struct conversation *);
420 extern void do_strike(GtkWidget *, struct conversation *);
421 extern void do_small(GtkWidget *, struct conversation *);
422 extern void do_normal(GtkWidget *, struct conversation *);
423 extern void do_big(GtkWidget *, struct conversation *);
424 extern void set_font_face(char *, struct conversation *);
425 extern void redo_convo_menus(); 428 extern void redo_convo_menus();
426 extern void convo_menu_remove(struct gaim_connection *); 429 extern void convo_menu_remove(struct gaim_connection *);
427 extern void remove_icon_data(struct gaim_connection *); 430 extern void remove_icon_data(struct gaim_connection *);
428 extern void got_new_icon(struct gaim_connection *, char *); 431 extern void got_new_icon(struct gaim_connection *, char *);
429 extern void toggle_spellchk(); 432 extern void toggle_spellchk();
430 extern void set_convo_gc(struct conversation *, struct gaim_connection *); 433 extern void set_convo_gc(struct gaim_conversation *, struct gaim_connection *);
431 extern void update_buttons_by_protocol(struct conversation *); 434 extern void update_buttons_by_protocol(struct gaim_conversation *);
432 extern void toggle_fg_color(GtkWidget *, struct conversation *); 435 extern void toggle_fg_color(GtkWidget *, struct gaim_conversation *);
433 extern void toggle_smileys(); 436 extern void toggle_smileys();
434 extern void toggle_timestamps(); 437 extern void toggle_timestamps();
435 extern void update_pixmaps(); 438 extern void update_pixmaps();
436 extern void im_tabize(); 439 extern void im_tabize();
437 extern void chat_tabize(); 440 extern void chat_tabize();
438 extern void convo_tabize(); 441 extern void convo_tabize();
439 extern void update_convo_color(); 442 extern void update_convo_color();
440 extern void update_convo_font(); 443 extern void update_convo_font();
441 extern void set_hide_icons(); 444 extern void set_hide_icons();
442 extern void set_convo_titles(); 445 extern void set_convo_titles();
443 extern void update_progress(struct conversation *, float); 446 extern void update_progress(struct gaim_conversation *, float);
444 extern void update_convo_status(struct conversation *); 447 extern void update_convo_status(struct gaim_conversation *);
445 extern gboolean reset_typing(gpointer);
446 extern void set_anim(); 448 extern void set_anim();
449 #endif
447 450
448 /* Functions in dialogs.c */ 451 /* Functions in dialogs.c */
449 extern void alias_dialog_bud(struct buddy *); 452 extern void alias_dialog_bud(struct buddy *);
450 extern void show_warn_dialog(struct gaim_connection *, char *); 453 extern void show_warn_dialog(struct gaim_connection *, char *);
451 extern void show_im_dialog(); 454 extern void show_im_dialog();
458 extern void show_export_dialog(); 461 extern void show_export_dialog();
459 extern void show_new_bp(char *, struct gaim_connection *, int, int, struct buddy_pounce *); 462 extern void show_new_bp(char *, struct gaim_connection *, int, int, struct buddy_pounce *);
460 extern void conv_show_log(GtkWidget *, gpointer); 463 extern void conv_show_log(GtkWidget *, gpointer);
461 extern void chat_show_log(GtkWidget *, gpointer); 464 extern void chat_show_log(GtkWidget *, gpointer);
462 extern void show_log(char *); 465 extern void show_log(char *);
463 extern void show_log_dialog(struct conversation *); 466 extern void show_log_dialog(struct gaim_conversation *);
464 extern void show_fgcolor_dialog(struct conversation *c, GtkWidget *color); 467 extern void show_fgcolor_dialog(struct gaim_conversation *c, GtkWidget *color);
465 extern void show_bgcolor_dialog(struct conversation *c, GtkWidget *color); 468 extern void show_bgcolor_dialog(struct gaim_conversation *c, GtkWidget *color);
466 extern void cancel_fgcolor(GtkWidget *widget, struct conversation *c); 469 extern void cancel_fgcolor(GtkWidget *widget, struct gaim_conversation *c);
467 extern void cancel_bgcolor(GtkWidget *widget, struct conversation *c); 470 extern void cancel_bgcolor(GtkWidget *widget, struct gaim_conversation *c);
468 extern void create_away_mess(GtkWidget *, void *); 471 extern void create_away_mess(GtkWidget *, void *);
469 extern void show_ee_dialog(int); 472 extern void show_ee_dialog(int);
470 extern void show_insert_link(GtkWidget *,struct conversation *); 473 extern void show_insert_link(GtkWidget *,struct gaim_conversation *);
471 extern void show_smiley_dialog(struct conversation *, GtkWidget *); 474 extern void show_smiley_dialog(struct gaim_conversation *, GtkWidget *);
472 extern void close_smiley_dialog(GtkWidget *widget, struct conversation *c); 475 extern void close_smiley_dialog(GtkWidget *widget, struct gaim_conversation *c);
473 extern void set_smiley_array(GtkWidget *widget, int smiley_type); 476 extern void set_smiley_array(GtkWidget *widget, int smiley_type);
474 extern void insert_smiley_text(GtkWidget *widget, struct conversation *c); 477 extern void insert_smiley_text(GtkWidget *widget, struct gaim_conversation *c);
475 extern void cancel_log(GtkWidget *, struct conversation *); 478 extern void cancel_log(GtkWidget *, struct gaim_conversation *);
476 extern void cancel_link(GtkWidget *, struct conversation *); 479 extern void cancel_link(GtkWidget *, struct gaim_conversation *);
477 extern void show_font_dialog(struct conversation *c, GtkWidget *font); 480 extern void show_font_dialog(struct gaim_conversation *c, GtkWidget *font);
478 extern void cancel_font(GtkWidget *widget, struct conversation *c); 481 extern void cancel_font(GtkWidget *widget, struct gaim_conversation *c);
479 extern void apply_font(GtkWidget *widget, GtkFontSelection *fontsel); 482 extern void apply_font(GtkWidget *widget, GtkFontSelection *fontsel);
480 extern void set_color_selection(GtkWidget *selection, GdkColor color); 483 extern void set_color_selection(GtkWidget *selection, GdkColor color);
481 extern void show_rename_group(GtkWidget *, struct group *); 484 extern void show_rename_group(GtkWidget *, struct group *);
482 extern void show_rename_buddy(GtkWidget *, struct buddy *); 485 extern void show_rename_buddy(GtkWidget *, struct buddy *);
483 extern void load_perl_script(); 486 extern void load_perl_script();
484 extern GtkWidget *picture_button(GtkWidget *, char *, char **); 487 extern GtkWidget *picture_button(GtkWidget *, char *, char **);
485 extern GtkWidget *picture_button2(GtkWidget *, char *, char **, short); 488 extern GtkWidget *picture_button2(GtkWidget *, char *, char **, short);
486 extern GtkWidget *gaim_pixbuf_button(char *, char *, GaimButtonStyle); 489 extern GtkWidget *gaim_pixbuf_button(char *, char *, GaimButtonStyle);
487 extern GtkWidget *gaim_pixbuf_button_from_stock(char *, char *, GaimButtonStyle); 490 extern GtkWidget *gaim_pixbuf_button_from_stock(const char *, const char *, GaimButtonStyle);
488 extern GtkWidget *gaim_pixbuf_toolbar_button_from_stock(char *); 491 extern GtkWidget *gaim_pixbuf_toolbar_button_from_stock(char *);
489 extern GtkWidget *gaim_pixbuf_toolbar_button_from_file(char *); 492 extern GtkWidget *gaim_pixbuf_toolbar_button_from_file(char *);
490 extern int file_is_dir(const char *, GtkWidget *); 493 extern int file_is_dir(const char *, GtkWidget *);
491 extern void update_privacy_connections(); 494 extern void update_privacy_connections();
492 extern void show_privacy_options(); 495 extern void show_privacy_options();
493 extern void build_allow_list(); 496 extern void build_allow_list();
494 extern void build_block_list(); 497 extern void build_block_list();
495 extern void destroy_fontsel(GtkWidget *w, gpointer d); 498 extern void destroy_fontsel(GtkWidget *w, gpointer d);
499 extern void join_chat();
496 500
497 /* Functions in multi.c */ 501 /* Functions in multi.c */
498 extern void account_editor(GtkWidget *, GtkWidget *); 502 extern void account_editor(GtkWidget *, GtkWidget *);
499 503
500 /* Functions in plugins.c */ 504 /* Functions in plugins.c */