OpenTTD Source  20241108-master-g80f628063a
console_gui.cpp File Reference

Handling the GUI of the in-game console. More...

#include "stdafx.h"
#include "textbuf_type.h"
#include "window_gui.h"
#include "autocompletion.h"
#include "console_gui.h"
#include "console_internal.h"
#include "window_func.h"
#include "string_func.h"
#include "strings_func.h"
#include "gfx_func.h"
#include "gfx_layout.h"
#include "settings_type.h"
#include "console_func.h"
#include "rev.h"
#include "video/video_driver.hpp"
#include "timer/timer.h"
#include "timer/timer_window.h"
#include "widgets/console_widget.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  IConsoleLine
 Container for a single line of console output. More...
 
class  ConsoleAutoCompletion
 
struct  IConsoleWindow
 

Functions

static bool TruncateBuffer ()
 Remove old lines from the backlog buffer. More...
 
static void IConsoleClearCommand ()
 
static void IConsoleResetHistoryPos ()
 
static const char * IConsoleHistoryAdd (const char *cmd)
 Add the entered line into the history so you can look it back scroll, etc. More...
 
static void IConsoleHistoryNavigate (int direction)
 Navigate Up/Down in the history of typed commands. More...
 
void IConsoleGUIInit ()
 
void IConsoleClearBuffer ()
 
void IConsoleGUIFree ()
 
void IConsoleResize (Window *w)
 Change the size of the in-game console window after the screen size changed, or the window state changed.
 
void IConsoleSwitch ()
 Toggle in-game console between opened and closed.
 
void IConsoleClose ()
 Close the in-game console.
 
void IConsoleGUIPrint (TextColour colour_code, const std::string &str)
 Handle the printing of text entered into the console or redirected there by any other means. More...
 
bool IsValidConsoleColour (TextColour c)
 Check whether the given TextColour is valid for console usage. More...
 

Variables

static const uint ICON_HISTORY_SIZE = 20
 
static const uint ICON_RIGHT_BORDERWIDTH = 10
 
static const uint ICON_BOTTOM_BORDERWIDTH = 12
 
static std::deque< IConsoleLine_iconsole_buffer
 The console backlog buffer. More...
 
static Textbuf _iconsole_cmdline (ICON_CMDLN_SIZE)
 
static std::deque< std::string > _iconsole_history
 
static ptrdiff_t _iconsole_historypos
 
IConsoleModes _iconsole_mode
 
static constexpr NWidgetPart _nested_console_window_widgets []
 
static WindowDesc _console_window_desc (WDP_MANUAL, nullptr, 0, 0, WC_CONSOLE, WC_NONE, 0, _nested_console_window_widgets)
 

Detailed Description

Handling the GUI of the in-game console.

Definition in file console_gui.cpp.

Function Documentation

◆ IConsoleGUIPrint()

void IConsoleGUIPrint ( TextColour  colour_code,
const std::string &  str 
)

Handle the printing of text entered into the console or redirected there by any other means.

Text can be redirected to other clients in a network game as well as to a logfile. If the network server is a dedicated server, all activities are also logged. All lines to print are added to a temporary buffer which can be used as a history to print them onscreen

Parameters
colour_codethe colour of the command. Red in case of errors, etc.
strthe message entered or output on the console (notice, error, etc.)

Definition at line 501 of file console_gui.cpp.

References _iconsole_buffer, SetWindowDirty(), and WC_CONSOLE.

◆ IConsoleHistoryAdd()

static const char * IConsoleHistoryAdd ( const char *  cmd)
static

Add the entered line into the history so you can look it back scroll, etc.

Put it to the beginning as it is the latest text

Parameters
cmdText to be entered into the 'history'
Returns
the command to execute

Definition at line 456 of file console_gui.cpp.

References IsWhitespace(), and StrEmpty().

◆ IConsoleHistoryNavigate()

static void IConsoleHistoryNavigate ( int  direction)
static

Navigate Up/Down in the history of typed commands.

Parameters
directionGo further back in history (+1), go to recently typed commands (-1)

Definition at line 479 of file console_gui.cpp.

◆ IsValidConsoleColour()

bool IsValidConsoleColour ( TextColour  c)

Check whether the given TextColour is valid for console usage.

Parameters
cThe text colour to compare to.
Returns
true iff the TextColour is valid for console usage.

Definition at line 541 of file console_gui.cpp.

References TC_IS_PALETTE_COLOUR.

Referenced by IConsolePrint(), ClientNetworkGameSocketHandler::Receive_SERVER_EXTERNAL_CHAT(), and ClientNetworkGameSocketHandler::Receive_SERVER_RCON().

◆ TruncateBuffer()

static bool TruncateBuffer ( )
static

Remove old lines from the backlog buffer.

The buffer is limited by a maximum size and a minimum age. Every time truncation runs, all lines in the buffer are aged by one. When a line exceeds both the maximum position and also the maximum age, it gets removed.

Returns
true if any lines were removed

Definition at line 514 of file console_gui.cpp.

References _iconsole_buffer, _settings_client, GUISettings::console_backlog_length, GUISettings::console_backlog_timeout, and ClientSettings::gui.

Variable Documentation

◆ _iconsole_buffer

std::deque<IConsoleLine> _iconsole_buffer
static

The console backlog buffer.

Item index 0 is the newest line.

Definition at line 69 of file console_gui.cpp.

Referenced by IConsoleGUIPrint(), IConsoleWindow::OnPaint(), IConsoleWindow::Scroll(), and TruncateBuffer().

◆ _nested_console_window_widgets

constexpr NWidgetPart _nested_console_window_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_BACKGROUND), SetResize(1, 1),
}
@ WID_C_BACKGROUND
Background of the console.
constexpr NWidgetPart NWidget(WidgetType tp, Colours col, WidgetID idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1309
constexpr NWidgetPart SetResize(int16_t dx, int16_t dy)
Widget part function for setting the resize step.
Definition: widget_type.h:1126
@ WWT_EMPTY
Empty widget, place holder to reserve space in widget tree.
Definition: widget_type.h:48

Definition at line 139 of file console_gui.cpp.