Freeciv-3.2
Loading...
Searching...
No Matches
Data Structures | Macros | Functions | Variables
chatline.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <gdk/gdkkeysyms.h>
#include "fcintl.h"
#include "genlist.h"
#include "log.h"
#include "mem.h"
#include "support.h"
#include "chat.h"
#include "featured_text.h"
#include "game.h"
#include "packets.h"
#include "client_main.h"
#include "climap.h"
#include "control.h"
#include "mapview_common.h"
#include "colors.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "pages.h"
#include "chatline.h"

Go to the source code of this file.

Data Structures

struct  inputline_toolkit
 

Macros

#define MAX_CHATLINE_HISTORY   20
 
#define MAX_MATCHES   10
 

Functions

static void inputline_make_tag (GtkEntry *entry, enum text_tag_type type)
 
bool inputline_has_focus (void)
 
void inputline_grab_focus (void)
 
bool inputline_is_visible (void)
 
static bool is_plain_public_message (const char *s)
 
static void inputline_return (GtkEntry *w, gpointer data)
 
static const charget_player_or_user_name (int id)
 
static int check_player_or_user_name (const char *prefix, const char **matches, const int max_matches)
 
static size_t get_common_prefix (const char *const *prefixes, size_t num_prefixes, char *buf, size_t buf_len)
 
static bool chatline_autocomplete (GtkEditable *editable)
 
static gboolean inputline_handler (GtkWidget *w, GdkEventKey *ev)
 
void inputline_make_chat_link (struct tile *ptile, bool unit)
 
void scroll_if_necessary (GtkTextView *textview, GtkTextMark *scroll_target)
 
static gboolean event_after (GtkWidget *text_view, GdkEventButton *event)
 
static void set_cursor_if_appropriate (GtkTextView *text_view, gint x, gint y)
 
static gboolean motion_notify_event (GtkWidget *text_view, GdkEventMotion *event)
 
void set_message_buffer_view_link_handlers (GtkWidget *view)
 
void apply_text_tag (const struct text_tag *ptag, GtkTextBuffer *buf, ft_offset_t text_start_offset, const char *text)
 
void real_output_window_append (const char *astring, const struct text_tag_list *tags, int conn_id)
 
void log_output_window (void)
 
void clear_output_window (void)
 
void set_output_window_text (const char *text)
 
bool chatline_is_scrolled_to_bottom (void)
 
static gboolean chatline_scroll_callback (gpointer data)
 
void chatline_scroll_to_bottom (bool delayed)
 
static void make_tag_callback (GtkToolButton *button, gpointer data)
 
static void color_set (GObject *object, const gchar *color_target, GdkRGBA *color, GtkToolButton *button)
 
static void color_selected (GtkDialog *dialog, gint res, gpointer data)
 
static void select_color_callback (GtkToolButton *button, gpointer data)
 
static gboolean move_toolkit (GtkWidget *toolkit_view, gpointer data)
 
static gboolean set_toolbar_visibility (GtkWidget *w, gpointer data)
 
static void button_toggled (GtkToggleButton *button, gpointer data)
 
GtkWidgetinputline_toolkit_view_new (void)
 
void inputline_toolkit_view_append_button (GtkWidget *toolkit_view, GtkWidget *button)
 
void chatline_init (void)
 
static gboolean version_message_main_thread (gpointer user_data)
 
void version_message (const char *vertext)
 

Variables

static struct genlisthistory_list = NULL
 
static int history_pos = -1
 
static struct inputline_toolkit toolkit
 

Macro Definition Documentation

◆ MAX_CHATLINE_HISTORY

#define MAX_CHATLINE_HISTORY   20

Definition at line 52 of file chatline.c.

◆ MAX_MATCHES

#define MAX_MATCHES   10

Function Documentation

◆ apply_text_tag()

void apply_text_tag ( const struct text_tag ptag,
GtkTextBuffer buf,
ft_offset_t  text_start_offset,
const char text 
)

Convert a struct text_tag to a GtkTextTag.

Definition at line 755 of file chatline.c.

Referenced by real_luaconsole_append(), and real_output_window_append().

◆ button_toggled()

static void button_toggled ( GtkToggleButton button,
gpointer  data 
)
static

Show/Hide the toolbar.

Definition at line 1246 of file chatline.c.

Referenced by chatline_init().

◆ chatline_autocomplete()

static bool chatline_autocomplete ( GtkEditable editable)
static

Autocompletes the input line with a player or user name. Returns FALSE if there is no string to complete.

Definition at line 284 of file chatline.c.

Referenced by inputline_handler(), and inputline_handler().

◆ chatline_init()

void chatline_init ( void  )

Initializes the chatline stuff.

Definition at line 1302 of file chatline.c.

Referenced by activate_gui(), and ui_main().

◆ chatline_is_scrolled_to_bottom()

bool chatline_is_scrolled_to_bottom ( void  )

Returns whether the chatline is scrolled to the bottom.

Definition at line 959 of file chatline.c.

Referenced by button_toggled(), and voteinfo_gui_update().

◆ chatline_scroll_callback()

static gboolean chatline_scroll_callback ( gpointer  data)
static

Scrolls the pregame and in-game chat windows all the way to the bottom.

Why do we do it in such a convuluted fasion rather than calling chatline_scroll_to_bottom directly from toplevel_configure? Because the widget is not at its final size yet when the configure event occurs.

Definition at line 994 of file chatline.c.

Referenced by chatline_scroll_to_bottom().

◆ chatline_scroll_to_bottom()

void chatline_scroll_to_bottom ( bool  delayed)

Scrolls the pregame and in-game chat windows all the way to the bottom. If delayed is TRUE, it will be done in a idle_callback.

Definition at line 1006 of file chatline.c.

Referenced by button_toggled(), chatline_scroll_callback(), main_message_area_resize(), main_message_area_size_allocate(), real_set_client_page(), and voteinfo_gui_update().

◆ check_player_or_user_name()

static int check_player_or_user_name ( const char prefix,
const char **  matches,
const int  max_matches 
)
static

Find a player or a user by prefix.

Parameters
prefixThe prefix.
matchesA string array to set the matches result.
max_matchesThe maximum of matches.
Returns
the number of the matches names.

Definition at line 202 of file chatline.c.

Referenced by chatline_autocomplete().

◆ clear_output_window()

void clear_output_window ( void  )

Clear output window. This does not destroy it, or free its resources

Definition at line 943 of file chatline.c.

Referenced by clear_chat_logs_callback(), and clear_chat_logs_callback().

◆ color_selected()

static void color_selected ( GtkDialog dialog,
gint  res,
gpointer  data 
)
static

Color selection dialog response.

Definition at line 1094 of file chatline.c.

Referenced by select_color_callback(), and select_color_callback().

◆ color_set()

static void color_set ( GObject object,
const gchar color_target,
GdkRGBA color,
GtkToolButton button 
)
static

Set the color for an object. Update the button if not NULL.

Definition at line 1043 of file chatline.c.

◆ event_after()

static gboolean event_after ( GtkWidget text_view,
GdkEventButton event 
)
static

Click a link.

Definition at line 584 of file chatline.c.

Referenced by set_message_buffer_view_link_handlers().

◆ get_common_prefix()

static size_t get_common_prefix ( const char *const prefixes,
size_t  num_prefixes,
char buf,
size_t  buf_len 
)
static

Find the larger common prefix.

prefixes - A list of prefixes. num_prefixes - The number of prefixes. buf - The buffer to set. buf_len - The maximal size of the buffer.

Returns the length of the common prefix (in characters).

Definition at line 257 of file chatline.c.

Referenced by chatline_autocomplete().

◆ get_player_or_user_name()

static const char * get_player_or_user_name ( int  id)
static

Returns the name of player or user, set in the same list.

Definition at line 175 of file chatline.c.

Referenced by check_player_or_user_name().

◆ inputline_grab_focus()

void inputline_grab_focus ( void  )

Gives the focus to the intput line.

Definition at line 79 of file chatline.c.

Referenced by real_set_client_page(), toplevel_key_press_handler(), and toplevel_key_press_handler().

◆ inputline_handler()

static gboolean inputline_handler ( GtkWidget w,
GdkEventKey ev 
)
static

Called when a key is pressed.

Definition at line 345 of file chatline.c.

Referenced by chatline_init().

◆ inputline_has_focus()

bool inputline_has_focus ( void  )

Returns TRUE iff the input line has focus.

Definition at line 71 of file chatline.c.

Referenced by toplevel_key_press_handler(), toplevel_key_press_handler(), and toplevel_key_release_handler().

◆ inputline_is_visible()

bool inputline_is_visible ( void  )

Returns TRUE iff the input line is currently visible.

Definition at line 87 of file chatline.c.

Referenced by toplevel_key_press_handler(), and toplevel_key_press_handler().

◆ inputline_make_chat_link()

void inputline_make_chat_link ( struct tile ptile,
bool  unit 
)

Make a chat link at the current position or make the current selection clickable.

Definition at line 474 of file chatline.c.

Referenced by butt_down_mapcanvas(), and right_butt_down_mapcanvas().

◆ inputline_make_tag()

void inputline_make_tag ( GtkEntry entry,
enum text_tag_type  type 
)
static

Make a text tag for the selected text.

Definition at line 416 of file chatline.c.

Referenced by inputline_handler(), inputline_handler(), make_tag_callback(), and make_tag_callback().

◆ inputline_return()

static void inputline_return ( GtkEntry w,
gpointer  data 
)
static

Called when the return key is pressed.

Definition at line 139 of file chatline.c.

Referenced by chatline_init().

◆ inputline_toolkit_view_append_button()

void inputline_toolkit_view_append_button ( GtkWidget toolkit_view,
GtkWidget button 
)

Appends a button to the inputline toolkit view widget.

Definition at line 1292 of file chatline.c.

Referenced by create_start_page(), and setup_widgets().

◆ inputline_toolkit_view_new()

GtkWidget * inputline_toolkit_view_new ( void  )

Returns a new inputline toolkit view widget that can contain the inputline.

This widget has the following datas: "button_box": pointer to the GtkHBox where to append buttons.

Definition at line 1270 of file chatline.c.

Referenced by create_start_page(), and setup_widgets().

◆ is_plain_public_message()

static bool is_plain_public_message ( const char s)
static

Helper function to determine if a given client input line is intended as a "plain" public message. Note that messages prefixed with : are a special case (explicit public messages), and will return FALSE.

Definition at line 97 of file chatline.c.

Referenced by inputline_return(), and chat_listener::send_chat_message().

◆ log_output_window()

void log_output_window ( void  )

I have no idea what module this belongs in – Syela I've decided to put output_window routines in chatline.c, because the are somewhat related and output_window_* is already here. –dwp

Definition at line 928 of file chatline.c.

Referenced by save_chat_logs_callback(), and save_chat_logs_callback().

◆ make_tag_callback()

static void make_tag_callback ( GtkToolButton button,
gpointer  data 
)
static

Tool button clicked.

Definition at line 1033 of file chatline.c.

Referenced by chatline_init().

◆ motion_notify_event()

static gboolean motion_notify_event ( GtkWidget text_view,
GdkEventMotion event 
)
static

Maybe are the mouse is moving over a link.

Definition at line 728 of file chatline.c.

Referenced by set_message_buffer_view_link_handlers().

◆ move_toolkit()

static gboolean move_toolkit ( GtkWidget toolkit_view,
gpointer  data 
)
static

Moves the tool kit to the toolkit view.

Definition at line 1155 of file chatline.c.

Referenced by inputline_toolkit_view_new().

◆ real_output_window_append()

void real_output_window_append ( const char astring,
const struct text_tag_list tags,
int  conn_id 
)

Appends the string to the chat output window. The string should be inserted on its own line, although it will have no newline.

Definition at line 874 of file chatline.c.

Referenced by fc_client::fc_main(), output_window_append(), and output_window_event().

◆ scroll_if_necessary()

void scroll_if_necessary ( GtkTextView textview,
GtkTextMark scroll_target 
)

Scroll a textview so that the given mark is visible, but only if the scroll window containing the textview is very close to the bottom. The text mark 'scroll_target' should probably be the first character of the last line in the text buffer.

Definition at line 557 of file chatline.c.

Referenced by real_luaconsole_append(), and real_output_window_append().

◆ select_color_callback()

static void select_color_callback ( GtkToolButton button,
gpointer  data 
)
static

Color selection tool button clicked.

Definition at line 1120 of file chatline.c.

Referenced by chatline_init().

◆ set_cursor_if_appropriate()

static void set_cursor_if_appropriate ( GtkTextView text_view,
gint  x,
gint  y 
)
static

Set the "hand" cursor when moving over a link.

Definition at line 674 of file chatline.c.

Referenced by chat_pointer_motion(), and motion_notify_event().

◆ set_message_buffer_view_link_handlers()

void set_message_buffer_view_link_handlers ( GtkWidget view)

Set the appropriate callbacks for the message buffer.

Definition at line 744 of file chatline.c.

Referenced by luaconsole_dialog_create(), and setup_widgets().

◆ set_output_window_text()

void set_output_window_text ( const char text)

Set given text to output window

Definition at line 951 of file chatline.c.

◆ set_toolbar_visibility()

static gboolean set_toolbar_visibility ( GtkWidget w,
gpointer  data 
)
static

Show/Hide the toolbar.

Definition at line 1216 of file chatline.c.

Referenced by chatline_init().

◆ version_message()

void version_message ( const char vertext)

Got version message from metaserver thread.

Definition at line 1477 of file chatline.c.

◆ version_message_main_thread()

static gboolean version_message_main_thread ( gpointer  user_data)
static

Main thread side callback to print version message

Definition at line 1463 of file chatline.c.

Referenced by version_message().

Variable Documentation

◆ history_list

struct genlist* history_list = NULL
static

Definition at line 54 of file chatline.c.

Referenced by chatline_init(), inputline_handler(), inputline_handler(), and inputline_return().

◆ history_pos

int history_pos = -1
static

Definition at line 55 of file chatline.c.

Referenced by chatline_init(), inputline_handler(), inputline_handler(), and inputline_return().

◆ toolkit