Freeciv-3.2
Loading...
Searching...
No Matches
finddlg.c
Go to the documentation of this file.
1/***********************************************************************
2 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2, or (at your option)
6 any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12***********************************************************************/
13
14#ifdef HAVE_CONFIG_H
15#include <fc_config.h>
16#endif
17
18#include <stdio.h>
19#include <stdlib.h>
20#include <string.h>
21
22#include <gtk/gtk.h>
23
24/* utility */
25#include "fcintl.h"
26#include "log.h"
27
28/* common */
29#include "game.h"
30#include "player.h"
31
32/* client */
33#include "options.h"
34
35/* client/gui-gtk-4.0 */
36#include "dialogs.h"
37#include "gui_main.h"
38#include "gui_stuff.h"
39#include "mapview.h"
40
41#include "finddlg.h"
42
45
46static void update_find_dialog(GtkListStore *store);
47
48static void find_response(struct gui_dialog *dlg, int response, gpointer data);
49static void find_destroy_callback(GtkWidget *w, gpointer data);
50static void find_selection_callback(GtkTreeSelection *selection,
51 GtkTreeModel *model);
52
53static struct tile *pos;
54
55/**********************************************************************/
59{
60 if (!find_dialog_shell) {
62 GtkWidget *sw;
63 GtkListStore *store;
64 GtkTreeSelection *selection;
65 GtkCellRenderer *renderer;
67
69
71 TRUE);
74
75 gui_dialog_add_button(find_dialog_shell, "edit-find", _("_Find"),
79
81
84
88
91 g_object_unref(store);
94
95 renderer = gtk_cell_renderer_text_new();
97 "text", 0, NULL);
100
110
113
115 "use-underline", TRUE,
116 "mnemonic-widget", find_view,
117 "label", _("Ci_ties:"),
118 "xalign", 0.0, "yalign", 0.5, NULL);
121
122 g_signal_connect(selection, "changed",
124
125 update_find_dialog(store);
127
129 }
130
132}
133
134/**********************************************************************/
138{
139 GtkTreeIter it;
140
142
143 players_iterate(pplayer) {
144 city_list_iterate(pplayer->cities, pcity) {
145 GValue value = { 0, };
146
147 gtk_list_store_append(store, &it);
148
151 gtk_list_store_set_value(store, &it, 0, &value);
152 g_value_unset(&value);
153
154 gtk_list_store_set(store, &it, 1, pcity, -1);
157}
158
159/**********************************************************************/
162static void find_response(struct gui_dialog *dlg, int response, gpointer data)
163{
164 if (response == GTK_RESPONSE_ACCEPT) {
165 GtkTreeSelection *selection;
166 GtkTreeModel *model;
167 GtkTreeIter it;
168
170
171 if (gtk_tree_selection_get_selected(selection, &model, &it)) {
172 struct city *pcity;
173
174 gtk_tree_model_get(model, &it, 1, &pcity, -1);
175
176 if (pcity) {
177 pos = pcity->tile;
178 }
179 }
180 }
182}
183
184/**********************************************************************/
193
194/**********************************************************************/
198 GtkTreeModel *model)
199{
200 GtkTreeIter it;
201 struct city *pcity;
202
203 if (!gtk_tree_selection_get_selected(selection, NULL, &it))
204 return;
205
206 gtk_tree_model_get(model, &it, 1, &pcity, -1);
207
208 if (pcity) {
211 can_slide = TRUE;
212 }
213}
const char * city_name_get(const struct city *pcity)
Definition city.c:1137
#define city_list_iterate(citylist, pcity)
Definition city.h:508
#define city_list_iterate_end
Definition city.h:510
char * incite_cost
Definition comments.c:75
#define _(String)
Definition fcintl.h:67
static struct gui_dialog * find_dialog_shell
Definition finddlg.c:43
static void find_response(struct gui_dialog *dlg, int response, gpointer data)
Definition finddlg.c:162
static GtkWidget * find_view
Definition finddlg.c:44
void popup_find_dialog(void)
Definition finddlg.c:58
static void update_find_dialog(GtkListStore *store)
Definition finddlg.c:137
static void find_destroy_callback(GtkWidget *w, gpointer data)
Definition finddlg.c:187
static void find_selection_callback(GtkTreeSelection *selection, GtkTreeModel *model)
Definition finddlg.c:197
static struct tile * pos
Definition finddlg.c:53
GtkWidget * bottom_notebook
Definition gui_main.c:129
void gtk_tree_view_focus(GtkTreeView *view)
Definition gui_stuff.c:236
void gui_dialog_destroy(struct gui_dialog *dlg)
Definition gui_stuff.c:954
void gui_dialog_raise(struct gui_dialog *dlg)
Definition gui_stuff.c:865
void gui_dialog_new(struct gui_dialog **pdlg, GtkNotebook *notebook, gpointer user_data, bool check_top)
Definition gui_stuff.c:517
void gui_dialog_response_set_callback(struct gui_dialog *dlg, GUI_DIALOG_RESPONSE_FUN fun)
Definition gui_stuff.c:988
void gui_dialog_show_all(struct gui_dialog *dlg)
Definition gui_stuff.c:795
void gui_dialog_set_title(struct gui_dialog *dlg, const char *title)
Definition gui_stuff.c:935
void gui_dialog_set_default_size(struct gui_dialog *dlg, int width, int height)
Definition gui_stuff.c:919
GtkWidget * gui_dialog_add_button(struct gui_dialog *dlg, const char *icon_name, const char *text, int response)
Definition gui_stuff.c:706
void gui_dialog_add_content_widget(struct gui_dialog *dlg, GtkWidget *wdg)
Definition gui_stuff.c:1104
struct tile * get_center_tile_mapcanvas(void)
void center_tile_mapcanvas(const struct tile *ptile)
bool can_slide
#define players_iterate_end
Definition player.h:537
#define players_iterate(_pplayer)
Definition player.h:532
Definition city.h:320
struct tile * tile
Definition city.h:322
GtkWidget * grid
Definition gui_stuff.h:71
Definition tile.h:50
char * label
Definition tile.h:65
#define TRUE
Definition support.h:46
#define FALSE
Definition support.h:47