void gui_layout_remove (struct t_gui_layout *layout) { struct t_gui_layout *new_gui_layouts; if (!layout) return; /* remove current layout if this is the layout we are removing */ if (gui_layout_current == layout) gui_layout_current = NULL; /* remove alias from list */ if (last_gui_layout == layout) last_gui_layout = layout->prev_layout; if (layout->prev_layout) { (layout->prev_layout)->next_layout = layout->next_layout; new_gui_layouts = gui_layouts; } else new_gui_layouts = layout->next_layout; if (layout->next_layout) (layout->next_layout)->prev_layout = layout->prev_layout; /* free data */ gui_layout_free (layout); gui_layouts = new_gui_layouts; }
int upgrade_weechat_load () { int rc; struct t_upgrade_file *upgrade_file; upgrade_layout = gui_layout_alloc (GUI_LAYOUT_UPGRADE); upgrade_file = upgrade_file_new (WEECHAT_UPGRADE_FILENAME, &upgrade_weechat_read_cb, NULL, NULL); if (!upgrade_file) return 0; rc = upgrade_file_read (upgrade_file); upgrade_file_close (upgrade_file); if (!hotlist_reset) gui_hotlist_clear (GUI_HOTLIST_MASK_MAX); gui_color_buffer_assign (); gui_color_buffer_display (); secure_buffer_assign (); secure_buffer_display (); if (upgrade_layout->layout_buffers) gui_layout_buffer_apply (upgrade_layout); if (upgrade_layout->layout_windows) gui_layout_window_apply (upgrade_layout, -1); gui_layout_free (upgrade_layout); upgrade_layout = NULL; if (upgrade_set_current_window > 0) gui_window_switch_by_number (upgrade_set_current_window); if (upgrade_set_current_buffer) { gui_window_switch_to_buffer (gui_current_window, upgrade_set_current_buffer, 0); } gui_layout_buffer_get_number_all (gui_layout_current); return rc; }
int upgrade_weechat_save_layout_window (struct t_upgrade_file *upgrade_file) { struct t_gui_layout *ptr_layout; int rc; rc = 0; /* get current layout for windows */ ptr_layout = gui_layout_alloc (GUI_LAYOUT_UPGRADE); if (ptr_layout) { gui_layout_window_store (ptr_layout); /* save tree with layout of windows */ rc = upgrade_weechat_save_layout_window_tree (upgrade_file, ptr_layout->layout_windows); gui_layout_free (ptr_layout); } return rc; }