Freeciv-3.1
|
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "fc_cmdline.h"
#include "fciconv.h"
#include "fcintl.h"
#include "log.h"
#include "mem.h"
#include "support.h"
#include "dataio.h"
#include "featured_text.h"
#include "game.h"
#include "government.h"
#include "map.h"
#include "unitlist.h"
#include "version.h"
#include "client_main.h"
#include "climisc.h"
#include "clinet.h"
#include "colors.h"
#include "connectdlg_common.h"
#include "control.h"
#include "editor.h"
#include "options.h"
#include "text.h"
#include "tilespec.h"
#include "zoom.h"
#include "chatline.h"
#include "citizensinfo.h"
#include "connectdlg.h"
#include "cma_fe.h"
#include "dialogs.h"
#include "diplodlg.h"
#include "editgui.h"
#include "gotodlg.h"
#include "graphics.h"
#include "gui_stuff.h"
#include "happiness.h"
#include "helpdlg.h"
#include "inteldlg.h"
#include "mapctrl.h"
#include "mapview.h"
#include "menu.h"
#include "messagewin.h"
#include "optiondlg.h"
#include "pages.h"
#include "plrdlg.h"
#include "luaconsole.h"
#include "spaceshipdlg.h"
#include "repodlgs.h"
#include "voteinfo_bar.h"
#include "gui_main.h"
Go to the source code of this file.
Data Structures | |
struct | callback |
Macros | |
#define | OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK (2 * 64) |
#define | OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK (2 * 46) |
#define | OVERVIEW_CANVAS_STORE_WIDTH (2 * OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK) |
#define | OVERVIEW_CANVAS_STORE_HEIGHT (2 * OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK) |
#define | MIGRATE_OPTION(opt) gui_options.gui_gtk3_##opt = gui_options.gui_gtk2_##opt; |
#define | MIGRATE_STR_OPTION(opt) |
#define | MIGRATE_OPTION(opt) GUI_GTK_OPTION(opt) = gui_options.gui_gtk3_##opt; |
#define | MIGRATE_STR_OPTION(opt) |
#define | option_var_set_callback(var, callback) |
Functions | |
static void | set_g_log_callbacks (void) |
static gboolean | show_info_button_release (GtkWidget *w, GdkEventButton *ev, gpointer data) |
static gboolean | show_info_popup (GtkWidget *w, GdkEventButton *ev, gpointer data) |
static void | end_turn_callback (GtkWidget *w, gpointer data) |
static gboolean | get_net_input (GIOChannel *source, GIOCondition condition, gpointer data) |
static void | set_wait_for_writable_socket (struct connection *pc, bool socket_writable) |
static void | print_usage (void) |
static bool | parse_options (int argc, char **argv) |
static gboolean | toplevel_key_press_handler (GtkWidget *w, GdkEventKey *ev, gpointer data) |
static gboolean | toplevel_key_release_handler (GtkWidget *w, GdkEventKey *ev, gpointer data) |
static gboolean | mouse_scroll_mapcanvas (GtkWidget *w, GdkEventScroll *ev) |
static void | tearoff_callback (GtkWidget *b, gpointer data) |
static GtkWidget * | detached_widget_new (void) |
static GtkWidget * | detached_widget_fill (GtkWidget *tearbox) |
static gboolean | select_unit_image_callback (GtkWidget *w, GdkEvent *ev, gpointer data) |
static gboolean | select_more_arrow_pixmap_callback (GtkWidget *w, GdkEvent *ev, gpointer data) |
static gboolean | quit_dialog_callback (void) |
static void | allied_chat_button_toggled (GtkToggleButton *button, gpointer user_data) |
static void | free_unit_table (void) |
static void | adjust_default_options (void) |
static void | log_callback_utf8 (enum log_level level, const char *message, bool file_too) |
static gboolean | timer_callback (gpointer data) |
static gboolean | toplevel_focus (GtkWidget *w, GtkDirectionType arg) |
static void | main_message_area_size_allocate (GtkWidget *widget, GtkAllocation *allocation, gpointer data) |
gboolean | map_canvas_focus (void) |
static gboolean | toplevel_handler (GtkWidget *w, GdkEvent *ev, gpointer data) |
static gboolean | key_press_map_canvas (GtkWidget *w, GdkEventKey *ev, gpointer data) |
static void | tearoff_destroy (GtkWidget *w, gpointer data) |
static gboolean | propagate_keypress (GtkWidget *w, GdkEvent *ev) |
static void | populate_unit_image_table (void) |
void | reset_unit_table (void) |
void | enable_menus (bool enable) |
static gboolean | right_notebook_button_release (GtkWidget *widget, GdkEventButton *event) |
void | update_turn_done_tooltip (void) |
static void | setup_widgets (void) |
static void | g_log_to_freelog_cb (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) |
static GLogWriterOutput | g_log_writer_to_freelog_cb (GLogLevelFlags log_level, const GLogField *fields, gsize n_fields, gpointer user_data) |
static void | set_g_log_callback_domain (const char *domain) |
void | ui_init (void) |
int | main (int argc, char **argv) |
static void | migrate_options_from_gtk2 (void) |
static void | migrate_options_from_gtk3 (void) |
int | ui_main (int argc, char **argv) |
bool | is_gui_up (void) |
void | ui_exit (void) |
enum gui_type | get_gui_type (void) |
void | sound_bell (void) |
void | set_unit_icon (int idx, struct unit *punit) |
void | set_unit_icons_more_arrow (bool onoff) |
void | real_focus_units_changed (void) |
void | add_net_input (int sock) |
void | remove_net_input (void) |
static void | quit_dialog_response (GtkWidget *dialog, gint response) |
void | quit_gtk_main (void) |
void | popup_quit_dialog (void) |
static gboolean | idle_callback_wrapper (gpointer data) |
void | add_idle_callback (void(callback)(void *), void *data) |
static void | allied_chat_only_callback (struct option *poption) |
void | fullscreen_opt_refresh (struct option *poption) |
static void | apply_city_names_font (struct option *poption) |
static void | apply_city_productions_font (struct option *poption) |
static void | apply_reqtree_text_font (struct option *poption) |
void | options_extra_init (void) |
void | refresh_chat_buttons (void) |
void | insert_client_build_info (char *outbuf, size_t outlen) |
static bool | monitor_size (GdkRectangle *rect_p) |
int | screen_width (void) |
int | screen_height (void) |
struct video_mode * | resolution_request_get (void) |
#define MIGRATE_OPTION | ( | opt | ) | gui_options.gui_gtk3_##opt = gui_options.gui_gtk2_##opt; |
#define MIGRATE_OPTION | ( | opt | ) | GUI_GTK_OPTION(opt) = gui_options.gui_gtk3_##opt; |
#define MIGRATE_STR_OPTION | ( | opt | ) |
#define MIGRATE_STR_OPTION | ( | opt | ) |
#define option_var_set_callback | ( | var, | |
callback | |||
) |
#define OVERVIEW_CANVAS_STORE_HEIGHT (2 * OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK) |
Definition at line 119 of file gui_main.c.
#define OVERVIEW_CANVAS_STORE_HEIGHT_NETBOOK (2 * 46) |
Definition at line 116 of file gui_main.c.
#define OVERVIEW_CANVAS_STORE_WIDTH (2 * OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK) |
Definition at line 117 of file gui_main.c.
#define OVERVIEW_CANVAS_STORE_WIDTH_NETBOOK (2 * 64) |
Definition at line 115 of file gui_main.c.
void add_idle_callback | ( | void(callback)(void *) | , |
void * | data | ||
) |
Enqueue a callback to be called during an idle moment. The 'callback' function should be called sometimes soon, and passed the 'data' pointer as its data.
Definition at line 2368 of file gui_main.c.
void add_net_input | ( | int | sock | ) |
This function is called after the client has successfully connected to the server
Definition at line 2256 of file gui_main.c.
|
static |
Make dynamic adjustments to first-launch default options.
Definition at line 2586 of file gui_main.c.
|
static |
Handle a toggle of the "Allies Only" chat button.
Definition at line 2493 of file gui_main.c.
|
static |
Option callback for the 'allied_chat_only' gtk-gui option. This updates the state of the associated toggle button.
Definition at line 2381 of file gui_main.c.
|
static |
Change the city names font.
Definition at line 2408 of file gui_main.c.
|
static |
Change the city productions font.
Definition at line 2419 of file gui_main.c.
|
static |
Change the city productions font.
Definition at line 2430 of file gui_main.c.
|
static |
Creates the toggle button necessary to detach and reattach the widget and returns a vbox in which you fill your goodies.
Definition at line 813 of file gui_main.c.
|
static |
Create the container for the widget that's able to be detached
Definition at line 802 of file gui_main.c.
void enable_menus | ( | bool | enable | ) |
Enable/Disable the game page menu bar.
Definition at line 1020 of file gui_main.c.
|
static |
User clicked "Turn Done" button
Definition at line 2211 of file gui_main.c.
|
static |
Free unit image table.
Definition at line 963 of file gui_main.c.
void fullscreen_opt_refresh | ( | struct option * | poption | ) |
Option callback for the 'fullscreen' gtk-gui option.
Definition at line 2396 of file gui_main.c.
|
static |
g_log callback to log with freelog
Definition at line 1651 of file gui_main.c.
Referenced by g_log_writer_to_freelog_cb(), set_g_log_callback_domain(), and set_g_log_callbacks().
|
static |
g_log callback to log with freelog
Definition at line 1679 of file gui_main.c.
Referenced by set_g_log_callbacks().
enum gui_type get_gui_type | ( | void | ) |
Return our GUI type
Definition at line 2040 of file gui_main.c.
|
static |
Read input from server socket
Definition at line 2220 of file gui_main.c.
|
static |
A wrapper for the callback called through add_idle_callback.
Definition at line 2353 of file gui_main.c.
void insert_client_build_info | ( | char * | outbuf, |
size_t | outlen | ||
) |
Insert build information to help
Definition at line 2502 of file gui_main.c.
bool is_gui_up | ( | void | ) |
Return whether gui is currently running.
Definition at line 2021 of file gui_main.c.
|
static |
Handle keypress events when map canvas is in focus
Definition at line 388 of file gui_main.c.
Callback for freelog
Definition at line 226 of file gui_main.c.
int main | ( | int | argc, |
char ** | argv | ||
) |
Entry point for whole freeciv client program.
Definition at line 1733 of file gui_main.c.
|
static |
When the chatline text view is resized, scroll it to the bottom. This prevents users from accidentally missing messages when the chatline gets scrolled up a small amount and stops scrolling down automatically.
Definition at line 330 of file gui_main.c.
gboolean map_canvas_focus | ( | void | ) |
Focus on map canvas
Definition at line 347 of file gui_main.c.
|
static |
Migrate gtk3 client specific options from gtk2 client options.
Definition at line 1741 of file gui_main.c.
|
static |
Migrate gtk3.22 client specific options from gtk3 client options.
Definition at line 1796 of file gui_main.c.
Referenced by activate_gui(), and ui_main().
|
static |
Return dimensions of primary monitor, if any (in 'application pixels')
Definition at line 2516 of file gui_main.c.
Referenced by screen_height(), and screen_width().
|
static |
Mouse/touchpad scrolling over the mapview
Definition at line 671 of file gui_main.c.
void options_extra_init | ( | void | ) |
Extra initializers for client options. Here we make set the callback for the specific gui-gtk-3.22 options.
Definition at line 2442 of file gui_main.c.
|
static |
Search for gui-specific command-line options.
Definition at line 274 of file gui_main.c.
|
static |
Called to build the unit_below pixmap table. This is the table on the left of the screen that shows all of the inactive units in the current tile.
It may be called again if the tileset changes.
Definition at line 858 of file gui_main.c.
void popup_quit_dialog | ( | void | ) |
Popups the dialog with the message: Are you sure you want to quit?
Definition at line 2312 of file gui_main.c.
|
static |
Print extra usage information, including one line help on each option, to stderr.
Definition at line 251 of file gui_main.c.
|
static |
Propagates a keypress in a tearoff back to the toplevel window.
Definition at line 746 of file gui_main.c.
|
static |
Popups the quit dialog.
Definition at line 2338 of file gui_main.c.
|
static |
This is the response callback for the dialog with the message: Are you sure you want to quit?
Definition at line 2285 of file gui_main.c.
void quit_gtk_main | ( | void | ) |
Exit gtk main loop.
Definition at line 2300 of file gui_main.c.
void real_focus_units_changed | ( | void | ) |
Called when the set of units in focus (get_units_in_focus()) changes. Standard updates like update_unit_info_label() are handled in the platform- independent code; we use this to keep the goto/airlift dialog up to date, if it's visible.
Definition at line 2112 of file gui_main.c.
void refresh_chat_buttons | ( | void | ) |
Set the chatline buttons to reflect the state of the game and current client options. This function should be called on game start.
Definition at line 2472 of file gui_main.c.
void remove_net_input | ( | void | ) |
This function is called if the client disconnects from the server
Definition at line 2274 of file gui_main.c.
void reset_unit_table | ( | void | ) |
Called when the tileset is changed to reset the unit pixmap table.
Definition at line 991 of file gui_main.c.
struct video_mode * resolution_request_get | ( | void | ) |
Give resolution requested by user, if any.
Definition at line 2574 of file gui_main.c.
|
static |
Workaround for a crash that occurs when a button release event is emitted for a notebook with no pages. See PR#40743. FIXME: Remove this hack once gtk_notebook_button_release() in gtk/gtknotebook.c checks for NULL notebook->cur_page.
Definition at line 1043 of file gui_main.c.
int screen_height | ( | void | ) |
Return height of the primary monitor
Definition at line 2556 of file gui_main.c.
int screen_width | ( | void | ) |
Return width of the primary monitor
Definition at line 2538 of file gui_main.c.
|
static |
Callback for clicking a unit icon underneath unit info box. these are the units on the same tile as the focus unit.
Definition at line 2152 of file gui_main.c.
|
static |
Callback for clicking a unit icon underneath unit info box. these are the units on the same tile as the focus unit.
Definition at line 2121 of file gui_main.c.
|
static |
Set up g_log callback for a single domain.
Definition at line 1695 of file gui_main.c.
Referenced by set_g_log_callbacks().
|
static |
void set_unit_icon | ( | int | idx, |
struct unit * | punit | ||
) |
Set one of the unit icons in information area based on punit. Use punit == NULL to clear icon. Index 'idx' is -1 for "active unit", or 0 to (num_units_below - 1) for units below. Also updates unit_ids[idx] for idx >= 0.
Definition at line 2059 of file gui_main.c.
void set_unit_icons_more_arrow | ( | bool | onoff | ) |
Set the "more arrow" for the unit icons to on(1) or off(0). Maintains a static record of current state to avoid unnecessary redraws. Note initial state should match initial gui setup (off).
Definition at line 2089 of file gui_main.c.
|
static |
Set socket writability state
Definition at line 2231 of file gui_main.c.
|
static |
Do the heavy lifting for the widget setup.
Definition at line 1095 of file gui_main.c.
|
static |
Button released when showing info popup
Definition at line 2167 of file gui_main.c.
|
static |
Popup info box
Definition at line 2180 of file gui_main.c.
void sound_bell | ( | void | ) |
obvious...
Definition at line 2048 of file gui_main.c.
|
static |
Callback for the toggle button in the detachable widget: causes the widget to detach or reattach.
Definition at line 757 of file gui_main.c.
|
static |
Reattaches the detached widget when the user destroys it.
Definition at line 723 of file gui_main.c.
|
static |
Called while in gtk_main() (which is all of the time) TIMER_INTERVAL is now set by real_timer_callback()
Definition at line 238 of file gui_main.c.
|
static |
Focus on widget. Returns whether focus was really changed.
Definition at line 303 of file gui_main.c.
|
static |
In GTK+ keyboard events are recursively propagated from the hierarchy parent down to its children. Sometimes this is not what we want. E.g. The inputline is active, the user presses the 's' key, we want it to be sent to the inputline, but because the main menu is further up the hierarchy, it wins and the inputline never gets anything! This function ensures an entry widget (like the inputline) always gets first dibs at handling a keyboard event.
Definition at line 364 of file gui_main.c.
|
static |
Handle a keyboard key press made in the client's toplevel window.
Definition at line 587 of file gui_main.c.
|
static |
Handler for "key release" for toplevel window
Definition at line 569 of file gui_main.c.
void ui_exit | ( | void | ) |
Do any necessary UI-specific cleanup
Definition at line 2029 of file gui_main.c.
void ui_init | ( | void | ) |
Called from main().
Definition at line 1723 of file gui_main.c.
int ui_main | ( | int | argc, |
char ** | argv | ||
) |
Called from client_main(), is what it's named.
Definition at line 1855 of file gui_main.c.
void update_turn_done_tooltip | ( | void | ) |
Override background color for canvases Update tooltip of the Turn Done button
Definition at line 1076 of file gui_main.c.
GtkWidget * ahbox |
Definition at line 139 of file gui_main.c.
|
static |
Definition at line 178 of file gui_main.c.
GtkWidget* avbox |
Definition at line 139 of file gui_main.c.
|
static |
Definition at line 130 of file gui_main.c.
GtkWidget * bottom_notebook |
Definition at line 128 of file gui_main.c.
GtkWidget* bulb_ebox |
Definition at line 155 of file gui_main.c.
GtkWidget* bulb_label |
Definition at line 143 of file gui_main.c.
PangoFontDescription* city_names_style = NULL |
Definition at line 132 of file gui_main.c.
PangoFontDescription* city_productions_style = NULL |
Definition at line 133 of file gui_main.c.
const char* client_string = GUI_NAME_FULL |
Definition at line 104 of file gui_main.c.
GtkWidget * conn_box |
Definition at line 139 of file gui_main.c.
gint cur_x |
Definition at line 183 of file gui_main.c.
gint cur_y |
Definition at line 183 of file gui_main.c.
GtkWidget* econ_ebox |
Definition at line 154 of file gui_main.c.
GtkWidget* econ_label[10] |
Definition at line 142 of file gui_main.c.
GtkWidget* flake_ebox |
Definition at line 157 of file gui_main.c.
GtkWidget* flake_label |
Definition at line 145 of file gui_main.c.
GtkWidget* government_ebox |
Definition at line 158 of file gui_main.c.
GtkWidget* government_label |
Definition at line 146 of file gui_main.c.
const char* const gui_character_encoding = "UTF-8" |
Definition at line 160 of file gui_main.c.
Definition at line 185 of file gui_main.c.
Definition at line 161 of file gui_main.c.
GtkWidget* main_frame_civ_name |
Definition at line 136 of file gui_main.c.
GtkWidget* main_label_info |
Definition at line 137 of file gui_main.c.
|
static |
Definition at line 163 of file gui_main.c.
GtkTextView* main_message_area |
Definition at line 176 of file gui_main.c.
GtkWidget* map_canvas |
Definition at line 106 of file gui_main.c.
GtkWidget* map_horizontal_scrollbar |
Definition at line 107 of file gui_main.c.
GtkWidget* map_vertical_scrollbar |
Definition at line 108 of file gui_main.c.
GtkWidget* map_widget |
Definition at line 129 of file gui_main.c.
GtkTextBuffer* message_buffer = NULL |
Definition at line 177 of file gui_main.c.
|
static |
Definition at line 169 of file gui_main.c.
|
static |
Definition at line 170 of file gui_main.c.
|
static |
Definition at line 171 of file gui_main.c.
GtkWidget* overview_canvas |
Definition at line 110 of file gui_main.c.
int overview_canvas_store_height = OVERVIEW_CANVAS_STORE_HEIGHT |
Definition at line 122 of file gui_main.c.
int overview_canvas_store_width = OVERVIEW_CANVAS_STORE_WIDTH |
Definition at line 121 of file gui_main.c.
GtkWidget* overview_scrolled_window |
Definition at line 111 of file gui_main.c.
PangoFontDescription* reqtree_text_style = NULL |
Definition at line 134 of file gui_main.c.
GtkWidget * right_notebook |
Definition at line 128 of file gui_main.c.
GdkWindow* root_window |
Definition at line 125 of file gui_main.c.
GtkWidget* scroll_panel |
Definition at line 140 of file gui_main.c.
|
static |
Definition at line 181 of file gui_main.c.
|
static |
Definition at line 182 of file gui_main.c.
GtkWidget* sun_ebox |
Definition at line 156 of file gui_main.c.
GtkWidget* sun_label |
Definition at line 144 of file gui_main.c.
GtkWidget* timeout_label |
Definition at line 147 of file gui_main.c.
|
static |
Definition at line 180 of file gui_main.c.
GtkWidget* top_notebook |
Definition at line 128 of file gui_main.c.
GtkWidget* top_vbox |
Definition at line 127 of file gui_main.c.
GtkWidget* toplevel |
Definition at line 124 of file gui_main.c.
GtkWidget* toplevel_tabs |
Definition at line 126 of file gui_main.c.
GtkWidget* turn_done_button |
Definition at line 148 of file gui_main.c.
|
static |
Definition at line 167 of file gui_main.c.
|
static |
Definition at line 168 of file gui_main.c.
|
static |
Definition at line 173 of file gui_main.c.
|
static |
Definition at line 174 of file gui_main.c.
|
static |
Definition at line 165 of file gui_main.c.
|
static |
Definition at line 166 of file gui_main.c.
|
static |
Definition at line 164 of file gui_main.c.
GtkWidget* unit_info_box |
Definition at line 151 of file gui_main.c.
GtkWidget* unit_info_frame |
Definition at line 152 of file gui_main.c.
GtkWidget* unit_info_label |
Definition at line 150 of file gui_main.c.
|
static |
Definition at line 187 of file gui_main.c.