void gui_color_buffer_open () { if (!gui_color_buffer) { gui_color_buffer = gui_buffer_new (NULL, "color", &gui_color_buffer_input_cb, NULL, &gui_color_buffer_close_cb, NULL); if (gui_color_buffer) { if (!gui_color_buffer->short_name) gui_color_buffer->short_name = strdup ("color"); gui_buffer_set (gui_color_buffer, "type", "free"); gui_buffer_set (gui_color_buffer, "localvar_set_no_log", "1"); gui_buffer_set (gui_color_buffer, "key_bind_meta-c", "/color switch"); } } if (!gui_color_buffer) return; gui_window_switch_to_buffer (gui_current_window, gui_color_buffer, 1); gui_color_buffer_display (); }
void secure_buffer_open () { if (!secure_buffer) { secure_buffer = gui_buffer_new (NULL, SECURE_BUFFER_NAME, &secure_buffer_input_cb, NULL, &secure_buffer_close_cb, NULL); if (secure_buffer) { if (!secure_buffer->short_name) secure_buffer->short_name = strdup (SECURE_BUFFER_NAME); gui_buffer_set (secure_buffer, "type", "free"); gui_buffer_set (secure_buffer, "localvar_set_no_log", "1"); gui_buffer_set (secure_buffer, "key_bind_meta-v", "/secure toggle_values"); } secure_buffer_display_values = 0; } if (!secure_buffer) return; gui_window_switch_to_buffer (gui_current_window, secure_buffer, 1); secure_buffer_display (); }
void gui_main_init () { struct t_gui_buffer *ptr_buffer; struct t_gui_bar *ptr_bar; struct t_gui_bar_window *ptr_bar_win; GdkColor color_fg, color_bg; gui_color_init (); gui_ok = 1; /* build prefixes according to config */ gui_chat_prefix_build (); /* init clipboard buffer */ gui_input_clipboard = NULL; /* create Gtk widgets */ gdk_color_parse ("white", &color_fg); gdk_color_parse ("black", &color_bg); gui_gtk_main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (gui_gtk_main_window), PACKAGE_STRING); g_signal_connect (G_OBJECT (gui_gtk_main_window), "destroy", gtk_main_quit, NULL); gui_gtk_vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (gui_gtk_vbox1); gtk_container_add (GTK_CONTAINER (gui_gtk_main_window), gui_gtk_vbox1); gui_gtk_entry_topic = gtk_entry_new (); gtk_widget_show (gui_gtk_entry_topic); gtk_box_pack_start (GTK_BOX (gui_gtk_vbox1), gui_gtk_entry_topic, FALSE, FALSE, 0); gtk_widget_modify_text (gui_gtk_entry_topic, GTK_STATE_NORMAL, &color_fg); gtk_widget_modify_base (gui_gtk_entry_topic, GTK_STATE_NORMAL, &color_bg); gui_gtk_notebook1 = gtk_notebook_new (); gtk_widget_show (gui_gtk_notebook1); gtk_box_pack_start (GTK_BOX (gui_gtk_vbox1), gui_gtk_notebook1, TRUE, TRUE, 0); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (gui_gtk_notebook1), GTK_POS_BOTTOM); gui_gtk_vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (gui_gtk_vbox2); gtk_container_add (GTK_CONTAINER (gui_gtk_notebook1), gui_gtk_vbox2); gui_gtk_hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (gui_gtk_hbox1); gtk_box_pack_start (GTK_BOX (gui_gtk_vbox2), gui_gtk_hbox1, TRUE, TRUE, 0); gui_gtk_hpaned1 = gtk_hpaned_new (); gtk_widget_show (gui_gtk_hpaned1); gtk_box_pack_start (GTK_BOX (gui_gtk_hbox1), gui_gtk_hpaned1, TRUE, TRUE, 0); gtk_paned_set_position (GTK_PANED (gui_gtk_hpaned1), 0); gui_gtk_scrolledwindow_chat = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (gui_gtk_scrolledwindow_chat); gtk_paned_pack1 (GTK_PANED (gui_gtk_hpaned1), gui_gtk_scrolledwindow_chat, FALSE, TRUE); //gtk_box_pack_start (GTK_PANED (hpaned1), scrolledwindow_chat, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (gui_gtk_scrolledwindow_chat), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); gtk_widget_modify_text (gui_gtk_scrolledwindow_chat, GTK_STATE_NORMAL, &color_fg); gtk_widget_modify_base (gui_gtk_scrolledwindow_chat, GTK_STATE_NORMAL, &color_bg); gui_gtk_scrolledwindow_nick = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (gui_gtk_scrolledwindow_nick); gtk_paned_pack2 (GTK_PANED (gui_gtk_hpaned1), gui_gtk_scrolledwindow_nick, FALSE, TRUE); //gtk_box_pack_start (GTK_PANED (hpaned1), scrolledwindow_nick, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (gui_gtk_scrolledwindow_nick), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); gtk_widget_modify_text (gui_gtk_scrolledwindow_nick, GTK_STATE_NORMAL, &color_fg); gtk_widget_modify_base (gui_gtk_scrolledwindow_nick, GTK_STATE_NORMAL, &color_bg); gui_gtk_entry_input = gtk_entry_new (); gtk_widget_show (gui_gtk_entry_input); gtk_box_pack_start (GTK_BOX (gui_gtk_vbox2), gui_gtk_entry_input, FALSE, FALSE, 0); gtk_widget_modify_text (gui_gtk_entry_input, GTK_STATE_NORMAL, &color_fg); gtk_widget_modify_base (gui_gtk_entry_input, GTK_STATE_NORMAL, &color_bg); gui_gtk_label1 = gtk_label_new (_("server")); gtk_widget_show (gui_gtk_label1); gtk_notebook_set_tab_label (GTK_NOTEBOOK (gui_gtk_notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (gui_gtk_notebook1), 0), gui_gtk_label1); gtk_label_set_justify (GTK_LABEL (gui_gtk_label1), GTK_JUSTIFY_LEFT); gtk_widget_show_all (gui_gtk_main_window); gui_init_ok = 0; /* create core buffer */ ptr_buffer = gui_buffer_new (NULL, "weechat", NULL, NULL, NULL, NULL); if (ptr_buffer) { gui_init_ok = 1; /* set title for core buffer */ gui_buffer_set_title (ptr_buffer, "WeeChat " WEECHAT_COPYRIGHT_DATE " - " WEECHAT_WEBSITE); /* create main window (using full space) */ if (gui_window_new (NULL, ptr_buffer, 0, 0, 0, 0, 100, 100)) { gui_current_window = gui_windows; if (CONFIG_BOOLEAN(config_look_set_title)) gui_window_set_title (PACKAGE_NAME " " PACKAGE_VERSION); } /* create bar windows for root bars (they were read from config, but no window was created (GUI was not initialized) */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if ((CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_TYPE]) == GUI_BAR_TYPE_ROOT) && (!ptr_bar->bar_window)) { gui_bar_window_new (ptr_bar, NULL); } } for (ptr_bar_win = gui_windows->bar_windows; ptr_bar_win; ptr_bar_win = ptr_bar_win->next_bar_window) { gui_bar_window_calculate_pos_size (ptr_bar_win, gui_windows); gui_bar_window_create_win (ptr_bar_win); } } }
void gui_main_init () { struct t_gui_buffer *ptr_buffer; struct t_gui_bar *ptr_bar; struct t_gui_bar_window *ptr_bar_win; char title[256]; initscr (); if (CONFIG_BOOLEAN(config_look_eat_newline_glitch)) gui_term_set_eat_newline_glitch (0); curs_set (1); noecho (); nodelay (stdscr, TRUE); raw (); gui_color_init (); /* build prefixes according to configuration */ gui_chat_prefix_build (); refresh (); gui_term_cols = COLS; gui_term_lines = LINES; gui_window_read_terminal_size (); /* init clipboard buffer */ gui_input_clipboard = NULL; /* get time length */ gui_chat_time_length = gui_chat_get_time_length (); /* init bar items */ gui_bar_item_init (); gui_init_ok = 0; /* create core buffer */ ptr_buffer = gui_buffer_new (NULL, GUI_BUFFER_MAIN, NULL, NULL, NULL, NULL); if (ptr_buffer) { gui_init_ok = 1; ptr_buffer->num_displayed = 1; /* set short name */ if (!ptr_buffer->short_name) ptr_buffer->short_name = strdup (GUI_BUFFER_MAIN); /* set title for core buffer */ snprintf (title, sizeof (title), "WeeChat %s %s - %s", version_get_version (), WEECHAT_COPYRIGHT_DATE, WEECHAT_WEBSITE); gui_buffer_set_title (ptr_buffer, title); /* create main window (using full space) */ if (gui_window_new (NULL, ptr_buffer, 0, 0, gui_term_cols, gui_term_lines, 100, 100)) { gui_current_window = gui_windows; if (CONFIG_STRING(config_look_window_title) && CONFIG_STRING(config_look_window_title)[0]) { gui_window_set_title (CONFIG_STRING(config_look_window_title)); } } /* * create bar windows for root bars (they were read from config, * but no window was created, GUI was not initialized) */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if ((CONFIG_INTEGER(ptr_bar->options[GUI_BAR_OPTION_TYPE]) == GUI_BAR_TYPE_ROOT) && (!ptr_bar->bar_window)) { gui_bar_window_new (ptr_bar, NULL); } } for (ptr_bar_win = gui_windows->bar_windows; ptr_bar_win; ptr_bar_win = ptr_bar_win->next_bar_window) { gui_bar_window_calculate_pos_size (ptr_bar_win, gui_windows); gui_bar_window_create_win (ptr_bar_win); } } if (CONFIG_BOOLEAN(config_look_mouse)) gui_mouse_enable (); else gui_mouse_disable (); gui_window_set_bracketed_paste_mode (CONFIG_BOOLEAN(config_look_paste_bracketed)); }
void upgrade_weechat_read_buffer (struct t_infolist *infolist) { struct t_gui_buffer *ptr_buffer; const char *key, *var_name, *name, *plugin_name; const char *str; char option_name[64], *option_key, *option_var; int index, length, main_buffer; plugin_name = infolist_string (infolist, "plugin_name"); name = infolist_string (infolist, "name"); gui_layout_buffer_add (upgrade_layout, plugin_name, name, infolist_integer (infolist, "number")); main_buffer = gui_buffer_is_main (plugin_name, name); if (main_buffer) { /* use WeeChat main buffer */ upgrade_current_buffer = gui_buffers; } else { /* create buffer it it's not main buffer */ upgrade_current_buffer = gui_buffer_new (NULL, infolist_string (infolist, "name"), NULL, NULL, NULL, NULL); } if (!upgrade_current_buffer) return; ptr_buffer = upgrade_current_buffer; if (infolist_integer (infolist, "current_buffer")) upgrade_set_current_buffer = ptr_buffer; /* name for upgrade */ if (ptr_buffer->plugin_name_for_upgrade) free (ptr_buffer->plugin_name_for_upgrade); ptr_buffer->plugin_name_for_upgrade = strdup (infolist_string (infolist, "plugin_name")); /* full name */ gui_buffer_build_full_name (ptr_buffer); /* short name */ if (ptr_buffer->short_name) free (ptr_buffer->short_name); str = infolist_string (infolist, "short_name"); ptr_buffer->short_name = (str) ? strdup (str) : NULL; /* buffer type */ ptr_buffer->type = infolist_integer (infolist, "type"); /* notify level */ ptr_buffer->notify = infolist_integer (infolist, "notify"); /* "hidden" is new in WeeChat 1.0 */ if (infolist_search_var (infolist, "hidden")) ptr_buffer->hidden = infolist_integer (infolist, "hidden"); else ptr_buffer->hidden = 0; /* day change */ if (infolist_search_var (infolist, "day_change")) ptr_buffer->day_change = infolist_integer (infolist, "day_change"); else ptr_buffer->day_change = 1; /* "clear" is new in WeeChat 1.0 */ if (infolist_search_var (infolist, "clear")) ptr_buffer->clear = infolist_integer (infolist, "clear"); else ptr_buffer->clear = (ptr_buffer->type == GUI_BUFFER_TYPE_FREE) ? 0 : 1; /* "filter" is new in WeeChat 1.0 */ if (infolist_search_var (infolist, "filter")) ptr_buffer->filter = infolist_integer (infolist, "filter"); else ptr_buffer->filter = 1; /* nicklist */ ptr_buffer->nicklist_case_sensitive = infolist_integer (infolist, "nicklist_case_sensitive"); ptr_buffer->nicklist_display_groups = infolist_integer (infolist, "nicklist_display_groups"); /* title (not for main buffer, because there's the latest version) */ if (!main_buffer) { if (ptr_buffer->title) free (ptr_buffer->title); str = infolist_string (infolist, "title"); ptr_buffer->title = (str) ? strdup (str) : NULL; } /* first line not read */ ptr_buffer->lines->first_line_not_read = infolist_integer (infolist, "first_line_not_read"); /* time for each line */ ptr_buffer->time_for_each_line = infolist_integer (infolist, "time_for_each_line"); /* input */ ptr_buffer->input = infolist_integer (infolist, "input"); ptr_buffer->input_get_unknown_commands = infolist_integer (infolist, "input_get_unknown_commands"); if (infolist_integer (infolist, "input_buffer_alloc") > 0) { ptr_buffer->input_buffer = malloc (infolist_integer (infolist, "input_buffer_alloc")); if (ptr_buffer->input_buffer) { ptr_buffer->input_buffer_size = infolist_integer (infolist, "input_buffer_size"); ptr_buffer->input_buffer_length = infolist_integer (infolist, "input_buffer_length"); ptr_buffer->input_buffer_pos = infolist_integer (infolist, "input_buffer_pos"); ptr_buffer->input_buffer_1st_display = infolist_integer (infolist, "input_buffer_1st_display"); if (infolist_string (infolist, "input_buffer")) strcpy (ptr_buffer->input_buffer, infolist_string (infolist, "input_buffer")); else ptr_buffer->input_buffer[0] = '\0'; } } /* text search */ ptr_buffer->text_search = infolist_integer (infolist, "text_search"); ptr_buffer->text_search_exact = infolist_integer (infolist, "text_search_exact"); ptr_buffer->text_search_found = infolist_integer (infolist, "text_search_found"); if (ptr_buffer->text_search_input) free (ptr_buffer->text_search_input); str = infolist_string (infolist, "text_search_input"); ptr_buffer->text_search_input = (str) ? strdup (str) : NULL; /* highlight options */ gui_buffer_set_highlight_words ( ptr_buffer, infolist_string (infolist, "highlight_words")); gui_buffer_set_highlight_regex ( ptr_buffer, infolist_string (infolist, "highlight_regex")); if (infolist_search_var (infolist, "highlight_tags_restrict")) { /* WeeChat >= 0.4.3 */ gui_buffer_set_highlight_tags_restrict ( ptr_buffer, infolist_string (infolist, "highlight_tags_restrict")); gui_buffer_set_highlight_tags ( ptr_buffer, infolist_string (infolist, "highlight_tags")); } else { /* WeeChat <= 0.4.2 */ gui_buffer_set_highlight_tags_restrict ( ptr_buffer, infolist_string (infolist, "highlight_tags")); } /* hotlist max level nicks */ gui_buffer_set_hotlist_max_level_nicks ( ptr_buffer, infolist_string (infolist, "hotlist_max_level_nicks")); /* local keys */ index = 0; while (1) { snprintf (option_name, sizeof (option_name), "key_%05d", index); key = infolist_string (infolist, option_name); if (!key) break; length = 16 + strlen (key) + 1; option_key = malloc (length); if (option_key) { snprintf (option_key, length, "key_bind_%s", key); snprintf (option_name, sizeof (option_name), "key_command_%05d", index); gui_buffer_set (ptr_buffer, option_key, infolist_string (infolist, option_name)); free (option_key); } index++; } /* local variables */ index = 0; while (1) { snprintf (option_name, sizeof (option_name), "localvar_name_%05d", index); var_name = infolist_string (infolist, option_name); if (!var_name) break; length = 32 + strlen (var_name) + 1; option_var = malloc (length); if (option_var) { snprintf (option_var, length, "localvar_set_%s", var_name); snprintf (option_name, sizeof (option_name), "localvar_value_%05d", index); gui_buffer_set (ptr_buffer, option_var, infolist_string (infolist, option_name)); free (option_var); } index++; } }
int upgrade_weechat_read_cb (void *data, struct t_upgrade_file *upgrade_file, int object_id, struct t_infolist *infolist) { const char *key, *var_name, *type, *name, *group_name, *plugin_name; const char *buffer_name; char option_name[64], *option_key, *option_var; struct t_gui_nick_group *ptr_group; struct t_gui_buffer *ptr_buffer; struct t_gui_line *new_line; struct t_gui_hotlist *new_hotlist; struct timeval creation_time; void *buf; int i, size, index, length; /* make C compiler happy */ (void) data; (void) upgrade_file; infolist_reset_item_cursor (infolist); while (infolist_next (infolist)) { switch (object_id) { case UPGRADE_WEECHAT_TYPE_HISTORY: if (upgrade_current_buffer) { gui_history_buffer_add (upgrade_current_buffer, infolist_string (infolist, "text")); } else { gui_history_global_add (infolist_string (infolist, "text")); } break; case UPGRADE_WEECHAT_TYPE_BUFFER: plugin_name = infolist_string (infolist, "plugin_name"); name = infolist_string (infolist, "name"); gui_layout_buffer_add (&upgrade_layout_buffers, &last_upgrade_layout_buffer, plugin_name, name, infolist_integer (infolist, "number")); if (gui_buffer_is_main (plugin_name, name)) { /* use WeeChat main buffer */ upgrade_current_buffer = gui_buffers; } else { /* * create buffer if it was created by a plugin (ie not * WeeChat main buffer) */ upgrade_current_buffer = gui_buffer_new ( NULL, infolist_string (infolist, "name"), NULL, NULL, NULL, NULL); if (upgrade_current_buffer) { if (infolist_integer (infolist, "current_buffer")) upgrade_set_current_buffer = upgrade_current_buffer; upgrade_current_buffer->plugin_name_for_upgrade = strdup (infolist_string (infolist, "plugin_name")); gui_buffer_build_full_name (upgrade_current_buffer); upgrade_current_buffer->short_name = (infolist_string (infolist, "short_name")) ? strdup (infolist_string (infolist, "short_name")) : NULL; upgrade_current_buffer->type = infolist_integer (infolist, "type"); upgrade_current_buffer->notify = infolist_integer (infolist, "notify"); upgrade_current_buffer->nicklist_case_sensitive = infolist_integer (infolist, "nicklist_case_sensitive"); upgrade_current_buffer->nicklist_display_groups = infolist_integer (infolist, "nicklist_display_groups"); upgrade_current_buffer->title = (infolist_string (infolist, "title")) ? strdup (infolist_string (infolist, "title")) : NULL; upgrade_current_buffer->lines->first_line_not_read = infolist_integer (infolist, "first_line_not_read"); upgrade_current_buffer->time_for_each_line = infolist_integer (infolist, "time_for_each_line"); upgrade_current_buffer->input = infolist_integer (infolist, "input"); upgrade_current_buffer->input_get_unknown_commands = infolist_integer (infolist, "input_get_unknown_commands"); if (infolist_integer (infolist, "input_buffer_alloc") > 0) { upgrade_current_buffer->input_buffer = malloc (infolist_integer (infolist, "input_buffer_alloc")); if (upgrade_current_buffer->input_buffer) { upgrade_current_buffer->input_buffer_size = infolist_integer (infolist, "input_buffer_size"); upgrade_current_buffer->input_buffer_length = infolist_integer (infolist, "input_buffer_length"); upgrade_current_buffer->input_buffer_pos = infolist_integer (infolist, "input_buffer_pos"); upgrade_current_buffer->input_buffer_1st_display = infolist_integer (infolist, "input_buffer_1st_display"); if (infolist_string (infolist, "input_buffer")) strcpy (upgrade_current_buffer->input_buffer, infolist_string (infolist, "input_buffer")); else upgrade_current_buffer->input_buffer[0] = '\0'; } } upgrade_current_buffer->text_search = infolist_integer (infolist, "text_search"); upgrade_current_buffer->text_search_exact = infolist_integer (infolist, "text_search_exact"); upgrade_current_buffer->text_search_found = infolist_integer (infolist, "text_search_found"); if (infolist_string (infolist, "text_search_input")) upgrade_current_buffer->text_search_input = strdup (infolist_string (infolist, "text_search_input")); gui_buffer_set_highlight_words (upgrade_current_buffer, infolist_string (infolist, "highlight_words")); gui_buffer_set_highlight_regex (upgrade_current_buffer, infolist_string (infolist, "highlight_regex")); gui_buffer_set_highlight_tags (upgrade_current_buffer, infolist_string (infolist, "highlight_tags")); gui_buffer_set_hotlist_max_level_nicks (upgrade_current_buffer, infolist_string (infolist, "hotlist_max_level_nicks")); index = 0; while (1) { snprintf (option_name, sizeof (option_name), "key_%05d", index); key = infolist_string (infolist, option_name); if (!key) break; length = 16 + strlen (key) + 1; option_key = malloc (length); if (option_key) { snprintf (option_key, length, "key_bind_%s", key); snprintf (option_name, sizeof (option_name), "key_command_%05d", index); gui_buffer_set (upgrade_current_buffer, option_key, infolist_string (infolist, option_name)); free (option_key); } index++; } index = 0; while (1) { snprintf (option_name, sizeof (option_name), "localvar_name_%05d", index); var_name = infolist_string (infolist, option_name); if (!var_name) break; length = 32 + strlen (var_name) + 1; option_var = malloc (length); if (option_var) { snprintf (option_var, length, "localvar_set_%s", var_name); snprintf (option_name, sizeof (option_name), "localvar_value_%05d", index); gui_buffer_set (upgrade_current_buffer, option_var, infolist_string (infolist, option_name)); free (option_var); } index++; } } } break; case UPGRADE_WEECHAT_TYPE_BUFFER_LINE: /* add line to current buffer */ if (upgrade_current_buffer) { switch (upgrade_current_buffer->type) { case GUI_BUFFER_TYPE_FORMATTED: new_line = gui_line_add ( upgrade_current_buffer, infolist_time (infolist, "date"), infolist_time (infolist, "date_printed"), infolist_string (infolist, "tags"), infolist_string (infolist, "prefix"), infolist_string (infolist, "message")); if (new_line) { new_line->data->highlight = infolist_integer (infolist, "highlight"); if (infolist_integer (infolist, "last_read_line")) upgrade_current_buffer->lines->last_read_line = new_line; } break; case GUI_BUFFER_TYPE_FREE: gui_line_add_y ( upgrade_current_buffer, infolist_integer (infolist, "y"), infolist_string (infolist, "message")); break; case GUI_BUFFER_NUM_TYPES: break; } } break; case UPGRADE_WEECHAT_TYPE_NICKLIST: if (upgrade_current_buffer) { upgrade_current_buffer->nicklist = 1; ptr_group = NULL; type = infolist_string (infolist, "type"); if (type) { if (strcmp (type, "group") == 0) { name = infolist_string (infolist, "name"); if (name && (strcmp (name, "root") != 0)) { group_name = infolist_string (infolist, "parent_name"); if (group_name) ptr_group = gui_nicklist_search_group (upgrade_current_buffer, NULL, group_name); gui_nicklist_add_group ( upgrade_current_buffer, ptr_group, name, infolist_string (infolist, "color"), infolist_integer (infolist, "visible")); } } else if (strcmp (type, "nick") == 0) { group_name = infolist_string (infolist, "group_name"); if (group_name) ptr_group = gui_nicklist_search_group (upgrade_current_buffer, NULL, group_name); gui_nicklist_add_nick ( upgrade_current_buffer, ptr_group, infolist_string (infolist, "name"), infolist_string (infolist, "color"), infolist_string (infolist, "prefix"), infolist_string (infolist, "prefix_color"), infolist_integer (infolist, "visible")); } } } break; case UPGRADE_WEECHAT_TYPE_MISC: weechat_first_start_time = infolist_time (infolist, "start_time"); weechat_upgrade_count = infolist_integer (infolist, "upgrade_count"); upgrade_set_current_window = infolist_integer (infolist, "current_window_number"); break; case UPGRADE_WEECHAT_TYPE_HOTLIST: if (!hotlist_reset) { gui_hotlist_clear (); hotlist_reset = 1; } plugin_name = infolist_string (infolist, "plugin_name"); buffer_name = infolist_string (infolist, "buffer_name"); if (plugin_name && buffer_name) { ptr_buffer = gui_buffer_search_by_name (plugin_name, buffer_name); if (ptr_buffer) { buf = infolist_buffer (infolist, "creation_time", &size); if (buf) { memcpy (&creation_time, buf, size); new_hotlist = gui_hotlist_add (ptr_buffer, infolist_integer (infolist, "priority"), &creation_time); if (new_hotlist) { for (i = 0; i < GUI_HOTLIST_NUM_PRIORITIES; i++) { snprintf (option_name, sizeof (option_name), "count_%02d", i); new_hotlist->count[i] = infolist_integer (infolist, option_name); } } } } } break; case UPGRADE_WEECHAT_TYPE_LAYOUT_WINDOW: gui_layout_window_add (&upgrade_layout_windows, infolist_integer (infolist, "internal_id"), gui_layout_window_search_by_id (upgrade_layout_windows, infolist_integer (infolist, "parent_id")), infolist_integer (infolist, "split_pct"), infolist_integer (infolist, "split_horiz"), infolist_string (infolist, "plugin_name"), infolist_string (infolist, "buffer_name")); break; } } return WEECHAT_RC_OK; }