void gui_input_jump_smart () { if (gui_current_window->buffer->text_search == GUI_TEXT_SEARCH_DISABLED) { if (gui_hotlist) { if (!gui_hotlist_initial_buffer) gui_hotlist_initial_buffer = gui_current_window->buffer; gui_window_switch_to_buffer (gui_current_window, gui_hotlist->buffer, 1); gui_window_scroll_bottom (gui_current_window); } else { if (gui_hotlist_initial_buffer) { gui_window_switch_to_buffer (gui_current_window, gui_hotlist_initial_buffer, 1); gui_window_scroll_bottom (gui_current_window); gui_hotlist_initial_buffer = NULL; } } } }
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 (); }
struct t_gui_window * gui_window_split_vertical (struct t_gui_window *window, int percentage) { struct t_gui_window *new_window; int width1, width2; if (!gui_ok) return NULL; new_window = NULL; width1 = (window->win_width * percentage) / 100; width2 = window->win_width - width1 - 1; if ((percentage > 0) && (percentage <= 100)) { new_window = gui_window_new (window, window->buffer, window->win_x + width1 + 1, window->win_y, width2, window->win_height, percentage, 100); if (new_window) { /* reduce old window height (left window) */ window->win_width = width1; window->win_width_pct = 100 - percentage; /* assign same buffer for new window (right window) */ gui_buffer_add_value_num_displayed (new_window->buffer, 1); gui_window_switch_to_buffer (window, window->buffer, 1); gui_current_window = new_window; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); /* create & draw separator */ gui_window_draw_separator (gui_current_window); } } return new_window; }
void gui_input_switch_active_buffer () { struct t_gui_buffer *ptr_buffer; ptr_buffer = gui_buffer_get_next_active_buffer (gui_current_window->buffer); if (ptr_buffer) { gui_buffer_set_active_buffer (ptr_buffer); gui_window_switch_to_buffer (gui_current_window, ptr_buffer, 1); } }
struct t_gui_window * gui_window_split_horizontal (struct t_gui_window *window, int percentage) { struct t_gui_window *new_window; int height1, height2; if (!gui_ok) return NULL; new_window = NULL; height1 = (window->win_height * percentage) / 100; height2 = window->win_height - height1; if ((percentage > 0) && (percentage <= 100)) { new_window = gui_window_new (window, window->buffer, window->win_x, window->win_y, window->win_width, height1, 100, percentage); if (new_window) { /* reduce old window height (bottom window) */ window->win_y = new_window->win_y + new_window->win_height; window->win_height = height2; window->win_height_pct = 100 - percentage; /* assign same buffer for new window (top window) */ gui_buffer_add_value_num_displayed (new_window->buffer, 1); gui_window_switch_to_buffer (window, window->buffer, 1); gui_current_window = new_window; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); } } return new_window; }
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; }
void gui_window_switch_right (struct t_gui_window *window) { struct t_gui_window *ptr_win; for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if ((ptr_win != window) && (gui_window_side_by_side (window, ptr_win) == 2)) { gui_current_window = ptr_win; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); return; } } }
void gui_window_switch (struct t_gui_window *window) { if (gui_current_window == window) return; /* remove unused bars from current window */ /* ... */ gui_current_window = window; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); hook_signal_send ("window_switch", WEECHAT_HOOK_SIGNAL_POINTER, window); }
void gui_layout_window_assign_buffer (struct t_gui_buffer *buffer) { struct t_gui_window *ptr_win; const char *plugin_name; plugin_name = gui_buffer_get_plugin_name (buffer); for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if (ptr_win->layout_plugin_name && ptr_win->layout_buffer_name) { if ((strcmp (ptr_win->layout_plugin_name, plugin_name) == 0) && (strcmp (ptr_win->layout_buffer_name, buffer->name) == 0)) { gui_window_switch_to_buffer (ptr_win, buffer, 0); } } } }
int upgrade_weechat_load () { int rc; struct t_upgrade_file *upgrade_file; upgrade_file = upgrade_file_new (WEECHAT_UPGRADE_FILENAME, 0); rc = upgrade_file_read (upgrade_file, &upgrade_weechat_read_cb, NULL); if (!hotlist_reset) gui_hotlist_clear (); gui_color_buffer_assign (); gui_color_buffer_display (); if (upgrade_layout_buffers) { gui_layout_buffer_apply (upgrade_layout_buffers); gui_layout_buffer_remove_all (&upgrade_layout_buffers, &last_upgrade_layout_buffer); } if (upgrade_layout_windows) { gui_layout_window_apply (upgrade_layout_windows, -1); gui_layout_window_remove_all (&upgrade_layout_windows); } 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_buffers); return rc; }
int gui_window_merge (struct t_gui_window *window) { struct t_gui_window_tree *parent, *sister; parent = window->ptr_tree->parent_node; if (parent) { sister = (parent->child1->window == window) ? parent->child2 : parent->child1; if (!(sister->window)) return 0; if (window->win_y == sister->window->win_y) { /* horizontal merge */ window->win_width += sister->window->win_width + 1; window->win_width_pct += sister->window->win_width_pct; } else { /* vertical merge */ window->win_height += sister->window->win_height; window->win_height_pct += sister->window->win_height_pct; } if (sister->window->win_x < window->win_x) window->win_x = sister->window->win_x; if (sister->window->win_y < window->win_y) window->win_y = sister->window->win_y; gui_window_free (sister->window); gui_window_tree_node_to_leaf (parent, window); gui_window_switch_to_buffer (window, window->buffer, 1); gui_window_redraw_buffer (window->buffer); return 1; } return 0; }
void gui_layout_window_assign_all_buffers () { struct t_gui_window *ptr_win; struct t_gui_buffer *ptr_buffer; for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if (ptr_win->layout_plugin_name && ptr_win->layout_buffer_name) { for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { if ((strcmp (ptr_win->layout_plugin_name, gui_buffer_get_plugin_name (ptr_buffer)) == 0) && (strcmp (ptr_win->layout_buffer_name, ptr_buffer->name) == 0)) { gui_window_switch_to_buffer (ptr_win, ptr_buffer, 0); break; } } } } }
void gui_main_refreshs () { struct t_gui_window *ptr_win; struct t_gui_buffer *ptr_buffer; struct t_gui_bar *ptr_bar; /* refresh color buffer if needed */ if (gui_color_buffer_refresh_needed) { gui_color_buffer_display (); gui_color_buffer_refresh_needed = 0; } /* compute max length for prefix/buffer if needed */ for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { /* compute buffer/prefix max length for own_lines */ if (ptr_buffer->own_lines) { if (ptr_buffer->own_lines->buffer_max_length_refresh) { gui_line_compute_buffer_max_length (ptr_buffer, ptr_buffer->own_lines); } if (ptr_buffer->own_lines->prefix_max_length_refresh) gui_line_compute_prefix_max_length (ptr_buffer->own_lines); } /* compute buffer/prefix max length for mixed_lines */ if (ptr_buffer->mixed_lines) { if (ptr_buffer->mixed_lines->buffer_max_length_refresh) { gui_line_compute_buffer_max_length (ptr_buffer, ptr_buffer->mixed_lines); } if (ptr_buffer->mixed_lines->prefix_max_length_refresh) gui_line_compute_prefix_max_length (ptr_buffer->mixed_lines); } } /* refresh window if needed */ if (gui_window_refresh_needed) { gui_window_refresh_screen ((gui_window_refresh_needed > 1) ? 1 : 0); gui_window_refresh_needed = 0; } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) gui_bar_draw (ptr_bar); } /* refresh window if needed (if asked during refresh of bars) */ if (gui_window_refresh_needed) { gui_window_refresh_screen ((gui_window_refresh_needed > 1) ? 1 : 0); gui_window_refresh_needed = 0; } /* refresh windows if needed */ for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if (ptr_win->refresh_needed) { gui_window_switch_to_buffer (ptr_win, ptr_win->buffer, 0); gui_chat_draw (ptr_win->buffer, 1); ptr_win->refresh_needed = 0; } } /* refresh chat buffers if needed */ for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { if (ptr_buffer->chat_refresh_needed) { gui_chat_draw (ptr_buffer, (ptr_buffer->chat_refresh_needed) > 1 ? 1 : 0); } } if (!gui_window_bare_display) { /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* move cursor (for cursor mode) */ if (gui_cursor_mode) gui_window_move_cursor (); } }
void gui_main_refreshs () { struct t_gui_window *ptr_win; struct t_gui_buffer *ptr_buffer; struct t_gui_bar *ptr_bar; /* refresh color buffer if needed */ if (gui_color_buffer_refresh_needed) { gui_color_buffer_display (); gui_color_buffer_refresh_needed = 0; } /* refresh window if needed */ if (gui_window_refresh_needed) { gui_window_refresh_screen ((gui_window_refresh_needed > 1) ? 1 : 0); gui_window_refresh_needed = 0; } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* refresh windows if needed */ for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if (ptr_win->refresh_needed) { gui_window_switch_to_buffer (ptr_win, ptr_win->buffer, 0); gui_window_redraw_buffer (ptr_win->buffer); ptr_win->refresh_needed = 0; } } /* refresh chat buffers if needed */ for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { if (ptr_buffer->chat_refresh_needed) { gui_chat_draw (ptr_buffer, (ptr_buffer->chat_refresh_needed) > 1 ? 1 : 0); } } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* move cursor (for cursor mode) */ if (gui_cursor_mode) gui_window_move_cursor (); }