62 |
|
|
63 |
int color_attr[NUM_COLORS]; |
int color_attr[NUM_COLORS]; |
64 |
|
|
65 |
|
GtkWidget *gtk_main_window; |
66 |
|
|
67 |
|
|
68 |
/* |
/* |
69 |
* gui_assign_color: assign a color (read from config) |
* gui_assign_color: assign a color (read from config) |
70 |
*/ |
*/ |
568 |
void |
void |
569 |
gui_init () |
gui_init () |
570 |
{ |
{ |
571 |
/* TODO: initialize Gtk GUI */ |
GtkWidget *vbox1; |
572 |
|
GtkWidget *entry_topic; |
573 |
|
GtkWidget *notebook1; |
574 |
|
GtkWidget *vbox2; |
575 |
|
GtkWidget *hbox1; |
576 |
|
GtkWidget *scrolledwindow_chat; |
577 |
|
GtkWidget *textview_chat; |
578 |
|
GtkWidget *scrolledwindow_nick; |
579 |
|
GtkWidget *textview_nick; |
580 |
|
GtkWidget *entry_input; |
581 |
|
GtkWidget *label1; |
582 |
|
|
583 |
|
gtk_main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); |
584 |
|
gtk_window_set_title (GTK_WINDOW (gtk_main_window), WEECHAT_NAME_AND_VERSION); |
585 |
|
|
586 |
|
vbox1 = gtk_vbox_new (FALSE, 0); |
587 |
|
gtk_widget_show (vbox1); |
588 |
|
gtk_container_add (GTK_CONTAINER (gtk_main_window), vbox1); |
589 |
|
|
590 |
|
entry_topic = gtk_entry_new (); |
591 |
|
gtk_widget_show (entry_topic); |
592 |
|
gtk_box_pack_start (GTK_BOX (vbox1), entry_topic, FALSE, FALSE, 0); |
593 |
|
|
594 |
|
notebook1 = gtk_notebook_new (); |
595 |
|
gtk_widget_show (notebook1); |
596 |
|
gtk_box_pack_start (GTK_BOX (vbox1), notebook1, TRUE, TRUE, 0); |
597 |
|
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook1), GTK_POS_BOTTOM); |
598 |
|
|
599 |
|
vbox2 = gtk_vbox_new (FALSE, 0); |
600 |
|
gtk_widget_show (vbox2); |
601 |
|
gtk_container_add (GTK_CONTAINER (notebook1), vbox2); |
602 |
|
|
603 |
|
hbox1 = gtk_hbox_new (FALSE, 0); |
604 |
|
gtk_widget_show (hbox1); |
605 |
|
gtk_box_pack_start (GTK_BOX (vbox2), hbox1, TRUE, TRUE, 0); |
606 |
|
|
607 |
|
scrolledwindow_chat = gtk_scrolled_window_new (NULL, NULL); |
608 |
|
gtk_widget_show (scrolledwindow_chat); |
609 |
|
gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow_chat, TRUE, TRUE, 0); |
610 |
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_chat), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
611 |
|
|
612 |
|
textview_chat = gtk_text_view_new (); |
613 |
|
gtk_widget_show (textview_chat); |
614 |
|
gtk_container_add (GTK_CONTAINER (scrolledwindow_chat), textview_chat); |
615 |
|
gtk_widget_set_size_request (textview_chat, 300, -1); |
616 |
|
gtk_text_view_set_editable (GTK_TEXT_VIEW (textview_chat), FALSE); |
617 |
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview_chat), FALSE); |
618 |
|
|
619 |
|
scrolledwindow_nick = gtk_scrolled_window_new (NULL, NULL); |
620 |
|
gtk_widget_show (scrolledwindow_nick); |
621 |
|
gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow_nick, TRUE, TRUE, 0); |
622 |
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow_nick), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
623 |
|
|
624 |
|
textview_nick = gtk_text_view_new (); |
625 |
|
gtk_widget_show (textview_nick); |
626 |
|
gtk_container_add (GTK_CONTAINER (scrolledwindow_nick), textview_nick); |
627 |
|
gtk_text_view_set_editable (GTK_TEXT_VIEW (textview_nick), FALSE); |
628 |
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview_nick), FALSE); |
629 |
|
|
630 |
|
entry_input = gtk_entry_new (); |
631 |
|
gtk_widget_show (entry_input); |
632 |
|
gtk_box_pack_start (GTK_BOX (vbox2), entry_input, FALSE, FALSE, 0); |
633 |
|
|
634 |
|
label1 = gtk_label_new (_("server")); |
635 |
|
gtk_widget_show (label1); |
636 |
|
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1); |
637 |
|
gtk_label_set_justify (GTK_LABEL (label1), GTK_JUSTIFY_LEFT); |
638 |
|
|
639 |
|
gtk_widget_show_all (gtk_main_window); |
640 |
|
|
641 |
gui_ready = 1; |
/* TODO: set gui_ready to 1 when Gtk display functions will be ok */ |
642 |
|
gui_ready = 0; |
643 |
} |
} |
644 |
|
|
645 |
/* |
/* |
721 |
void |
void |
722 |
gui_printf_color_type (t_gui_window *window, int type, int color, char *message, ...) |
gui_printf_color_type (t_gui_window *window, int type, int color, char *message, ...) |
723 |
{ |
{ |
724 |
/* TODO: write gui_printf_colot_type function for Gtk! */ |
static char buffer[8192]; |
725 |
|
char timestamp[16]; |
726 |
|
char *pos; |
727 |
|
va_list argptr; |
728 |
|
static time_t seconds; |
729 |
|
struct tm *date_tmp; |
730 |
|
|
731 |
|
/* make gcc hapy */ |
732 |
(void) window; |
(void) window; |
733 |
(void) type; |
(void) type; |
734 |
(void) color; |
(void) color; |
735 |
(void) message; |
(void) message; |
736 |
|
|
737 |
|
va_start (argptr, message); |
738 |
|
vsnprintf (buffer, sizeof (buffer) - 1, message, argptr); |
739 |
|
va_end (argptr); |
740 |
|
|
741 |
|
if (gui_ready) |
742 |
|
{ |
743 |
|
seconds = time (NULL); |
744 |
|
date_tmp = localtime (&seconds); |
745 |
|
|
746 |
|
pos = buffer - 1; |
747 |
|
while (pos) |
748 |
|
{ |
749 |
|
/* TODO: read timestamp format from config! */ |
750 |
|
if ((!window->last_line) || (window->line_complete)) |
751 |
|
{ |
752 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_DARK, "["); |
753 |
|
sprintf (timestamp, "%02d", date_tmp->tm_hour); |
754 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_TIME, timestamp); |
755 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_TIME_SEP, ":"); |
756 |
|
sprintf (timestamp, "%02d", date_tmp->tm_min); |
757 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_TIME, timestamp); |
758 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_TIME_SEP, ":"); |
759 |
|
sprintf (timestamp, "%02d", date_tmp->tm_sec); |
760 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_TIME, timestamp); |
761 |
|
gui_add_message (window, MSG_TYPE_TIME, COLOR_WIN_CHAT_DARK, "] "); |
762 |
|
} |
763 |
|
gui_add_message (window, type, color, pos+1); |
764 |
|
pos = strchr (pos+1, '\n'); |
765 |
|
if (pos) |
766 |
|
if (pos[1] == '\0') |
767 |
|
pos = NULL; |
768 |
|
} |
769 |
|
} |
770 |
|
else |
771 |
|
g_print ("%s", buffer); |
772 |
} |
} |