HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...
Feature #901113 ยป 0041-sdl2-Rename-p-Dlg-to-adhere-with-coding-style.patch
client/gui-sdl2/action_dialog.c | ||
---|---|---|
void popdown_bribe_dialog(void);
|
||
static struct diplomat_dialog *pDiplomat_Dlg = NULL;
|
||
static struct diplomat_dialog *diplomat_dlg = NULL;
|
||
static bool is_more_user_input_needed = FALSE;
|
||
static bool did_not_decide = FALSE;
|
||
... | ... | |
static int diplomat_dlg_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pDiplomat_Dlg->pdialog->begin_widget_list, pwindow);
|
||
move_window_group(diplomat_dlg->pdialog->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
**************************************************************************/
|
||
static int spy_strike_bld_request(struct widget *pwidget)
|
||
{
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(
|
||
pDiplomat_Dlg->target_ids[ATK_CITY])) {
|
||
diplomat_dlg->target_ids[ATK_CITY])) {
|
||
request_action_details(ACTION_STRIKE_BUILDING,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY]);
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY]);
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
} else {
|
||
... | ... | |
**************************************************************************/
|
||
static int spy_sabotage_request(struct widget *pwidget)
|
||
{
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(
|
||
pDiplomat_Dlg->target_ids[ATK_CITY])) {
|
||
diplomat_dlg->target_ids[ATK_CITY])) {
|
||
request_action_details(ACTION_SPY_TARGETED_SABOTAGE_CITY,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY]);
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY]);
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
} else {
|
||
... | ... | |
**************************************************************************/
|
||
static int spy_sabotage_esc_request(struct widget *pwidget)
|
||
{
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(
|
||
pDiplomat_Dlg->target_ids[ATK_CITY])) {
|
||
diplomat_dlg->target_ids[ATK_CITY])) {
|
||
request_action_details(ACTION_SPY_TARGETED_SABOTAGE_CITY_ESC,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY]);
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY]);
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
} else {
|
||
... | ... | |
static int spy_steal_dlg_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pDiplomat_Dlg->pdialog->begin_widget_list, pwindow);
|
||
move_window_group(diplomat_dlg->pdialog->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int exit_spy_tgt_dlg_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
int actor_id = pDiplomat_Dlg->actor_unit_id;
|
||
int actor_id = diplomat_dlg->actor_unit_id;
|
||
fc_assert(is_more_user_input_needed);
|
||
popdown_diplomat_dialog();
|
||
... | ... | |
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
int steal_advance = MAX_ID - pwidget->ID;
|
||
int actor_id = pDiplomat_Dlg->actor_unit_id;
|
||
int actor_id = diplomat_dlg->actor_unit_id;
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(
|
||
pDiplomat_Dlg->target_ids[ATK_CITY])) {
|
||
diplomat_dlg->target_ids[ATK_CITY])) {
|
||
if (steal_advance == A_UNSET) {
|
||
/* This is the untargeted version. */
|
||
request_do_action(get_non_targeted_action_id(
|
||
pDiplomat_Dlg->act_id),
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY],
|
||
diplomat_dlg->act_id),
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY],
|
||
steal_advance, "");
|
||
} else {
|
||
/* This is the targeted version. */
|
||
request_do_action(pDiplomat_Dlg->act_id,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY],
|
||
request_do_action(diplomat_dlg->act_id,
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY],
|
||
steal_advance, "");
|
||
}
|
||
}
|
||
... | ... | |
{
|
||
const struct research *presearch, *vresearch;
|
||
struct city *pVcity = pwidget->data.city;
|
||
int id = pDiplomat_Dlg->actor_unit_id;
|
||
int id = diplomat_dlg->actor_unit_id;
|
||
struct player *pVictim = NULL;
|
||
struct container *pCont;
|
||
struct widget *buf = NULL;
|
||
... | ... | |
SDL_Rect area;
|
||
struct unit *actor_unit = game_unit_by_number(id);
|
||
action_id act_id = pDiplomat_Dlg->act_id;
|
||
action_id act_id = diplomat_dlg->act_id;
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
... | ... | |
pVictim = city_owner(pVcity);
|
||
}
|
||
fc_assert_ret_val_msg(!pDiplomat_Dlg, 1, "Diplomat dialog already open");
|
||
fc_assert_ret_val_msg(!diplomat_dlg, 1, "Diplomat dialog already open");
|
||
if (!pVictim) {
|
||
act_sel_done_secondary(id);
|
||
... | ... | |
pCont->id0 = pVcity->id;
|
||
pCont->id1 = id;/* spy id */
|
||
pDiplomat_Dlg = fc_calloc(1, sizeof(struct diplomat_dialog));
|
||
pDiplomat_Dlg->act_id = act_id;
|
||
pDiplomat_Dlg->actor_unit_id = id;
|
||
pDiplomat_Dlg->target_ids[ATK_CITY] = pVcity->id;
|
||
pDiplomat_Dlg->pdialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
diplomat_dlg = fc_calloc(1, sizeof(struct diplomat_dialog));
|
||
diplomat_dlg->act_id = act_id;
|
||
diplomat_dlg->actor_unit_id = id;
|
||
diplomat_dlg->target_ids[ATK_CITY] = pVcity->id;
|
||
diplomat_dlg->pdialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pstr = create_utf8_from_char(_("Select Advance to Steal"), adj_font(12));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
... | ... | |
set_wstate(pwindow , FC_WS_NORMAL);
|
||
add_to_gui_list(ID_DIPLOMAT_DLG_WINDOW, pwindow);
|
||
pDiplomat_Dlg->pdialog->end_widget_list = pwindow;
|
||
diplomat_dlg->pdialog->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
area.w = MAX(area.w, adj_size(8));
|
||
... | ... | |
/* --------------------------------------------------------- */
|
||
FREEUTF8STR(pstr);
|
||
pDiplomat_Dlg->pdialog->begin_widget_list = buf;
|
||
pDiplomat_Dlg->pdialog->begin_active_widget_list = pDiplomat_Dlg->pdialog->begin_widget_list;
|
||
pDiplomat_Dlg->pdialog->end_active_widget_list = pDiplomat_Dlg->pdialog->end_widget_list->prev->prev;
|
||
diplomat_dlg->pdialog->begin_widget_list = buf;
|
||
diplomat_dlg->pdialog->begin_active_widget_list = diplomat_dlg->pdialog->begin_widget_list;
|
||
diplomat_dlg->pdialog->end_active_widget_list = diplomat_dlg->pdialog->end_widget_list->prev->prev;
|
||
/* -------------------------------------------------------------- */
|
||
... | ... | |
if (count > col) {
|
||
count = (count + (col - 1)) / col;
|
||
if (count > max_row) {
|
||
pDiplomat_Dlg->pdialog->active_widget_list = pDiplomat_Dlg->pdialog->end_active_widget_list;
|
||
diplomat_dlg->pdialog->active_widget_list = diplomat_dlg->pdialog->end_active_widget_list;
|
||
count = max_row;
|
||
idx = create_vertical_scrollbar(pDiplomat_Dlg->pdialog, col, count, TRUE, TRUE);
|
||
idx = create_vertical_scrollbar(diplomat_dlg->pdialog, col, count, TRUE, TRUE);
|
||
}
|
||
} else {
|
||
count = 1;
|
||
... | ... | |
setup_vertical_widgets_position(col, area.x + 1,
|
||
area.y, 0, 0,
|
||
pDiplomat_Dlg->pdialog->begin_active_widget_list,
|
||
pDiplomat_Dlg->pdialog->end_active_widget_list);
|
||
diplomat_dlg->pdialog->begin_active_widget_list,
|
||
diplomat_dlg->pdialog->end_active_widget_list);
|
||
if (pDiplomat_Dlg->pdialog->scroll) {
|
||
setup_vertical_scrollbar_area(pDiplomat_Dlg->pdialog->scroll,
|
||
if (diplomat_dlg->pdialog->scroll) {
|
||
setup_vertical_scrollbar_area(diplomat_dlg->pdialog->scroll,
|
||
area.x + area.w, area.y,
|
||
area.h, TRUE);
|
||
}
|
||
redraw_group(pDiplomat_Dlg->pdialog->begin_widget_list, pwindow, FALSE);
|
||
redraw_group(diplomat_dlg->pdialog->begin_widget_list, pwindow, FALSE);
|
||
widget_mark_dirty(pwindow);
|
||
return -1;
|
||
... | ... | |
**************************************************************************/
|
||
static int spy_steal_popup(struct widget *pwidget)
|
||
{
|
||
pDiplomat_Dlg->act_id = ACTION_SPY_TARGETED_STEAL_TECH;
|
||
diplomat_dlg->act_id = ACTION_SPY_TARGETED_STEAL_TECH;
|
||
return spy_steal_popup_shared(pwidget);
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
static int spy_steal_esc_popup(struct widget *pwidget)
|
||
{
|
||
pDiplomat_Dlg->act_id = ACTION_SPY_TARGETED_STEAL_TECH_ESC;
|
||
diplomat_dlg->act_id = ACTION_SPY_TARGETED_STEAL_TECH_ESC;
|
||
return spy_steal_popup_shared(pwidget);
|
||
}
|
||
... | ... | |
static int diplomat_incite_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(
|
||
pDiplomat_Dlg->target_ids[ATK_CITY])) {
|
||
diplomat_dlg->target_ids[ATK_CITY])) {
|
||
request_action_details(ACTION_SPY_INCITE_CITY,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY]);
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY]);
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
} else {
|
||
... | ... | |
static int spy_incite_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(
|
||
pDiplomat_Dlg->target_ids[ATK_CITY])) {
|
||
diplomat_dlg->target_ids[ATK_CITY])) {
|
||
request_action_details(ACTION_SPY_INCITE_CITY_ESC,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_CITY]);
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_CITY]);
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
} else {
|
||
... | ... | |
if (PRESSED_EVENT(main_data.event)) {
|
||
struct unit *punit;
|
||
if ((punit = game_unit_by_number(pDiplomat_Dlg->actor_unit_id))
|
||
if ((punit = game_unit_by_number(diplomat_dlg->actor_unit_id))
|
||
&& !same_pos(unit_tile(punit), pwidget->data.tile)) {
|
||
request_unit_non_action_move(punit, pwidget->data.tile);
|
||
}
|
||
... | ... | |
static int diplomat_bribe_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)
|
||
if (NULL != game_unit_by_number(diplomat_dlg->actor_unit_id)
|
||
&& NULL !=
|
||
game_unit_by_number(pDiplomat_Dlg->target_ids[ATK_UNIT])) {
|
||
game_unit_by_number(diplomat_dlg->target_ids[ATK_UNIT])) {
|
||
request_action_details(ACTION_SPY_BRIBE_UNIT,
|
||
pDiplomat_Dlg->actor_unit_id,
|
||
pDiplomat_Dlg->target_ids[ATK_UNIT]);
|
||
diplomat_dlg->actor_unit_id,
|
||
diplomat_dlg->target_ids[ATK_UNIT]);
|
||
is_more_user_input_needed = TRUE;
|
||
popdown_diplomat_dialog();
|
||
} else {
|
||
... | ... | |
static int found_city_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
int actor_id = pDiplomat_Dlg->actor_unit_id;
|
||
int actor_id = diplomat_dlg->actor_unit_id;
|
||
popdown_diplomat_dialog();
|
||
dsend_packet_city_name_suggestion_req(&client.conn,
|
||
... | ... | |
struct unit *punit;
|
||
struct city *pcity;
|
||
if ((pcity = game_city_by_number(pDiplomat_Dlg->target_ids[ATK_CITY]))
|
||
&& (punit = game_unit_by_number(pDiplomat_Dlg->actor_unit_id))) {
|
||
if ((pcity = game_city_by_number(diplomat_dlg->target_ids[ATK_CITY]))
|
||
&& (punit = game_unit_by_number(diplomat_dlg->actor_unit_id))) {
|
||
popup_unit_upgrade_dlg(punit, FALSE);
|
||
}
|
||
... | ... | |
/* Actor */
|
||
fc_assert(action_get_actor_kind(paction) == AAK_UNIT);
|
||
actor_id = pDiplomat_Dlg->actor_unit_id;
|
||
actor_id = diplomat_dlg->actor_unit_id;
|
||
if (NULL == game_unit_by_number(actor_id)) {
|
||
/* Probably dead. */
|
||
failed = TRUE;
|
||
... | ... | |
target_id = IDENTITY_NUMBER_ZERO;
|
||
switch (action_get_target_kind(paction)) {
|
||
case ATK_CITY:
|
||
target_id = pDiplomat_Dlg->target_ids[ATK_CITY];
|
||
target_id = diplomat_dlg->target_ids[ATK_CITY];
|
||
if (NULL == game_city_by_number(target_id)) {
|
||
/* Probably destroyed. */
|
||
failed = TRUE;
|
||
}
|
||
break;
|
||
case ATK_UNIT:
|
||
target_id = pDiplomat_Dlg->target_ids[ATK_UNIT];
|
||
target_id = diplomat_dlg->target_ids[ATK_UNIT];
|
||
if (NULL == game_unit_by_number(target_id)) {
|
||
/* Probably dead. */
|
||
failed = TRUE;
|
||
... | ... | |
break;
|
||
case ATK_UNITS:
|
||
case ATK_TILE:
|
||
target_id = pDiplomat_Dlg->target_ids[ATK_TILE];
|
||
target_id = diplomat_dlg->target_ids[ATK_TILE];
|
||
if (NULL == index_to_tile(&(wld.map), target_id)) {
|
||
/* TODO: Should this be possible at all? If not: add assertion. */
|
||
failed = TRUE;
|
||
... | ... | |
if (paction->target_complexity != ACT_TGT_COMPL_SIMPLE) {
|
||
switch (action_get_sub_target_kind(paction)) {
|
||
case ASTK_BUILDING:
|
||
sub_target = pDiplomat_Dlg->sub_target_id[ASTK_BUILDING];
|
||
sub_target = diplomat_dlg->sub_target_id[ASTK_BUILDING];
|
||
if (NULL == improvement_by_number(sub_target)) {
|
||
/* Did the ruleset change? */
|
||
failed = TRUE;
|
||
}
|
||
break;
|
||
case ASTK_TECH:
|
||
sub_target = pDiplomat_Dlg->sub_target_id[ASTK_TECH];
|
||
sub_target = diplomat_dlg->sub_target_id[ASTK_TECH];
|
||
if (NULL == valid_advance_by_number(sub_target)) {
|
||
/* Did the ruleset change? */
|
||
failed = TRUE;
|
||
... | ... | |
case ASTK_EXTRA:
|
||
case ASTK_EXTRA_NOT_THERE:
|
||
/* TODO: validate if the extra is there? */
|
||
sub_target = pDiplomat_Dlg->sub_target_id[ASTK_EXTRA];
|
||
sub_target = diplomat_dlg->sub_target_id[ASTK_EXTRA];
|
||
if (NULL == extra_by_number(sub_target)) {
|
||
/* Did the ruleset change? */
|
||
failed = TRUE;
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_diplomat_dialog(void)
|
||
{
|
||
if (pDiplomat_Dlg) {
|
||
act_sel_done_primary(pDiplomat_Dlg->actor_unit_id);
|
||
if (diplomat_dlg) {
|
||
act_sel_done_primary(diplomat_dlg->actor_unit_id);
|
||
is_unit_move_blocked = FALSE;
|
||
popdown_window_group_dialog(pDiplomat_Dlg->pdialog->begin_widget_list,
|
||
pDiplomat_Dlg->pdialog->end_widget_list);
|
||
FC_FREE(pDiplomat_Dlg->pdialog->scroll);
|
||
FC_FREE(pDiplomat_Dlg->pdialog);
|
||
FC_FREE(pDiplomat_Dlg);
|
||
popdown_window_group_dialog(diplomat_dlg->pdialog->begin_widget_list,
|
||
diplomat_dlg->pdialog->end_widget_list);
|
||
FC_FREE(diplomat_dlg->pdialog->scroll);
|
||
FC_FREE(diplomat_dlg->pdialog);
|
||
FC_FREE(diplomat_dlg);
|
||
queue_flush();
|
||
}
|
||
}
|
||
... | ... | |
utf8_str *pstr;
|
||
SDL_Rect area;
|
||
fc_assert_ret_msg(!pDiplomat_Dlg, "Diplomat dialog already open");
|
||
fc_assert_ret_msg(!diplomat_dlg, "Diplomat dialog already open");
|
||
/* Could be caused by the server failing to reply to a request for more
|
||
* information or a bug in the client code. */
|
||
... | ... | |
is_unit_move_blocked = TRUE;
|
||
pDiplomat_Dlg = fc_calloc(1, sizeof(struct diplomat_dialog));
|
||
pDiplomat_Dlg->actor_unit_id = actor_unit->id;
|
||
pDiplomat_Dlg->pdialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
diplomat_dlg = fc_calloc(1, sizeof(struct diplomat_dialog));
|
||
diplomat_dlg->actor_unit_id = actor_unit->id;
|
||
diplomat_dlg->pdialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
/* window */
|
||
if (target_city) {
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_CARAVAN_DLG_WINDOW, pwindow);
|
||
pDiplomat_Dlg->pdialog->end_widget_list = pwindow;
|
||
diplomat_dlg->pdialog->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
area.w = MAX(area.w, adj_size(8));
|
||
area.h = MAX(area.h, adj_size(2));
|
||
if (target_city) {
|
||
pDiplomat_Dlg->target_ids[ATK_CITY] = target_city->id;
|
||
diplomat_dlg->target_ids[ATK_CITY] = target_city->id;
|
||
} else {
|
||
pDiplomat_Dlg->target_ids[ATK_CITY] = IDENTITY_NUMBER_ZERO;
|
||
diplomat_dlg->target_ids[ATK_CITY] = IDENTITY_NUMBER_ZERO;
|
||
}
|
||
if (target_unit) {
|
||
pDiplomat_Dlg->target_ids[ATK_UNIT] = target_unit->id;
|
||
diplomat_dlg->target_ids[ATK_UNIT] = target_unit->id;
|
||
} else {
|
||
pDiplomat_Dlg->target_ids[ATK_UNIT] = IDENTITY_NUMBER_ZERO;
|
||
diplomat_dlg->target_ids[ATK_UNIT] = IDENTITY_NUMBER_ZERO;
|
||
}
|
||
pDiplomat_Dlg->target_ids[ATK_UNITS] = tile_index(target_tile);
|
||
pDiplomat_Dlg->target_ids[ATK_TILE] = tile_index(target_tile);
|
||
diplomat_dlg->target_ids[ATK_UNITS] = tile_index(target_tile);
|
||
diplomat_dlg->target_ids[ATK_TILE] = tile_index(target_tile);
|
||
/* No target building or target tech supplied. (Feb 2020) */
|
||
pDiplomat_Dlg->sub_target_id[ASTK_BUILDING] = B_LAST;
|
||
pDiplomat_Dlg->sub_target_id[ASTK_TECH] = A_UNSET;
|
||
diplomat_dlg->sub_target_id[ASTK_BUILDING] = B_LAST;
|
||
diplomat_dlg->sub_target_id[ASTK_TECH] = A_UNSET;
|
||
if (target_extra) {
|
||
pDiplomat_Dlg->sub_target_id[ASTK_EXTRA] = extra_number(target_extra);
|
||
pDiplomat_Dlg->sub_target_id[ASTK_EXTRA_NOT_THERE]
|
||
diplomat_dlg->sub_target_id[ASTK_EXTRA] = extra_number(target_extra);
|
||
diplomat_dlg->sub_target_id[ASTK_EXTRA_NOT_THERE]
|
||
= extra_number(target_extra);
|
||
} else {
|
||
pDiplomat_Dlg->sub_target_id[ASTK_EXTRA] = EXTRA_NONE;
|
||
pDiplomat_Dlg->sub_target_id[ASTK_EXTRA_NOT_THERE] = EXTRA_NONE;
|
||
diplomat_dlg->sub_target_id[ASTK_EXTRA] = EXTRA_NONE;
|
||
diplomat_dlg->sub_target_id[ASTK_EXTRA_NOT_THERE] = EXTRA_NONE;
|
||
}
|
||
pDiplomat_Dlg->target_ids[ATK_SELF] = actor_unit->id;
|
||
diplomat_dlg->target_ids[ATK_SELF] = actor_unit->id;
|
||
/* ---------- */
|
||
/* Unit acting against a city */
|
||
... | ... | |
area.w = MAX(area.w, buf->size.w);
|
||
area.h += buf->size.h;
|
||
/* ---------- */
|
||
pDiplomat_Dlg->pdialog->begin_widget_list = buf;
|
||
diplomat_dlg->pdialog->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
... | ... | |
setup_vertical_widgets_position(1,
|
||
area.x,
|
||
area.y + 1, area.w, 0,
|
||
pDiplomat_Dlg->pdialog->begin_widget_list, buf);
|
||
diplomat_dlg->pdialog->begin_widget_list, buf);
|
||
/* --------------------- */
|
||
/* redraw */
|
||
redraw_group(pDiplomat_Dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
redraw_group(diplomat_dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
... | ... | |
**************************************************************************/
|
||
int action_selection_actor_unit(void)
|
||
{
|
||
if (!pDiplomat_Dlg) {
|
||
if (!diplomat_dlg) {
|
||
return IDENTITY_NUMBER_ZERO;
|
||
}
|
||
return pDiplomat_Dlg->actor_unit_id;
|
||
return diplomat_dlg->actor_unit_id;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
**************************************************************************/
|
||
int action_selection_target_city(void)
|
||
{
|
||
if (!pDiplomat_Dlg) {
|
||
if (!diplomat_dlg) {
|
||
return IDENTITY_NUMBER_ZERO;
|
||
}
|
||
return pDiplomat_Dlg->target_ids[ATK_CITY];
|
||
return diplomat_dlg->target_ids[ATK_CITY];
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
**************************************************************************/
|
||
int action_selection_target_unit(void)
|
||
{
|
||
if (!pDiplomat_Dlg) {
|
||
if (!diplomat_dlg) {
|
||
return IDENTITY_NUMBER_ZERO;
|
||
}
|
||
return pDiplomat_Dlg->target_ids[ATK_UNIT];
|
||
return diplomat_dlg->target_ids[ATK_UNIT];
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
**************************************************************************/
|
||
int action_selection_target_tile(void)
|
||
{
|
||
if (!pDiplomat_Dlg) {
|
||
if (!diplomat_dlg) {
|
||
return TILE_INDEX_NONE;
|
||
}
|
||
return pDiplomat_Dlg->target_ids[ATK_TILE];
|
||
return diplomat_dlg->target_ids[ATK_TILE];
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
**************************************************************************/
|
||
int action_selection_target_extra(void)
|
||
{
|
||
if (!pDiplomat_Dlg) {
|
||
if (!diplomat_dlg) {
|
||
return EXTRA_NONE;
|
||
}
|
||
return pDiplomat_Dlg->sub_target_id[ASTK_EXTRA];
|
||
return diplomat_dlg->sub_target_id[ASTK_EXTRA];
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
SDL_Rect area, area2;
|
||
int n, w = 0, h, imp_h = 0, y;
|
||
fc_assert_ret_msg(!pDiplomat_Dlg, "Diplomat dialog already open");
|
||
fc_assert_ret_msg(!diplomat_dlg, "Diplomat dialog already open");
|
||
/* Should be set before sending request to the server. */
|
||
fc_assert(is_more_user_input_needed);
|
||
... | ... | |
is_unit_move_blocked = TRUE;
|
||
|
||
pDiplomat_Dlg = fc_calloc(1, sizeof(struct diplomat_dialog));
|
||
pDiplomat_Dlg->actor_unit_id = actor->id;
|
||
pDiplomat_Dlg->target_ids[ATK_CITY] = pcity->id;
|
||
pDiplomat_Dlg->pdialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
diplomat_dlg = fc_calloc(1, sizeof(struct diplomat_dialog));
|
||
diplomat_dlg->actor_unit_id = actor->id;
|
||
diplomat_dlg->target_ids[ATK_CITY] = pcity->id;
|
||
diplomat_dlg->pdialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pCont = fc_calloc(1, sizeof(struct container));
|
||
pCont->id0 = pcity->id;
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_TERRAIN_ADV_DLG_WINDOW, pwindow);
|
||
pDiplomat_Dlg->pdialog->end_widget_list = pwindow;
|
||
diplomat_dlg->pdialog->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
area.h = MAX(area.h, adj_size(2));
|
||
... | ... | |
add_to_gui_list(ID_SEPARATOR, buf);
|
||
area.h += buf->next->size.h;
|
||
pDiplomat_Dlg->pdialog->end_active_widget_list = buf;
|
||
diplomat_dlg->pdialog->end_active_widget_list = buf;
|
||
}
|
||
/* ------------------ */
|
||
... | ... | |
}
|
||
} city_built_iterate_end;
|
||
pDiplomat_Dlg->pdialog->begin_active_widget_list = buf;
|
||
diplomat_dlg->pdialog->begin_active_widget_list = buf;
|
||
if (n > 0
|
||
&& action_prob_possible(actor->client.act_prob_cache[
|
||
... | ... | |
/* ----------- */
|
||
pLast = buf;
|
||
pDiplomat_Dlg->pdialog->begin_widget_list = pLast;
|
||
pDiplomat_Dlg->pdialog->active_widget_list = pDiplomat_Dlg->pdialog->end_active_widget_list;
|
||
diplomat_dlg->pdialog->begin_widget_list = pLast;
|
||
diplomat_dlg->pdialog->active_widget_list = diplomat_dlg->pdialog->end_active_widget_list;
|
||
/* ---------- */
|
||
if (n > 10) {
|
||
imp_h = 10 * buf->size.h;
|
||
n = create_vertical_scrollbar(pDiplomat_Dlg->pdialog,
|
||
n = create_vertical_scrollbar(diplomat_dlg->pdialog,
|
||
1, 10, TRUE, TRUE);
|
||
area.w += n;
|
||
} else {
|
||
... | ... | |
buf = buf->prev;
|
||
while (buf) {
|
||
if (buf == pDiplomat_Dlg->pdialog->end_active_widget_list) {
|
||
if (buf == diplomat_dlg->pdialog->end_active_widget_list) {
|
||
w -= n;
|
||
}
|
||
... | ... | |
break;
|
||
}
|
||
if (buf == pDiplomat_Dlg->pdialog->begin_active_widget_list) {
|
||
if (buf == diplomat_dlg->pdialog->begin_active_widget_list) {
|
||
/* Reset to end of scrolling area */
|
||
y = MIN(y, pDiplomat_Dlg->pdialog->end_active_widget_list->size.y
|
||
y = MIN(y, diplomat_dlg->pdialog->end_active_widget_list->size.y
|
||
+ 9 * buf->size.h);
|
||
w += n;
|
||
}
|
||
buf = buf->prev;
|
||
}
|
||
if (pDiplomat_Dlg->pdialog->scroll) {
|
||
setup_vertical_scrollbar_area(pDiplomat_Dlg->pdialog->scroll,
|
||
if (diplomat_dlg->pdialog->scroll) {
|
||
setup_vertical_scrollbar_area(diplomat_dlg->pdialog->scroll,
|
||
area.x + area.w,
|
||
pDiplomat_Dlg->pdialog->end_active_widget_list->size.y,
|
||
pDiplomat_Dlg->pdialog->begin_active_widget_list->prev->size.y
|
||
- pDiplomat_Dlg->pdialog->end_active_widget_list->size.y,
|
||
diplomat_dlg->pdialog->end_active_widget_list->size.y,
|
||
diplomat_dlg->pdialog->begin_active_widget_list->prev->size.y
|
||
- diplomat_dlg->pdialog->end_active_widget_list->size.y,
|
||
TRUE);
|
||
}
|
||
/* -------------------- */
|
||
/* redraw */
|
||
redraw_group(pDiplomat_Dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
redraw_group(diplomat_dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
/* ====================================================================== */
|
||
/* ============================== INCITE DIALOG ========================= */
|
||
/* ====================================================================== */
|
||
static struct small_diplomat_dialog *pIncite_Dlg = NULL;
|
||
static struct small_diplomat_dialog *incite_dlg = NULL;
|
||
/**********************************************************************//**
|
||
User interacted with Incite Revolt dialog window.
|
||
... | ... | |
static int incite_dlg_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pIncite_Dlg->pdialog->begin_widget_list, pwindow);
|
||
move_window_group(incite_dlg->pdialog->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int diplomat_incite_yes_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (NULL != game_unit_by_number(pIncite_Dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(pIncite_Dlg->target_id)) {
|
||
request_do_action(pIncite_Dlg->act_id, pIncite_Dlg->actor_unit_id,
|
||
pIncite_Dlg->target_id, 0, "");
|
||
if (NULL != game_unit_by_number(incite_dlg->actor_unit_id)
|
||
&& NULL != game_city_by_number(incite_dlg->target_id)) {
|
||
request_do_action(incite_dlg->act_id, incite_dlg->actor_unit_id,
|
||
incite_dlg->target_id, 0, "");
|
||
}
|
||
popdown_incite_dialog();
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_incite_dialog(void)
|
||
{
|
||
if (pIncite_Dlg) {
|
||
act_sel_done_secondary(pIncite_Dlg->actor_unit_id);
|
||
if (incite_dlg) {
|
||
act_sel_done_secondary(incite_dlg->actor_unit_id);
|
||
is_unit_move_blocked = FALSE;
|
||
popdown_window_group_dialog(pIncite_Dlg->pdialog->begin_widget_list,
|
||
pIncite_Dlg->pdialog->end_widget_list);
|
||
FC_FREE(pIncite_Dlg->pdialog);
|
||
FC_FREE(pIncite_Dlg);
|
||
popdown_window_group_dialog(incite_dlg->pdialog->begin_widget_list,
|
||
incite_dlg->pdialog->end_widget_list);
|
||
FC_FREE(incite_dlg->pdialog);
|
||
FC_FREE(incite_dlg);
|
||
flush_dirty();
|
||
}
|
||
}
|
||
... | ... | |
bool exit = FALSE;
|
||
SDL_Rect area;
|
||
if (pIncite_Dlg) {
|
||
if (incite_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
is_unit_move_blocked = TRUE;
|
||
pIncite_Dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
|
||
pIncite_Dlg->actor_unit_id = actor->id;
|
||
pIncite_Dlg->target_id = pcity->id;
|
||
pIncite_Dlg->act_id = paction->id;
|
||
pIncite_Dlg->pdialog = fc_calloc(1, sizeof(struct small_dialog));
|
||
incite_dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
|
||
incite_dlg->actor_unit_id = actor->id;
|
||
incite_dlg->target_id = pcity->id;
|
||
incite_dlg->act_id = paction->id;
|
||
incite_dlg->pdialog = fc_calloc(1, sizeof(struct small_dialog));
|
||
fc_snprintf(tBuf, ARRAY_SIZE(tBuf), PL_("Treasury contains %d gold.",
|
||
"Treasury contains %d gold.",
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_INCITE_DLG_WINDOW, pwindow);
|
||
pIncite_Dlg->pdialog->end_widget_list = pwindow;
|
||
incite_dlg->pdialog->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
area.w =MAX(area.w, adj_size(8));
|
||
... | ... | |
area.w = MAX(area.w, buf->size.w);
|
||
area.h += buf->size.h;
|
||
}
|
||
pIncite_Dlg->pdialog->begin_widget_list = buf;
|
||
incite_dlg->pdialog->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
... | ... | |
setup_vertical_widgets_position(1,
|
||
area.x,
|
||
area.y + 1, area.w, 0,
|
||
pIncite_Dlg->pdialog->begin_widget_list, buf);
|
||
incite_dlg->pdialog->begin_widget_list, buf);
|
||
/* --------------------- */
|
||
/* redraw */
|
||
redraw_group(pIncite_Dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
redraw_group(incite_dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
/* ====================================================================== */
|
||
/* ============================ BRIBE DIALOG ========================== */
|
||
/* ====================================================================== */
|
||
static struct small_diplomat_dialog *pBribe_Dlg = NULL;
|
||
static struct small_diplomat_dialog *bribe_dlg = NULL;
|
||
/**********************************************************************//**
|
||
User interacted with bribe dialog window.
|
||
... | ... | |
static int bribe_dlg_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pBribe_Dlg->pdialog->begin_widget_list, pwindow);
|
||
move_window_group(bribe_dlg->pdialog->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int diplomat_bribe_yes_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (NULL != game_unit_by_number(pBribe_Dlg->actor_unit_id)
|
||
&& NULL != game_unit_by_number(pBribe_Dlg->target_id)) {
|
||
request_do_action(pBribe_Dlg->act_id, pBribe_Dlg->actor_unit_id,
|
||
pBribe_Dlg->target_id, 0, "");
|
||
if (NULL != game_unit_by_number(bribe_dlg->actor_unit_id)
|
||
&& NULL != game_unit_by_number(bribe_dlg->target_id)) {
|
||
request_do_action(bribe_dlg->act_id, bribe_dlg->actor_unit_id,
|
||
bribe_dlg->target_id, 0, "");
|
||
}
|
||
popdown_bribe_dialog();
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_bribe_dialog(void)
|
||
{
|
||
if (pBribe_Dlg) {
|
||
act_sel_done_secondary(pBribe_Dlg->actor_unit_id);
|
||
if (bribe_dlg) {
|
||
act_sel_done_secondary(bribe_dlg->actor_unit_id);
|
||
is_unit_move_blocked = FALSE;
|
||
popdown_window_group_dialog(pBribe_Dlg->pdialog->begin_widget_list,
|
||
pBribe_Dlg->pdialog->end_widget_list);
|
||
FC_FREE(pBribe_Dlg->pdialog);
|
||
FC_FREE(pBribe_Dlg);
|
||
popdown_window_group_dialog(bribe_dlg->pdialog->begin_widget_list,
|
||
bribe_dlg->pdialog->end_widget_list);
|
||
FC_FREE(bribe_dlg->pdialog);
|
||
FC_FREE(bribe_dlg);
|
||
flush_dirty();
|
||
}
|
||
}
|
||
... | ... | |
bool exit = FALSE;
|
||
SDL_Rect area;
|
||
if (pBribe_Dlg) {
|
||
if (bribe_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
is_unit_move_blocked = TRUE;
|
||
pBribe_Dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
|
||
pBribe_Dlg->act_id = paction->id;
|
||
pBribe_Dlg->actor_unit_id = actor->id;
|
||
pBribe_Dlg->target_id = punit->id;
|
||
pBribe_Dlg->pdialog = fc_calloc(1, sizeof(struct small_dialog));
|
||
bribe_dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
|
||
bribe_dlg->act_id = paction->id;
|
||
bribe_dlg->actor_unit_id = actor->id;
|
||
bribe_dlg->target_id = punit->id;
|
||
bribe_dlg->pdialog = fc_calloc(1, sizeof(struct small_dialog));
|
||
fc_snprintf(tBuf, ARRAY_SIZE(tBuf), PL_("Treasury contains %d gold.",
|
||
"Treasury contains %d gold.",
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_BRIBE_DLG_WINDOW, pwindow);
|
||
pBribe_Dlg->pdialog->end_widget_list = pwindow;
|
||
bribe_dlg->pdialog->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
area.w = MAX(area.w, adj_size(8));
|
||
... | ... | |
area.w = MAX(area.w, buf->size.w);
|
||
area.h += buf->size.h;
|
||
}
|
||
pBribe_Dlg->pdialog->begin_widget_list = buf;
|
||
bribe_dlg->pdialog->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
... | ... | |
setup_vertical_widgets_position(1,
|
||
area.x,
|
||
area.y + 1, area.w, 0,
|
||
pBribe_Dlg->pdialog->begin_widget_list, buf);
|
||
bribe_dlg->pdialog->begin_widget_list, buf);
|
||
/* --------------------- */
|
||
/* redraw */
|
||
redraw_group(pBribe_Dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
redraw_group(bribe_dlg->pdialog->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
client/gui-sdl2/chatline.c | ||
---|---|---|
#define PTSIZE_LOG_FONT adj_font(10)
|
||
struct CONNLIST {
|
||
struct advanced_dialog *pUsers_Dlg;
|
||
struct advanced_dialog *pChat_Dlg;
|
||
struct advanced_dialog *users_dlg;
|
||
struct advanced_dialog *chat_dlg;
|
||
struct widget *begin_widget_list;
|
||
struct widget *end_widget_list;
|
||
struct widget *start_button;
|
||
... | ... | |
struct widget *pedit;
|
||
int text_width;
|
||
int active;
|
||
} *pConnDlg = NULL;
|
||
} *conn_dlg = NULL;
|
||
static void popup_conn_list_dialog(void);
|
||
static void add_to_chat_list(char *msg, size_t n_alloc);
|
||
... | ... | |
FC_FREE(pLoadDialog);
|
||
/* enable buttons */
|
||
set_wstate(pConnDlg->pBackButton, FC_WS_NORMAL);
|
||
widget_redraw(pConnDlg->pBackButton);
|
||
widget_mark_dirty(pConnDlg->pBackButton);
|
||
set_wstate(pConnDlg->pLoadGameButton, FC_WS_NORMAL);
|
||
widget_redraw(pConnDlg->pLoadGameButton);
|
||
widget_mark_dirty(pConnDlg->pLoadGameButton);
|
||
set_wstate(pConnDlg->start_button, FC_WS_NORMAL);
|
||
widget_redraw(pConnDlg->start_button);
|
||
widget_mark_dirty(pConnDlg->start_button);
|
||
set_wstate(conn_dlg->pBackButton, FC_WS_NORMAL);
|
||
widget_redraw(conn_dlg->pBackButton);
|
||
widget_mark_dirty(conn_dlg->pBackButton);
|
||
set_wstate(conn_dlg->pLoadGameButton, FC_WS_NORMAL);
|
||
widget_redraw(conn_dlg->pLoadGameButton);
|
||
widget_mark_dirty(conn_dlg->pLoadGameButton);
|
||
set_wstate(conn_dlg->start_button, FC_WS_NORMAL);
|
||
widget_redraw(conn_dlg->start_button);
|
||
widget_mark_dirty(conn_dlg->start_button);
|
||
flush_dirty();
|
||
}
|
||
... | ... | |
}
|
||
/* disable buttons */
|
||
set_wstate(pConnDlg->pBackButton, FC_WS_DISABLED);
|
||
widget_redraw(pConnDlg->pBackButton);
|
||
widget_mark_dirty(pConnDlg->pBackButton);
|
||
set_wstate(pConnDlg->pLoadGameButton, FC_WS_DISABLED);
|
||
widget_redraw(pConnDlg->pLoadGameButton);
|
||
widget_mark_dirty(pConnDlg->pLoadGameButton);
|
||
set_wstate(pConnDlg->pSelectNationButton, FC_WS_DISABLED);
|
||
widget_redraw(pConnDlg->pSelectNationButton);
|
||
widget_mark_dirty(pConnDlg->pSelectNationButton);
|
||
set_wstate(pConnDlg->start_button, FC_WS_DISABLED);
|
||
widget_redraw(pConnDlg->start_button);
|
||
widget_mark_dirty(pConnDlg->start_button);
|
||
set_wstate(conn_dlg->pBackButton, FC_WS_DISABLED);
|
||
widget_redraw(conn_dlg->pBackButton);
|
||
widget_mark_dirty(conn_dlg->pBackButton);
|
||
set_wstate(conn_dlg->pLoadGameButton, FC_WS_DISABLED);
|
||
widget_redraw(conn_dlg->pLoadGameButton);
|
||
widget_mark_dirty(conn_dlg->pLoadGameButton);
|
||
set_wstate(conn_dlg->pSelectNationButton, FC_WS_DISABLED);
|
||
widget_redraw(conn_dlg->pSelectNationButton);
|
||
widget_mark_dirty(conn_dlg->pSelectNationButton);
|
||
set_wstate(conn_dlg->start_button, FC_WS_DISABLED);
|
||
widget_redraw(conn_dlg->start_button);
|
||
widget_mark_dirty(conn_dlg->start_button);
|
||
/* create dialog */
|
||
pLoadDialog = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
... | ... | |
int conn_id)
|
||
{
|
||
/* Currently this is a wrapper to the message subsystem. */
|
||
if (pConnDlg) {
|
||
if (conn_dlg) {
|
||
size_t n = strlen(astring);
|
||
char *buffer = fc_strdup(astring);
|
||
... | ... | |
static void add_to_chat_list(char *msg, size_t n_alloc)
|
||
{
|
||
utf8_str *pstr;
|
||
struct widget *buf, *pwindow = pConnDlg->end_widget_list;
|
||
struct widget *buf, *pwindow = conn_dlg->end_widget_list;
|
||
fc_assert_ret(msg != NULL);
|
||
fc_assert_ret(n_alloc != 0);
|
||
pstr = create_utf8_str(msg, n_alloc, adj_font(12));
|
||
if (convert_utf8_str_to_const_surface_width(pstr, pConnDlg->text_width - adj_size(5))) {
|
||
if (convert_utf8_str_to_const_surface_width(pstr, conn_dlg->text_width - adj_size(5))) {
|
||
utf8_str *pstr2;
|
||
int count = 0;
|
||
char **utf8_texts = create_new_line_utf8strs(pstr->text);
|
||
... | ... | |
strlen(utf8_texts[count]) + 1, adj_font(12));
|
||
pstr2->bgcol = (SDL_Color) {0, 0, 0, 0};
|
||
buf = create_themelabel2(NULL, pwindow->dst,
|
||
pstr2, pConnDlg->text_width, 0,
|
||
pstr2, conn_dlg->text_width, 0,
|
||
(WF_RESTORE_BACKGROUND|WF_DRAW_TEXT_LABEL_WITH_SPACE));
|
||
buf->size.w = pConnDlg->text_width;
|
||
add_widget_to_vertical_scroll_widget_list(pConnDlg->pChat_Dlg, buf,
|
||
pConnDlg->pChat_Dlg->begin_active_widget_list, FALSE,
|
||
buf->size.w = conn_dlg->text_width;
|
||
add_widget_to_vertical_scroll_widget_list(conn_dlg->chat_dlg, buf,
|
||
conn_dlg->chat_dlg->begin_active_widget_list, FALSE,
|
||
pwindow->size.x + adj_size(10 + 60 + 10),
|
||
pwindow->size.y + adj_size(14));
|
||
count++;
|
||
}
|
||
redraw_group(pConnDlg->pChat_Dlg->begin_widget_list,
|
||
pConnDlg->pChat_Dlg->end_widget_list, TRUE);
|
||
redraw_group(conn_dlg->chat_dlg->begin_widget_list,
|
||
conn_dlg->chat_dlg->end_widget_list, TRUE);
|
||
FREEUTF8STR(pstr);
|
||
} else {
|
||
pstr->bgcol = (SDL_Color) {0, 0, 0, 0};
|
||
buf = create_themelabel2(NULL, pwindow->dst,
|
||
pstr, pConnDlg->text_width, 0,
|
||
pstr, conn_dlg->text_width, 0,
|
||
(WF_RESTORE_BACKGROUND|WF_DRAW_TEXT_LABEL_WITH_SPACE));
|
||
buf->size.w = pConnDlg->text_width;
|
||
buf->size.w = conn_dlg->text_width;
|
||
if (add_widget_to_vertical_scroll_widget_list(pConnDlg->pChat_Dlg, buf,
|
||
pConnDlg->pChat_Dlg->begin_active_widget_list, FALSE,
|
||
if (add_widget_to_vertical_scroll_widget_list(conn_dlg->chat_dlg, buf,
|
||
conn_dlg->chat_dlg->begin_active_widget_list, FALSE,
|
||
pwindow->size.x + adj_size(10 + 60 + 10),
|
||
pwindow->size.y + adj_size(14))) {
|
||
redraw_group(pConnDlg->pChat_Dlg->begin_widget_list,
|
||
pConnDlg->pChat_Dlg->end_widget_list, TRUE);
|
||
redraw_group(conn_dlg->chat_dlg->begin_widget_list,
|
||
conn_dlg->chat_dlg->end_widget_list, TRUE);
|
||
} else {
|
||
widget_redraw(buf);
|
||
widget_mark_dirty(buf);
|
||
... | ... | |
static int load_game_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
/* set_wstate(pConnDlg->pLoadGameButton, FC_WS_NORMAL);
|
||
* widget_redraw(pConnDlg->pLoadGameButton);
|
||
/* set_wstate(conn_dlg->pLoadGameButton, FC_WS_NORMAL);
|
||
* widget_redraw(conn_dlg->pLoadGameButton);
|
||
* flush_dirty(); */
|
||
popup_load_game_dialog();
|
||
}
|
||
... | ... | |
void real_conn_list_dialog_update(void *unused)
|
||
{
|
||
if (C_S_PREPARING == client_state()) {
|
||
if (pConnDlg) {
|
||
struct widget *buf = NULL, *pwindow = pConnDlg->end_widget_list;
|
||
if (conn_dlg) {
|
||
struct widget *buf = NULL, *pwindow = conn_dlg->end_widget_list;
|
||
utf8_str *pstr = create_utf8_str(NULL, 0, adj_font(12));
|
||
bool create;
|
||
pstr->bgcol = (SDL_Color) {0, 0, 0, 0};
|
||
if (pConnDlg->pUsers_Dlg) {
|
||
del_group(pConnDlg->pUsers_Dlg->begin_active_widget_list,
|
||
pConnDlg->pUsers_Dlg->end_active_widget_list);
|
||
pConnDlg->pUsers_Dlg->active_widget_list = NULL;
|
||
pConnDlg->pUsers_Dlg->begin_widget_list =
|
||
pConnDlg->pUsers_Dlg->scroll->pscroll_bar;
|
||
pConnDlg->pUsers_Dlg->scroll->count = 0;
|
||
if (conn_dlg->users_dlg) {
|
||
del_group(conn_dlg->users_dlg->begin_active_widget_list,
|
||
conn_dlg->users_dlg->end_active_widget_list);
|
||
conn_dlg->users_dlg->active_widget_list = NULL;
|
||
conn_dlg->users_dlg->begin_widget_list =
|
||
conn_dlg->users_dlg->scroll->pscroll_bar;
|
||
conn_dlg->users_dlg->scroll->count = 0;
|
||
} else {
|
||
pConnDlg->pUsers_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pConnDlg->pUsers_Dlg->end_widget_list = pConnDlg->begin_widget_list;
|
||
pConnDlg->pUsers_Dlg->begin_widget_list = pConnDlg->begin_widget_list;
|
||
create_vertical_scrollbar(pConnDlg->pUsers_Dlg, 1,
|
||
pConnDlg->active, TRUE, TRUE);
|
||
pConnDlg->pUsers_Dlg->end_widget_list =
|
||
pConnDlg->pUsers_Dlg->end_widget_list->prev;
|
||
setup_vertical_scrollbar_area(pConnDlg->pUsers_Dlg->scroll,
|
||
conn_dlg->users_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
conn_dlg->users_dlg->end_widget_list = conn_dlg->begin_widget_list;
|
||
conn_dlg->users_dlg->begin_widget_list = conn_dlg->begin_widget_list;
|
||
create_vertical_scrollbar(conn_dlg->users_dlg, 1,
|
||
conn_dlg->active, TRUE, TRUE);
|
||
conn_dlg->users_dlg->end_widget_list =
|
||
conn_dlg->users_dlg->end_widget_list->prev;
|
||
setup_vertical_scrollbar_area(conn_dlg->users_dlg->scroll,
|
||
pwindow->size.x + pwindow->size.w - adj_size(30),
|
||
pwindow->size.y + adj_size(14), pwindow->size.h - adj_size(44) - adj_size(40), FALSE);
|
||
}
|
||
hide_scrollbar(pConnDlg->pUsers_Dlg->scroll);
|
||
hide_scrollbar(conn_dlg->users_dlg->scroll);
|
||
create = TRUE;
|
||
conn_list_iterate(game.est_connections, pconn) {
|
||
copy_chars_to_utf8_str(pstr, pconn->username);
|
||
... | ... | |
/* add to widget list */
|
||
if (create) {
|
||
add_widget_to_vertical_scroll_widget_list(pConnDlg->pUsers_Dlg,
|
||
buf, pConnDlg->pUsers_Dlg->begin_widget_list, FALSE,
|
||
add_widget_to_vertical_scroll_widget_list(conn_dlg->users_dlg,
|
||
buf, conn_dlg->users_dlg->begin_widget_list, FALSE,
|
||
pwindow->area.x + pwindow->area.w - adj_size(130),
|
||
pwindow->size.y + adj_size(14));
|
||
create = FALSE;
|
||
} else {
|
||
add_widget_to_vertical_scroll_widget_list(pConnDlg->pUsers_Dlg,
|
||
buf, pConnDlg->pUsers_Dlg->begin_active_widget_list, FALSE,
|
||
add_widget_to_vertical_scroll_widget_list(conn_dlg->users_dlg,
|
||
buf, conn_dlg->users_dlg->begin_active_widget_list, FALSE,
|
||
pwindow->area.x + pwindow->area.w - adj_size(130),
|
||
pwindow->size.y + adj_size(14));
|
||
}
|
||
} conn_list_iterate_end;
|
||
pConnDlg->begin_widget_list = pConnDlg->pUsers_Dlg->begin_widget_list;
|
||
conn_dlg->begin_widget_list = conn_dlg->users_dlg->begin_widget_list;
|
||
FREEUTF8STR(pstr);
|
||
/* FIXME: implement the server settings dialog and then reactivate this part */
|
||
#if 0
|
||
if (ALLOW_CTRL == client.conn.access_level
|
||
|| ALLOW_HACK == client.conn.access_level) {
|
||
set_wstate(pConnDlg->pConfigure, FC_WS_NORMAL);
|
||
set_wstate(conn_dlg->pConfigure, FC_WS_NORMAL);
|
||
} else {
|
||
set_wstate(pConnDlg->pConfigure, FC_WS_DISABLED);
|
||
set_wstate(conn_dlg->pConfigure, FC_WS_DISABLED);
|
||
}
|
||
#endif
|
||
/* redraw */
|
||
redraw_group(pConnDlg->begin_widget_list, pConnDlg->end_widget_list, 0);
|
||
redraw_group(conn_dlg->begin_widget_list, conn_dlg->end_widget_list, 0);
|
||
widget_flush(pConnDlg->end_widget_list);
|
||
widget_flush(conn_dlg->end_widget_list);
|
||
} else {
|
||
popup_conn_list_dialog();
|
||
}
|
||
... | ... | |
SDL_Rect area;
|
||
SDL_Surface *surf;
|
||
if (pConnDlg || !client.conn.established) {
|
||
if (conn_dlg || !client.conn.established) {
|
||
return;
|
||
}
|
||
meswin_dialog_popdown();
|
||
pConnDlg = fc_calloc(1, sizeof(struct CONNLIST));
|
||
conn_dlg = fc_calloc(1, sizeof(struct CONNLIST));
|
||
pwindow = create_window_skeleton(NULL, NULL, 0);
|
||
pwindow->action = conn_dlg_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
clear_wflag(pwindow, WF_DRAW_FRAME_AROUND_WIDGET);
|
||
pConnDlg->end_widget_list = pwindow;
|
||
conn_dlg->end_widget_list = pwindow;
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
widget_set_position(pwindow, 0, 0);
|
||
... | ... | |
FREESURFACE(surf);
|
||
}
|
||
pConnDlg->text_width = pwindow->size.w - adj_size(130) - adj_size(20) - adj_size(20);
|
||
conn_dlg->text_width = pwindow->size.w - adj_size(130) - adj_size(20) - adj_size(20);
|
||
/* chat area background */
|
||
area.x = adj_size(10);
|
||
area.y = adj_size(14);
|
||
area.w = pConnDlg->text_width + adj_size(20);
|
||
area.w = conn_dlg->text_width + adj_size(20);
|
||
area.h = pwindow->size.h - adj_size(44) - adj_size(40);
|
||
fill_rect_alpha(pwindow->theme, &area, &window_bg_color);
|
||
... | ... | |
/* chat area */
|
||
pConnDlg->pChat_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
conn_dlg->chat_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
n = conn_list_size(game.est_connections);
|
||
... | ... | |
pstr->bgcol = (SDL_Color) {0, 0, 0, 0};
|
||
pLabel = create_themelabel2(NULL, pwindow->dst,
|
||
pstr, pConnDlg->text_width, 0,
|
||
pstr, conn_dlg->text_width, 0,
|
||
(WF_RESTORE_BACKGROUND|WF_DRAW_TEXT_LABEL_WITH_SPACE));
|
||
widget_set_position(pLabel, adj_size(10), adj_size(14));
|
||
add_to_gui_list(ID_LABEL, pLabel);
|
||
pConnDlg->pChat_Dlg->begin_widget_list = pLabel;
|
||
pConnDlg->pChat_Dlg->end_widget_list = pLabel;
|
||
pConnDlg->pChat_Dlg->begin_active_widget_list = pConnDlg->pChat_Dlg->begin_widget_list;
|
||
pConnDlg->pChat_Dlg->end_active_widget_list = pConnDlg->pChat_Dlg->end_widget_list;
|
||
conn_dlg->chat_dlg->begin_widget_list = pLabel;
|
||
conn_dlg->chat_dlg->end_widget_list = pLabel;
|
||
conn_dlg->chat_dlg->begin_active_widget_list = conn_dlg->chat_dlg->begin_widget_list;
|
||
conn_dlg->chat_dlg->end_active_widget_list = conn_dlg->chat_dlg->end_widget_list;
|
||
n = (pwindow->size.h - adj_size(44) - adj_size(40)) / pLabel->size.h;
|
||
pConnDlg->active = n;
|
||
conn_dlg->active = n;
|
||
create_vertical_scrollbar(pConnDlg->pChat_Dlg, 1,
|
||
pConnDlg->active, TRUE, TRUE);
|
||
create_vertical_scrollbar(conn_dlg->chat_dlg, 1,
|
||
conn_dlg->active, TRUE, TRUE);
|
||
setup_vertical_scrollbar_area(pConnDlg->pChat_Dlg->scroll,
|
||
adj_size(10) + pConnDlg->text_width + 1,
|
||
setup_vertical_scrollbar_area(conn_dlg->chat_dlg->scroll,
|
||
adj_size(10) + conn_dlg->text_width + 1,
|
||
adj_size(14), pwindow->size.h - adj_size(44) - adj_size(40), FALSE);
|
||
hide_scrollbar(pConnDlg->pChat_Dlg->scroll);
|
||
hide_scrollbar(conn_dlg->chat_dlg->scroll);
|
||
/* -------------------------------- */
|
||
... | ... | |
buf->size.y = pwindow->size.h - adj_size(40) - adj_size(5) - buf->size.h;
|
||
buf->action = input_edit_conn_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
pConnDlg->pedit = buf;
|
||
conn_dlg->pedit = buf;
|
||
add_to_gui_list(ID_EDIT, buf);
|
||
/* buttons */
|
||
... | ... | |
_("Back"), adj_font(12), 0);
|
||
buf->size.x = adj_size(10);
|
||
buf->size.y = pwindow->size.h - adj_size(10) - buf->size.h;
|
||
pConnDlg->pBackButton = buf;
|
||
conn_dlg->pBackButton = buf;
|
||
buf->action = disconnect_conn_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
buf->key = SDLK_ESCAPE;
|
||
... | ... | |
_("Start"), adj_font(12), 0);
|
||
buf->size.x = pwindow->size.w - adj_size(10) - buf->size.w;
|
||
buf->size.y = pBackButton->size.y;
|
||
pConnDlg->start_button = buf;
|
||
conn_dlg->start_button = buf;
|
||
buf->action = start_game_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
... | ... | |
buf->size.h = start_game_button->size.h;
|
||
buf->size.x = start_game_button->size.x - adj_size(10) - buf->size.w;
|
||
buf->size.y = start_game_button->size.y;
|
||
pConnDlg->pSelectNationButton = buf;
|
||
conn_dlg->pSelectNationButton = buf;
|
||
buf->action = select_nation_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
... | ... | |
buf->size.h = pSelectNationButton->size.h;
|
||
buf->size.x = pSelectNationButton->size.x - adj_size(10) - buf->size.w;
|
||
buf->size.y = pSelectNationButton->size.y;
|
||
pConnDlg->pLoadGameButton = buf;
|
||
conn_dlg->pLoadGameButton = buf;
|
||
buf->action = load_game_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
... | ... | |
buf->size.h = pSelectNationButton->size.h;
|
||
buf->size.x = pSelectNationButton->size.x - adj_size(10) - buf->size.w;
|
||
buf->size.y = pSelectNationButton->size.y;
|
||
pConnDlg->pConfigure = buf;
|
||
conn_dlg->pConfigure = buf;
|
||
buf->action = server_config_callback;
|
||
set_wstate(buf, FC_WS_DISABLED);
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
... | ... | |
add_to_gui_list(ID_BUTTON, buf);
|
||
#endif
|
||
pConnDlg->begin_widget_list = buf;
|
||
conn_dlg->begin_widget_list = buf;
|
||
/* ------------------------------------------------------------ */
|
||
conn_list_dialog_update();
|
||
... | ... | |
**************************************************************************/
|
||
bool popdown_conn_list_dialog(void)
|
||
{
|
||
if (pConnDlg) {
|
||
if (get_wstate(pConnDlg->pedit) == FC_WS_PRESSED) {
|
||
if (conn_dlg) {
|
||
if (get_wstate(conn_dlg->pedit) == FC_WS_PRESSED) {
|
||
force_exit_from_event_loop();
|
||
}
|
||
popdown_window_group_dialog(pConnDlg->begin_widget_list,
|
||
pConnDlg->end_widget_list);
|
||
if (pConnDlg->pUsers_Dlg) {
|
||
FC_FREE(pConnDlg->pUsers_Dlg->scroll);
|
||
FC_FREE(pConnDlg->pUsers_Dlg);
|
||
popdown_window_group_dialog(conn_dlg->begin_widget_list,
|
||
conn_dlg->end_widget_list);
|
||
if (conn_dlg->users_dlg) {
|
||
FC_FREE(conn_dlg->users_dlg->scroll);
|
||
FC_FREE(conn_dlg->users_dlg);
|
||
}
|
||
if (pConnDlg->pChat_Dlg) {
|
||
FC_FREE(pConnDlg->pChat_Dlg->scroll);
|
||
FC_FREE(pConnDlg->pChat_Dlg);
|
||
if (conn_dlg->chat_dlg) {
|
||
FC_FREE(conn_dlg->chat_dlg->scroll);
|
||
FC_FREE(conn_dlg->chat_dlg);
|
||
}
|
||
FC_FREE(pConnDlg);
|
||
FC_FREE(conn_dlg);
|
||
return TRUE;
|
||
}
|
client/gui-sdl2/citydlg.c | ||
---|---|---|
static float city_map_zoom = 1;
|
||
static struct small_dialog *pHurry_Prod_Dlg = NULL;
|
||
static struct small_dialog *hurry_prog_dlg = NULL;
|
||
static void popdown_hurry_production_dialog(void);
|
||
static void disable_city_dlg_widgets(void);
|
||
... | ... | |
FC_FREE(pcity_dlg->pPanel);
|
||
}
|
||
if (pHurry_Prod_Dlg) {
|
||
del_group_of_widgets_from_gui_list(pHurry_Prod_Dlg->begin_widget_list,
|
||
pHurry_Prod_Dlg->end_widget_list);
|
||
if (hurry_prog_dlg) {
|
||
del_group_of_widgets_from_gui_list(hurry_prog_dlg->begin_widget_list,
|
||
hurry_prog_dlg->end_widget_list);
|
||
FC_FREE(pHurry_Prod_Dlg);
|
||
FC_FREE(hurry_prog_dlg);
|
||
}
|
||
free_city_units_lists();
|
||
... | ... | |
**************************************************************************/
|
||
static void popdown_hurry_production_dialog(void)
|
||
{
|
||
if (pHurry_Prod_Dlg) {
|
||
popdown_window_group_dialog(pHurry_Prod_Dlg->begin_widget_list,
|
||
pHurry_Prod_Dlg->end_widget_list);
|
||
FC_FREE(pHurry_Prod_Dlg);
|
||
if (hurry_prog_dlg) {
|
||
popdown_window_group_dialog(hurry_prog_dlg->begin_widget_list,
|
||
hurry_prog_dlg->end_widget_list);
|
||
FC_FREE(hurry_prog_dlg);
|
||
flush_dirty();
|
||
}
|
||
}
|
||
... | ... | |
static int hurry_production_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pHurry_Prod_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(hurry_prog_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
}
|
||
... | ... | |
const char *name = city_production_name_translation(pcity);
|
||
int value = pcity->client.buy_cost;
|
||
if (pHurry_Prod_Dlg) {
|
||
if (hurry_prog_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
client_player()->economic.gold),
|
||
client_player()->economic.gold);
|
||
pHurry_Prod_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
hurry_prog_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
if (city_can_buy(pcity)) {
|
||
if (value <= client_player()->economic.gold) {
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pHurry_Prod_Dlg->end_widget_list = pwindow;
|
||
hurry_prog_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
area.w = MAX(area.w , 2 * buf->size.w + adj_size(20));
|
||
}
|
||
pHurry_Prod_Dlg->begin_widget_list = buf;
|
||
hurry_prog_dlg->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
area.w += adj_size(10);
|
||
... | ... | |
}
|
||
/* ================================================== */
|
||
/* redraw */
|
||
redraw_group(pHurry_Prod_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(hurry_prog_dlg->begin_widget_list, pwindow, 0);
|
||
widget_mark_dirty(pwindow);
|
||
flush_dirty();
|
||
}
|
client/gui-sdl2/cma_fe.c | ||
---|---|---|
static struct cma_dialog {
|
||
struct city *pcity;
|
||
struct small_dialog *pDlg;
|
||
struct small_dialog *dlg;
|
||
struct advanced_dialog *pAdv;
|
||
struct cm_parameter edited_cm_parm;
|
||
} *pCma = NULL;
|
||
... | ... | |
}
|
||
/* exit button */
|
||
pbuf = pCma->pDlg->end_widget_list->prev;
|
||
pbuf = pCma->dlg->end_widget_list->prev;
|
||
output_type_iterate(i) {
|
||
/* min label */
|
||
pbuf = pbuf->prev;
|
||
... | ... | |
{
|
||
SDL_Color bg_color = {255, 255, 255, 136};
|
||
int count, step, i;
|
||
struct widget *buf = pCma->pDlg->end_widget_list; /* pwindow */
|
||
struct widget *buf = pCma->dlg->end_widget_list; /* pwindow */
|
||
SDL_Surface *text;
|
||
utf8_str *pstr;
|
||
SDL_Rect dst;
|
||
... | ... | |
FREESURFACE(text);
|
||
/* happy factor scrollbar */
|
||
buf = pCma->pDlg->begin_widget_list->next->next->next->next->next->next->next;
|
||
buf = pCma->dlg->begin_widget_list->next->next->next->next->next->next->next;
|
||
if (client_under_control && get_checkbox_state(buf->prev)) {
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
} else {
|
||
... | ... | |
}
|
||
/* redraw rest widgets */
|
||
redraw_group(pCma->pDlg->begin_widget_list,
|
||
pCma->pDlg->end_widget_list->prev->prev, 0);
|
||
redraw_group(pCma->dlg->begin_widget_list,
|
||
pCma->dlg->end_widget_list->prev->prev, 0);
|
||
widget_flush(pCma->pDlg->end_widget_list);
|
||
widget_flush(pCma->dlg->end_widget_list);
|
||
cm_result_destroy(result);
|
||
}
|
||
... | ... | |
pCma = fc_calloc(1, sizeof(struct cma_dialog));
|
||
pCma->pcity = pcity;
|
||
pCma->pDlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
pCma->dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
pCma->pAdv = NULL;
|
||
pcity_map = get_scaled_city_map(pcity);
|
||
... | ... | |
pwindow->action = cma_dlg_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pCma->pDlg->end_widget_list = pwindow;
|
||
pCma->dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
add_to_gui_list(ID_ICON, buf);
|
||
/* -------------------------------- */
|
||
pCma->pDlg->begin_widget_list = buf;
|
||
pCma->dlg->begin_widget_list = buf;
|
||
#ifdef SMALL_SCREEN
|
||
area.w = MAX(pcity_map->w + adj_size(220) + text_w + adj_size(10) +
|
||
... | ... | |
void popdown_city_cma_dialog(void)
|
||
{
|
||
if (pCma) {
|
||
popdown_window_group_dialog(pCma->pDlg->begin_widget_list,
|
||
pCma->pDlg->end_widget_list);
|
||
FC_FREE(pCma->pDlg);
|
||
popdown_window_group_dialog(pCma->dlg->begin_widget_list,
|
||
pCma->dlg->end_widget_list);
|
||
FC_FREE(pCma->dlg);
|
||
if (pCma->pAdv) {
|
||
del_group_of_widgets_from_gui_list(pCma->pAdv->begin_widget_list,
|
||
pCma->pAdv->end_widget_list);
|
client/gui-sdl2/connectdlg.c | ||
---|---|---|
static struct server_scan *pServer_scan = NULL;
|
||
static struct advanced_dialog *pMeta_Server = NULL;
|
||
static struct small_dialog *pConnectDlg = NULL;
|
||
static struct small_dialog *connect_dlg = NULL;
|
||
static int connect_callback(struct widget *pwidget);
|
||
static int convert_portnr_callback(struct widget *pwidget);
|
||
... | ... | |
queue_flush();
|
||
close_connection_dialog();
|
||
pConnectDlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
connect_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* window */
|
||
pwindow = create_window_skeleton(NULL, NULL, 0);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pConnectDlg->end_widget_list = pwindow;
|
||
connect_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
area.h += buf->size.h + adj_size(10);
|
||
/* ------------------------------ */
|
||
pConnectDlg->begin_widget_list = buf;
|
||
connect_dlg->begin_widget_list = buf;
|
||
dialog_w = MAX(adj_size(40) + buf->size.w * 2, adj_size(210)) + adj_size(80);
|
||
... | ... | |
(main_window_height() - pwindow->size.h) / 2 + adj_size(40));
|
||
/* player name label */
|
||
buf = pConnectDlg->end_widget_list->prev;
|
||
buf = connect_dlg->end_widget_list->prev;
|
||
start_x = area.x + (area.w - buf->prev->size.w) / 2;
|
||
pos_y = area.y + adj_size(20);
|
||
... | ... | |
buf->size.x = buf->next->size.x + buf->size.w + adj_size(40);
|
||
buf->size.y = pos_y;
|
||
redraw_group(pConnectDlg->begin_widget_list, pConnectDlg->end_widget_list, FALSE);
|
||
redraw_group(connect_dlg->begin_widget_list, connect_dlg->end_widget_list, FALSE);
|
||
flush_all();
|
||
}
|
||
... | ... | |
queue_flush();
|
||
close_connection_dialog();
|
||
pConnectDlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
connect_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
pwindow = create_window_skeleton(NULL, NULL, 0);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pConnectDlg->end_widget_list = pwindow;
|
||
connect_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
/* ------------------------------ */
|
||
pConnectDlg->begin_widget_list = buf;
|
||
connect_dlg->begin_widget_list = buf;
|
||
area.w = MAX(area.w, buf->size.w * 2 + adj_size(40));
|
||
area.w = MAX(area.w, adj_size(210) - (pwindow->size.w - pwindow->area.w));
|
||
... | ... | |
(main_window_height() - pwindow->size.h) / 2);
|
||
/* text label */
|
||
buf = pConnectDlg->end_widget_list->prev;
|
||
buf = connect_dlg->end_widget_list->prev;
|
||
start_x = area.x + (area.w - buf->size.w) / 2;
|
||
start_y = area.y + adj_size(10);
|
||
... | ... | |
buf->next->size.x + buf->size.w + adj_size(40),
|
||
start_button_y);
|
||
redraw_group(pConnectDlg->begin_widget_list, pConnectDlg->end_widget_list, FALSE);
|
||
redraw_group(connect_dlg->begin_widget_list, connect_dlg->end_widget_list, FALSE);
|
||
flush_all();
|
||
}
|
||
... | ... | |
queue_flush();
|
||
close_connection_dialog();
|
||
pConnectDlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
connect_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
pwindow = create_window_skeleton(NULL, NULL, 0);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pConnectDlg->end_widget_list = pwindow;
|
||
connect_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
/* ------------------------------ */
|
||
pConnectDlg->begin_widget_list = buf;
|
||
connect_dlg->begin_widget_list = buf;
|
||
area.w = buf->size.w * 2 + adj_size(40);
|
||
area.w = MAX(area.w, adj_size(210) - (pwindow->size.w - pwindow->area.w));
|
||
... | ... | |
(main_window_height() - pwindow->size.h) / 2);
|
||
/* text label */
|
||
buf = pConnectDlg->end_widget_list->prev;
|
||
buf = connect_dlg->end_widget_list->prev;
|
||
start_x = area.x + (area.w - buf->size.w) / 2;
|
||
start_y = area.y + adj_size(10);
|
||
... | ... | |
buf->next->size.x + buf->size.w + adj_size(40),
|
||
start_button_y);
|
||
redraw_group(pConnectDlg->begin_widget_list, pConnectDlg->end_widget_list, FALSE);
|
||
redraw_group(connect_dlg->begin_widget_list, connect_dlg->end_widget_list, FALSE);
|
||
flush_all();
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
void close_connection_dialog(void)
|
||
{
|
||
if (pConnectDlg) {
|
||
popdown_window_group_dialog(pConnectDlg->begin_widget_list,
|
||
pConnectDlg->end_widget_list);
|
||
FC_FREE(pConnectDlg);
|
||
if (connect_dlg) {
|
||
popdown_window_group_dialog(connect_dlg->begin_widget_list,
|
||
connect_dlg->end_widget_list);
|
||
FC_FREE(connect_dlg);
|
||
}
|
||
if (pMeta_Server) {
|
||
popdown_window_group_dialog(pMeta_Server->begin_widget_list,
|
client/gui-sdl2/dialogs.c | ||
---|---|---|
}
|
||
/* ----------------------------------------------------------------------- */
|
||
struct advanced_dialog *pNotifyDlg = NULL;
|
||
struct advanced_dialog *notify_dlg = NULL;
|
||
/**********************************************************************//**
|
||
User interacted with generic notify dialog.
|
||
... | ... | |
static int notify_dialog_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pNotifyDlg->begin_widget_list, pwindow);
|
||
move_window_group(notify_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int exit_notify_dialog_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pNotifyDlg) {
|
||
popdown_window_group_dialog(pNotifyDlg->begin_widget_list,
|
||
pNotifyDlg->end_widget_list);
|
||
FC_FREE(pNotifyDlg->scroll);
|
||
FC_FREE(pNotifyDlg);
|
||
if (notify_dlg) {
|
||
popdown_window_group_dialog(notify_dlg->begin_widget_list,
|
||
notify_dlg->end_widget_list);
|
||
FC_FREE(notify_dlg->scroll);
|
||
FC_FREE(notify_dlg);
|
||
flush_dirty();
|
||
}
|
||
}
|
||
... | ... | |
SDL_Rect dst;
|
||
SDL_Rect area;
|
||
if (pNotifyDlg) {
|
||
if (notify_dlg) {
|
||
return;
|
||
}
|
||
pNotifyDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
notify_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pstr = create_utf8_from_char(caption, adj_font(12));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pNotifyDlg->end_widget_list = pwindow;
|
||
notify_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
area.w += (buf->size.w + adj_size(10));
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
pNotifyDlg->begin_widget_list = buf;
|
||
notify_dlg->begin_widget_list = buf;
|
||
pstr = create_utf8_from_char(headline, adj_font(16));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
... | ... | |
buf->size.y = pwindow->size.y + adj_size(2);
|
||
/* redraw */
|
||
redraw_group(pNotifyDlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(notify_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
/* ====================================================================== */
|
||
/* ========================= ADVANCED_TERRAIN_MENU ====================== */
|
||
/* ====================================================================== */
|
||
struct advanced_dialog *pAdvanced_Terrain_Dlg = NULL;
|
||
struct advanced_dialog *advanced_terrain_dlg = NULL;
|
||
/**********************************************************************//**
|
||
Popdown a generic dialog to display some generic information about
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_advanced_terrain_dialog(void)
|
||
{
|
||
if (pAdvanced_Terrain_Dlg) {
|
||
if (advanced_terrain_dlg) {
|
||
is_unit_move_blocked = FALSE;
|
||
popdown_window_group_dialog(pAdvanced_Terrain_Dlg->begin_widget_list,
|
||
pAdvanced_Terrain_Dlg->end_widget_list);
|
||
popdown_window_group_dialog(advanced_terrain_dlg->begin_widget_list,
|
||
advanced_terrain_dlg->end_widget_list);
|
||
FC_FREE(pAdvanced_Terrain_Dlg->scroll);
|
||
FC_FREE(pAdvanced_Terrain_Dlg);
|
||
FC_FREE(advanced_terrain_dlg->scroll);
|
||
FC_FREE(advanced_terrain_dlg);
|
||
}
|
||
}
|
||
... | ... | |
int advanced_terrain_window_dlg_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pAdvanced_Terrain_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(advanced_terrain_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
}
|
||
... | ... | |
int n, w = 0, h, units_h = 0;
|
||
SDL_Rect area;
|
||
if (pAdvanced_Terrain_Dlg) {
|
||
if (advanced_terrain_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
area.h = adj_size(2);
|
||
is_unit_move_blocked = TRUE;
|
||
pAdvanced_Terrain_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
advanced_terrain_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pCont = fc_calloc(1, sizeof(struct container));
|
||
pCont->id0 = index_to_map_pos_x(tile_index(ptile));
|
||
... | ... | |
set_wstate(pwindow , FC_WS_NORMAL);
|
||
add_to_gui_list(ID_TERRAIN_ADV_DLG_WINDOW, pwindow);
|
||
pAdvanced_Terrain_Dlg->end_widget_list = pwindow;
|
||
advanced_terrain_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
}
|
||
}
|
||
pAdvanced_Terrain_Dlg->begin_widget_list = buf;
|
||
advanced_terrain_dlg->begin_widget_list = buf;
|
||
/* ---------- */
|
||
if (n) {
|
||
... | ... | |
}
|
||
}
|
||
pAdvanced_Terrain_Dlg->end_active_widget_list = pLast->prev;
|
||
pAdvanced_Terrain_Dlg->active_widget_list = pAdvanced_Terrain_Dlg->end_active_widget_list;
|
||
pAdvanced_Terrain_Dlg->begin_widget_list = buf;
|
||
pAdvanced_Terrain_Dlg->begin_active_widget_list = pAdvanced_Terrain_Dlg->begin_widget_list;
|
||
advanced_terrain_dlg->end_active_widget_list = pLast->prev;
|
||
advanced_terrain_dlg->active_widget_list = advanced_terrain_dlg->end_active_widget_list;
|
||
advanced_terrain_dlg->begin_widget_list = buf;
|
||
advanced_terrain_dlg->begin_active_widget_list = advanced_terrain_dlg->begin_widget_list;
|
||
if (n > ADV_NUM_SEEN) {
|
||
units_h = ADV_NUM_SEEN * buf->size.h;
|
||
n = create_vertical_scrollbar(pAdvanced_Terrain_Dlg,
|
||
n = create_vertical_scrollbar(advanced_terrain_dlg,
|
||
1, ADV_NUM_SEEN, TRUE, TRUE);
|
||
area.w += n;
|
||
}
|
||
... | ... | |
fc_snprintf(cBuf, sizeof(cBuf), "%s (%d)", _("Ready all"), my_units);
|
||
create_active_iconlabel(buf, pwindow->dst, pstr,
|
||
cBuf, adv_unit_select_all_callback);
|
||
buf->data.unit = pAdvanced_Terrain_Dlg->end_active_widget_list->data.unit;
|
||
buf->data.unit = advanced_terrain_dlg->end_active_widget_list->data.unit;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
buf->ID = ID_LABEL;
|
||
widget_add_as_prev(buf, pLast);
|
||
... | ... | |
fc_snprintf(cBuf, sizeof(cBuf), "%s (%d)", _("Sentry idle"), my_units);
|
||
create_active_iconlabel(buf, pwindow->dst, pstr,
|
||
cBuf, adv_unit_sentry_idle_callback);
|
||
buf->data.unit = pAdvanced_Terrain_Dlg->end_active_widget_list->data.unit;
|
||
buf->data.unit = advanced_terrain_dlg->end_active_widget_list->data.unit;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
buf->ID = ID_LABEL;
|
||
widget_add_as_prev(buf, pLast->prev);
|
||
... | ... | |
area.w = MAX(area.w, buf->size.w);
|
||
units_h += buf->size.h;
|
||
/* ---------------- */
|
||
pAdvanced_Terrain_Dlg->begin_widget_list = buf;
|
||
advanced_terrain_dlg->begin_widget_list = buf;
|
||
}
|
||
}
|
||
... | ... | |
w = area.w - adj_size(2);
|
||
if (pAdvanced_Terrain_Dlg->scroll) {
|
||
if (advanced_terrain_dlg->scroll) {
|
||
units_h = n;
|
||
} else {
|
||
units_h = 0;
|
||
... | ... | |
buf = buf->prev;
|
||
while (buf) {
|
||
if (buf == pAdvanced_Terrain_Dlg->end_active_widget_list) {
|
||
if (buf == advanced_terrain_dlg->end_active_widget_list) {
|
||
w -= units_h;
|
||
}
|
||
... | ... | |
*get_theme_color(COLOR_THEME_ADVANCEDTERRAINDLG_TEXT)));
|
||
}
|
||
if (buf == pAdvanced_Terrain_Dlg->begin_widget_list
|
||
|| buf == pAdvanced_Terrain_Dlg->begin_active_widget_list) {
|
||
if (buf == advanced_terrain_dlg->begin_widget_list
|
||
|| buf == advanced_terrain_dlg->begin_active_widget_list) {
|
||
break;
|
||
}
|
||
buf = buf->prev;
|
||
}
|
||
if (pAdvanced_Terrain_Dlg->scroll) {
|
||
setup_vertical_scrollbar_area(pAdvanced_Terrain_Dlg->scroll,
|
||
if (advanced_terrain_dlg->scroll) {
|
||
setup_vertical_scrollbar_area(advanced_terrain_dlg->scroll,
|
||
area.x + area.w,
|
||
pAdvanced_Terrain_Dlg->end_active_widget_list->size.y,
|
||
area.y - pAdvanced_Terrain_Dlg->end_active_widget_list->size.y + area.h,
|
||
advanced_terrain_dlg->end_active_widget_list->size.y,
|
||
area.y - advanced_terrain_dlg->end_active_widget_list->size.y + area.h,
|
||
TRUE);
|
||
}
|
||
/* -------------------- */
|
||
/* redraw */
|
||
redraw_group(pAdvanced_Terrain_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(advanced_terrain_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
/* ====================================================================== */
|
||
/* ============================ PILLAGE DIALOG ========================== */
|
||
/* ====================================================================== */
|
||
static struct small_dialog *pPillage_Dlg = NULL;
|
||
static struct small_dialog *pillage_dlg = NULL;
|
||
/**********************************************************************//**
|
||
User interacted with pillage dialog.
|
||
... | ... | |
static int pillage_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pPillage_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(pillage_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
static void popdown_pillage_dialog(void)
|
||
{
|
||
if (pPillage_Dlg) {
|
||
if (pillage_dlg) {
|
||
is_unit_move_blocked = FALSE;
|
||
popdown_window_group_dialog(pPillage_Dlg->begin_widget_list,
|
||
pPillage_Dlg->end_widget_list);
|
||
FC_FREE(pPillage_Dlg);
|
||
popdown_window_group_dialog(pillage_dlg->begin_widget_list,
|
||
pillage_dlg->end_widget_list);
|
||
FC_FREE(pillage_dlg);
|
||
flush_dirty();
|
||
}
|
||
}
|
||
... | ... | |
SDL_Rect area;
|
||
struct extra_type *tgt;
|
||
if (pPillage_Dlg) {
|
||
if (pillage_dlg) {
|
||
return;
|
||
}
|
||
is_unit_move_blocked = TRUE;
|
||
pPillage_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
pillage_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* window */
|
||
pstr = create_utf8_from_char(_("What To Pillage") , adj_font(12));
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_PILLAGE_DLG_WINDOW, pwindow);
|
||
pPillage_Dlg->end_widget_list = pwindow;
|
||
pillage_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
area.w = MAX(area.w, buf->size.w);
|
||
area.h += buf->size.h;
|
||
}
|
||
pPillage_Dlg->begin_widget_list = buf;
|
||
pillage_dlg->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
... | ... | |
buf = buf->prev;
|
||
setup_vertical_widgets_position(1,
|
||
area.x, area.y + 1, area.w, 0,
|
||
pPillage_Dlg->begin_widget_list, buf);
|
||
pillage_dlg->begin_widget_list, buf);
|
||
/* --------------------- */
|
||
/* redraw */
|
||
redraw_group(pPillage_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(pillage_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
/* ======================================================================= */
|
||
/* =========================== CONNECT DIALOG ============================ */
|
||
/* ======================================================================= */
|
||
static struct small_dialog *pConnect_Dlg = NULL;
|
||
static struct small_dialog *connect_dlg = NULL;
|
||
/**********************************************************************//**
|
||
Popdown a dialog asking the unit how they want to "connect" their
|
||
... | ... | |
**************************************************************************/
|
||
static void popdown_connect_dialog(void)
|
||
{
|
||
if (pConnect_Dlg) {
|
||
if (connect_dlg) {
|
||
is_unit_move_blocked = FALSE;
|
||
popdown_window_group_dialog(pConnect_Dlg->begin_widget_list,
|
||
pConnect_Dlg->end_widget_list);
|
||
FC_FREE(pConnect_Dlg);
|
||
popdown_window_group_dialog(connect_dlg->begin_widget_list,
|
||
connect_dlg->end_widget_list);
|
||
FC_FREE(connect_dlg);
|
||
}
|
||
}
|
||
... | ... | |
/**************************************************************************
|
||
Select Goverment Type
|
||
**************************************************************************/
|
||
static struct small_dialog *pGov_Dlg = NULL;
|
||
static struct small_dialog *gov_dlg = NULL;
|
||
/**********************************************************************//**
|
||
Close the government dialog.
|
||
**************************************************************************/
|
||
static void popdown_government_dialog(void)
|
||
{
|
||
if (pGov_Dlg) {
|
||
popdown_window_group_dialog(pGov_Dlg->begin_widget_list,
|
||
pGov_Dlg->end_widget_list);
|
||
FC_FREE(pGov_Dlg);
|
||
if (gov_dlg) {
|
||
popdown_window_group_dialog(gov_dlg->begin_widget_list,
|
||
gov_dlg->end_widget_list);
|
||
FC_FREE(gov_dlg);
|
||
enable_and_redraw_revolution_button();
|
||
}
|
||
}
|
||
... | ... | |
static int move_government_dlg_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pGov_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(gov_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
}
|
||
... | ... | |
Uint16 max_w = 0, max_h = 0;
|
||
SDL_Rect area;
|
||
if (pGov_Dlg) {
|
||
if (gov_dlg) {
|
||
return;
|
||
}
|
||
pGov_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
gov_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* create window */
|
||
pstr = create_utf8_from_char(_("Choose Your New Government"), adj_font(12));
|
||
... | ... | |
pwindow->action = move_government_dlg_callback;
|
||
add_to_gui_list(ID_GOVERNMENT_DLG_WINDOW, pwindow);
|
||
pGov_Dlg->end_widget_list = pwindow;
|
||
gov_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
}
|
||
} governments_iterate_end;
|
||
pGov_Dlg->begin_widget_list = gov_button;
|
||
gov_dlg->begin_widget_list = gov_button;
|
||
max_w += adj_size(10);
|
||
max_h += adj_size(4);
|
||
... | ... | |
/* set buttons start positions and size */
|
||
j = 1;
|
||
while (gov_button != pGov_Dlg->end_widget_list) {
|
||
while (gov_button != gov_dlg->end_widget_list) {
|
||
gov_button->size.w = max_w;
|
||
gov_button->size.h = max_h;
|
||
gov_button->size.x = area.x + adj_size(10);
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
/* redraw */
|
||
redraw_group(pGov_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(gov_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
/**************************************************************************
|
||
Nation Wizard
|
||
**************************************************************************/
|
||
static struct advanced_dialog *pNationDlg = NULL;
|
||
static struct advanced_dialog *nation_dlg = NULL;
|
||
static struct small_dialog *help_dlg = NULL;
|
||
struct NAT {
|
||
... | ... | |
static int nations_dialog_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (select_window_group_dialog(pNationDlg->begin_widget_list, pwindow)) {
|
||
if (select_window_group_dialog(nation_dlg->begin_widget_list, pwindow)) {
|
||
widget_flush(pwindow);
|
||
}
|
||
}
|
||
... | ... | |
static int races_dialog_ok_callback(struct widget *start_button)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
char *pstr = pSetup->name_edit->string_utf8->text;
|
||
/* perform a minimum of sanity test on the name */
|
||
... | ... | |
static int change_sex_callback(struct widget *pSex)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
if (pSetup->leader_sex) {
|
||
copy_chars_to_utf8_str(pSetup->pChange_Sex->string_utf8, _("Female"));
|
||
... | ... | |
static int next_name_callback(struct widget *pNext)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
const struct nation_leader_list *leaders =
|
||
nation_leaders(nation_by_number(pSetup->nation));
|
||
const struct nation_leader *pleader;
|
||
... | ... | |
static int prev_name_callback(struct widget *pPrev)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
const struct nation_leader_list *leaders =
|
||
nation_leaders(nation_by_number(pSetup->nation));
|
||
const struct nation_leader *pleader;
|
||
... | ... | |
static int next_set_callback(struct widget *next_button)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
struct option *poption = optset_option_by_name(server_optset, "nationset");
|
||
fc_assert(pSetup->set != NULL
|
||
... | ... | |
static int prev_set_callback(struct widget *prev_button)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
struct option *poption = optset_option_by_name(server_optset, "nationset");
|
||
fc_assert(pSetup->set != NULL && nation_set_index(pSetup->set) > 0);
|
||
... | ... | |
static int style_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
struct widget *pGUI = get_widget_pointer_form_main_list(MAX_ID - 1000 -
|
||
pSetup->nation_style);
|
||
... | ... | |
selected_widget = pNationButton;
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
if (pSetup->nation == MAX_ID - pNationButton->ID) {
|
||
widget_redraw(pNationButton);
|
||
... | ... | |
select_random_leader(pSetup->nation);
|
||
redraw_group(pNationDlg->begin_widget_list, pNationDlg->end_widget_list, 0);
|
||
widget_flush(pNationDlg->end_widget_list);
|
||
redraw_group(nation_dlg->begin_widget_list, nation_dlg->end_widget_list, 0);
|
||
widget_flush(nation_dlg->end_widget_list);
|
||
} else {
|
||
/* pop up nation description */
|
||
struct widget *pwindow, *ok_button;
|
||
... | ... | |
static void change_nation_label(void)
|
||
{
|
||
SDL_Surface *pTmp_Surf, *pTmp_Surf_zoomed;
|
||
struct widget *pwindow = pNationDlg->end_widget_list;
|
||
struct widget *pwindow = nation_dlg->end_widget_list;
|
||
struct NAT *pSetup = (struct NAT *)(pwindow->data.ptr);
|
||
struct widget *pLabel = pSetup->name_edit->next;
|
||
struct nation_type *pNation = nation_by_number(pSetup->nation);
|
||
... | ... | |
**************************************************************************/
|
||
static void select_random_leader(Nation_type_id nation)
|
||
{
|
||
struct NAT *pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
struct NAT *pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
const struct nation_leader_list *leaders =
|
||
nation_leaders(nation_by_number(pSetup->nation));
|
||
const struct nation_leader *pleader;
|
||
... | ... | |
#define TARGETS_ROW 5
|
||
#define TARGETS_COL 1
|
||
if (pNationDlg) {
|
||
if (nation_dlg) {
|
||
return;
|
||
}
|
||
races_player = pplayer;
|
||
pNationDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
nation_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
/* create window widget */
|
||
pstr = create_utf8_from_char(_("What nation will you be?"), adj_font(12));
|
||
... | ... | |
pSetup = fc_calloc(1, sizeof(struct NAT));
|
||
pwindow->data.ptr = (void *)pSetup;
|
||
pNationDlg->end_widget_list = pwindow;
|
||
nation_dlg->end_widget_list = pwindow;
|
||
add_to_gui_list(ID_NATION_WIZARD_WINDOW, pwindow);
|
||
/* --------------------------------------------------------- */
|
||
/* create nations list */
|
||
... | ... | |
FREESURFACE(pMain_Bg);
|
||
pNationDlg->end_active_widget_list = pwindow->prev;
|
||
pNationDlg->begin_widget_list = pwidget;
|
||
pNationDlg->begin_active_widget_list = pNationDlg->begin_widget_list;
|
||
nation_dlg->end_active_widget_list = pwindow->prev;
|
||
nation_dlg->begin_widget_list = pwidget;
|
||
nation_dlg->begin_active_widget_list = nation_dlg->begin_widget_list;
|
||
if (get_playable_nation_count() > TARGETS_ROW * TARGETS_COL) {
|
||
pNationDlg->active_widget_list = pNationDlg->end_active_widget_list;
|
||
create_vertical_scrollbar(pNationDlg,
|
||
nation_dlg->active_widget_list = nation_dlg->end_active_widget_list;
|
||
create_vertical_scrollbar(nation_dlg,
|
||
TARGETS_COL, TARGETS_ROW, TRUE, TRUE);
|
||
}
|
||
... | ... | |
pwidget->size.w = MAX(pwidget->size.w, pwidget->next->size.w);
|
||
pwidget->next->size.w = pwidget->size.w;
|
||
pNationDlg->begin_widget_list = pwidget;
|
||
nation_dlg->begin_widget_list = pwidget;
|
||
/* ---------------------------------------------------------- */
|
||
pMain_Bg = theme_get_background(theme, BACKGROUND_NATIONDLG);
|
||
... | ... | |
/* nations */
|
||
h = pNationDlg->end_active_widget_list->size.h * TARGETS_ROW;
|
||
h = nation_dlg->end_active_widget_list->size.h * TARGETS_ROW;
|
||
i = (area.h - adj_size(43) - h) / 2;
|
||
setup_vertical_widgets_position(TARGETS_COL,
|
||
area.x + adj_size(10),
|
||
area.y + i - adj_size(4),
|
||
0, 0, pNationDlg->begin_active_widget_list,
|
||
pNationDlg->end_active_widget_list);
|
||
0, 0, nation_dlg->begin_active_widget_list,
|
||
nation_dlg->end_active_widget_list);
|
||
if (pNationDlg->scroll) {
|
||
if (nation_dlg->scroll) {
|
||
SDL_Rect area2;
|
||
w = pNationDlg->end_active_widget_list->size.w * TARGETS_COL;
|
||
setup_vertical_scrollbar_area(pNationDlg->scroll,
|
||
w = nation_dlg->end_active_widget_list->size.w * TARGETS_COL;
|
||
setup_vertical_scrollbar_area(nation_dlg->scroll,
|
||
area.x + w + adj_size(12),
|
||
area.y + i - adj_size(4), h, FALSE);
|
||
area2.x = area.x + w + adj_size(11);
|
||
area2.y = area.y + i - adj_size(4);
|
||
area2.w = pNationDlg->scroll->up_left_button->size.w + adj_size(2);
|
||
area2.w = nation_dlg->scroll->up_left_button->size.w + adj_size(2);
|
||
area2.h = h;
|
||
fill_rect_alpha(pwindow->theme, &area2, &bg_color);
|
||
... | ... | |
select_random_leader(pSetup->nation);
|
||
redraw_group(pNationDlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(nation_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_races_dialog(void)
|
||
{
|
||
if (pNationDlg) {
|
||
popdown_window_group_dialog(pNationDlg->begin_widget_list,
|
||
pNationDlg->end_widget_list);
|
||
if (nation_dlg) {
|
||
popdown_window_group_dialog(nation_dlg->begin_widget_list,
|
||
nation_dlg->end_widget_list);
|
||
cancel_help_dlg_callback(NULL);
|
||
FC_FREE(pLeaderName);
|
||
FC_FREE(pNationDlg->scroll);
|
||
FC_FREE(pNationDlg);
|
||
FC_FREE(nation_dlg->scroll);
|
||
FC_FREE(nation_dlg);
|
||
}
|
||
}
|
||
... | ... | |
{
|
||
/* If this is because of nationset change, update will take
|
||
* place later when the new option value is received */
|
||
if (pNationDlg != NULL && !nationset_change) {
|
||
if (nation_dlg != NULL && !nationset_change) {
|
||
popdown_races_dialog();
|
||
popup_races_dialog(client.conn.playing);
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
void nationset_changed(void)
|
||
{
|
||
if (pNationDlg != NULL) {
|
||
if (nation_dlg != NULL) {
|
||
popdown_races_dialog();
|
||
popup_races_dialog(client.conn.playing);
|
||
}
|
||
... | ... | |
bool change = FALSE;
|
||
struct widget *pNat;
|
||
if (!pNationDlg) {
|
||
if (!nation_dlg) {
|
||
return;
|
||
}
|
||
pSetup = (struct NAT *)(pNationDlg->end_widget_list->data.ptr);
|
||
pSetup = (struct NAT *)(nation_dlg->end_widget_list->data.ptr);
|
||
nations_iterate(nation) {
|
||
if (!is_nation_pickable(nation) || nation->player) {
|
||
... | ... | |
disable(MAX_ID - 1000 - pSetup->nation_style);
|
||
select_random_leader(pSetup->nation);
|
||
}
|
||
redraw_group(pNationDlg->begin_widget_list, pNationDlg->end_widget_list, 0);
|
||
widget_flush(pNationDlg->end_widget_list);
|
||
redraw_group(nation_dlg->begin_widget_list, nation_dlg->end_widget_list, 0);
|
||
widget_flush(nation_dlg->end_widget_list);
|
||
}
|
||
/**********************************************************************//**
|
client/gui-sdl2/diplodlg.c | ||
---|---|---|
struct widget *main_window,
|
||
bool L_R)
|
||
{
|
||
struct advanced_dialog *pDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
struct advanced_dialog *dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
struct container *pCont = fc_calloc(1, sizeof(struct container));
|
||
int width, height, count = 0, scroll_w = 0;
|
||
char cBuf[128];
|
||
... | ... | |
pwindow->action = dipomatic_window_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pDlg->end_widget_list = pwindow;
|
||
dlg->end_widget_list = pwindow;
|
||
pwindow->data.cont = pCont;
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
... | ... | |
FC_FREE(city_list_ptrs);
|
||
} /* Cities */
|
||
pDlg->begin_widget_list = buf;
|
||
pDlg->begin_active_widget_list = pDlg->begin_widget_list;
|
||
pDlg->end_active_widget_list = pDlg->end_widget_list->prev;
|
||
pDlg->scroll = NULL;
|
||
dlg->begin_widget_list = buf;
|
||
dlg->begin_active_widget_list = dlg->begin_widget_list;
|
||
dlg->end_active_widget_list = dlg->end_widget_list->prev;
|
||
dlg->scroll = NULL;
|
||
area.h = (main_window_height() - adj_size(100) - (pwindow->size.h - pwindow->area.h));
|
||
if (area.h < (count * height)) {
|
||
pDlg->active_widget_list = pDlg->end_active_widget_list;
|
||
dlg->active_widget_list = dlg->end_active_widget_list;
|
||
count = area.h / height;
|
||
scroll_w = create_vertical_scrollbar(pDlg, 1, count, TRUE, TRUE);
|
||
scroll_w = create_vertical_scrollbar(dlg, 1, count, TRUE, TRUE);
|
||
buf = pwindow;
|
||
/* hide not seen widgets */
|
||
do {
|
||
... | ... | |
} else {
|
||
set_wflag(buf, WF_HIDDEN);
|
||
}
|
||
} while (buf != pDlg->begin_active_widget_list);
|
||
} while (buf != dlg->begin_active_widget_list);
|
||
}
|
||
area.w = MAX(width + adj_size(4) + scroll_w, adj_size(150) - (pwindow->size.w - pwindow->area.w));
|
||
... | ... | |
setup_vertical_widgets_position(1,
|
||
area.x + adj_size(2), area.y + 1,
|
||
width, height, pDlg->begin_active_widget_list,
|
||
pDlg->end_active_widget_list);
|
||
width, height, dlg->begin_active_widget_list,
|
||
dlg->end_active_widget_list);
|
||
if (pDlg->scroll) {
|
||
setup_vertical_scrollbar_area(pDlg->scroll,
|
||
if (dlg->scroll) {
|
||
setup_vertical_scrollbar_area(dlg->scroll,
|
||
area.x + area.w,
|
||
area.y,
|
||
area.h, TRUE);
|
||
}
|
||
return pDlg;
|
||
return dlg;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
/* ================================================================= */
|
||
/* ========================== Small Diplomat Dialog ================ */
|
||
/* ================================================================= */
|
||
static struct small_dialog *pSDip_Dlg = NULL;
|
||
static struct small_dialog *spy_dlg = NULL;
|
||
/**********************************************************************//**
|
||
Close small diplomacy dialog.
|
||
**************************************************************************/
|
||
static void popdown_sdip_dialog(void)
|
||
{
|
||
if (pSDip_Dlg) {
|
||
popdown_window_group_dialog(pSDip_Dlg->begin_widget_list,
|
||
pSDip_Dlg->end_widget_list);
|
||
FC_FREE(pSDip_Dlg);
|
||
if (spy_dlg) {
|
||
popdown_window_group_dialog(spy_dlg->begin_widget_list,
|
||
spy_dlg->end_widget_list);
|
||
FC_FREE(spy_dlg);
|
||
}
|
||
}
|
||
... | ... | |
static int sdip_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pSDip_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(spy_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
SDL_Rect dst;
|
||
SDL_Rect area;
|
||
if (pSDip_Dlg) {
|
||
if (spy_dlg) {
|
||
return;
|
||
}
|
||
pSDip_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
spy_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
fc_snprintf(cBuf, sizeof(cBuf),
|
||
/* TRANS: "Polish incident !" FIXME!!! */
|
||
... | ... | |
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pSDip_Dlg->end_widget_list = pwindow;
|
||
spy_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
buf->next->size.w = buf->size.w;
|
||
area.w = MAX(area.w , 2 * buf->size.w + adj_size(20));
|
||
pSDip_Dlg->begin_widget_list = buf;
|
||
spy_dlg->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
area.w += adj_size(10);
|
||
... | ... | |
/* ================================================== */
|
||
/* redraw */
|
||
redraw_group(pSDip_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(spy_dlg->begin_widget_list, pwindow, 0);
|
||
widget_mark_dirty(pwindow);
|
||
flush_dirty();
|
||
}
|
||
... | ... | |
int buttons = 0;
|
||
bool can_toward_war;
|
||
if (pSDip_Dlg) {
|
||
if (spy_dlg) {
|
||
return;
|
||
}
|
||
pSDip_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
spy_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
fc_snprintf(cBuf, sizeof(cBuf), _("Foreign Minister"));
|
||
pstr = create_utf8_from_char(cBuf, adj_font(12));
|
||
... | ... | |
pwindow->action = sdip_window_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pSDip_Dlg->end_widget_list = pwindow;
|
||
spy_dlg->end_widget_list = pwindow;
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
... | ... | |
add_to_gui_list(ID_BUTTON, buf);
|
||
pSDip_Dlg->begin_widget_list = buf;
|
||
spy_dlg->begin_widget_list = buf;
|
||
/* setup window size and start position */
|
||
area.w += adj_size(10);
|
||
... | ... | |
/* ================================================== */
|
||
/* redraw */
|
||
redraw_group(pSDip_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(spy_dlg->begin_widget_list, pwindow, 0);
|
||
widget_mark_dirty(pwindow);
|
||
flush_dirty();
|
client/gui-sdl2/finddlg.c | ||
---|---|---|
/* ====================================================================== */
|
||
/* ============================= FIND CITY MENU ========================= */
|
||
/* ====================================================================== */
|
||
static struct advanced_dialog *pFind_City_Dlg = NULL;
|
||
static struct advanced_dialog *find_city_dlg = NULL;
|
||
/**********************************************************************//**
|
||
User interacted with find city dialog window.
|
||
... | ... | |
static int find_city_window_dlg_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pFind_City_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(find_city_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_find_dialog(void)
|
||
{
|
||
if (pFind_City_Dlg) {
|
||
popdown_window_group_dialog(pFind_City_Dlg->begin_widget_list,
|
||
pFind_City_Dlg->end_widget_list);
|
||
FC_FREE(pFind_City_Dlg->scroll);
|
||
FC_FREE(pFind_City_Dlg);
|
||
if (find_city_dlg) {
|
||
popdown_window_group_dialog(find_city_dlg->begin_widget_list,
|
||
find_city_dlg->end_widget_list);
|
||
FC_FREE(find_city_dlg->scroll);
|
||
FC_FREE(find_city_dlg);
|
||
enable_and_redraw_find_city_button();
|
||
}
|
||
}
|
||
... | ... | |
}
|
||
} players_iterate_end;
|
||
if (pFind_City_Dlg && !h) {
|
||
if (find_city_dlg && !h) {
|
||
return;
|
||
}
|
||
original = canvas_pos_to_tile(main_data.map->w / 2, main_data.map->h / 2);
|
||
pFind_City_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
find_city_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pstr = create_utf8_from_char(_("Find City") , adj_font(12));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
... | ... | |
set_wstate(pwindow , FC_WS_NORMAL);
|
||
add_to_gui_list(ID_TERRAIN_ADV_DLG_WINDOW, pwindow);
|
||
pFind_City_Dlg->end_widget_list = pwindow;
|
||
find_city_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
} city_list_iterate_end;
|
||
} players_iterate_end;
|
||
pFind_City_Dlg->begin_widget_list = buf;
|
||
pFind_City_Dlg->begin_active_widget_list = pFind_City_Dlg->begin_widget_list;
|
||
pFind_City_Dlg->end_active_widget_list = pwindow->prev->prev;
|
||
pFind_City_Dlg->active_widget_list = pFind_City_Dlg->end_active_widget_list;
|
||
find_city_dlg->begin_widget_list = buf;
|
||
find_city_dlg->begin_active_widget_list = find_city_dlg->begin_widget_list;
|
||
find_city_dlg->end_active_widget_list = pwindow->prev->prev;
|
||
find_city_dlg->active_widget_list = find_city_dlg->end_active_widget_list;
|
||
/* ---------- */
|
||
if (n > 20) {
|
||
units_h = create_vertical_scrollbar(pFind_City_Dlg, 1, 20, TRUE, TRUE);
|
||
pFind_City_Dlg->scroll->count = n;
|
||
units_h = create_vertical_scrollbar(find_city_dlg, 1, 20, TRUE, TRUE);
|
||
find_city_dlg->scroll->count = n;
|
||
n = units_h;
|
||
area.w += n;
|
||
... | ... | |
w = area.w;
|
||
if (pFind_City_Dlg->scroll) {
|
||
if (find_city_dlg->scroll) {
|
||
w -= n;
|
||
}
|
||
... | ... | |
/* cities */
|
||
buf = buf->prev;
|
||
setup_vertical_widgets_position(1, area.x, area.y, w, 0,
|
||
pFind_City_Dlg->begin_active_widget_list,
|
||
find_city_dlg->begin_active_widget_list,
|
||
buf);
|
||
if (pFind_City_Dlg->scroll) {
|
||
setup_vertical_scrollbar_area(pFind_City_Dlg->scroll,
|
||
if (find_city_dlg->scroll) {
|
||
setup_vertical_scrollbar_area(find_city_dlg->scroll,
|
||
area.x + area.w, area.y,
|
||
area.h, TRUE);
|
||
}
|
||
/* -------------------- */
|
||
/* redraw */
|
||
redraw_group(pFind_City_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(find_city_dlg->begin_widget_list, pwindow, 0);
|
||
widget_mark_dirty(pwindow);
|
||
flush_dirty();
|
client/gui-sdl2/gotodlg.c | ||
---|---|---|
#include "gotodlg.h"
|
||
static struct advanced_dialog *pGotoDlg = NULL;
|
||
static struct advanced_dialog *goto_dlg = NULL;
|
||
bv_player all_players;
|
||
static bool GOTO = TRUE;
|
||
... | ... | |
static int goto_dialog_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pGotoDlg->begin_widget_list, pwindow);
|
||
move_window_group(goto_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
int n = 0;
|
||
struct player *owner = NULL;
|
||
if (pGotoDlg->end_active_widget_list) {
|
||
add_dock = pGotoDlg->end_active_widget_list->next;
|
||
pGotoDlg->begin_widget_list = add_dock;
|
||
del_group(pGotoDlg->begin_active_widget_list, pGotoDlg->end_active_widget_list);
|
||
pGotoDlg->active_widget_list = NULL;
|
||
if (goto_dlg->end_active_widget_list) {
|
||
add_dock = goto_dlg->end_active_widget_list->next;
|
||
goto_dlg->begin_widget_list = add_dock;
|
||
del_group(goto_dlg->begin_active_widget_list, goto_dlg->end_active_widget_list);
|
||
goto_dlg->active_widget_list = NULL;
|
||
} else {
|
||
add_dock = pGotoDlg->begin_widget_list;
|
||
add_dock = goto_dlg->begin_widget_list;
|
||
}
|
||
pLast = add_dock;
|
||
... | ... | |
logo = crop_visible_part_from_surface(logo);
|
||
}
|
||
buf = create_iconlabel(logo, pGotoDlg->end_widget_list->dst, pstr,
|
||
buf = create_iconlabel(logo, goto_dlg->end_widget_list->dst, pstr,
|
||
(WF_RESTORE_BACKGROUND|WF_DRAW_TEXT_LABEL_WITH_SPACE));
|
||
if (!player_owns_city(owner, pcity)) {
|
||
... | ... | |
widget_add_as_prev(buf, add_dock);
|
||
add_dock = buf;
|
||
if (n > (pGotoDlg->scroll->active - 1)) {
|
||
if (n > (goto_dlg->scroll->active - 1)) {
|
||
set_wflag(buf, WF_HIDDEN);
|
||
}
|
||
... | ... | |
} players_iterate_end;
|
||
if (n > 0) {
|
||
pGotoDlg->begin_widget_list = buf;
|
||
pGotoDlg->begin_active_widget_list = pGotoDlg->begin_widget_list;
|
||
pGotoDlg->end_active_widget_list = pLast->prev;
|
||
pGotoDlg->active_widget_list = pGotoDlg->end_active_widget_list;
|
||
pGotoDlg->scroll->count = n;
|
||
if (n > pGotoDlg->scroll->active) {
|
||
show_scrollbar(pGotoDlg->scroll);
|
||
pGotoDlg->scroll->pscroll_bar->size.y = pGotoDlg->end_widget_list->area.y +
|
||
pGotoDlg->scroll->up_left_button->size.h;
|
||
pGotoDlg->scroll->pscroll_bar->size.h = scrollbar_size(pGotoDlg->scroll);
|
||
goto_dlg->begin_widget_list = buf;
|
||
goto_dlg->begin_active_widget_list = goto_dlg->begin_widget_list;
|
||
goto_dlg->end_active_widget_list = pLast->prev;
|
||
goto_dlg->active_widget_list = goto_dlg->end_active_widget_list;
|
||
goto_dlg->scroll->count = n;
|
||
if (n > goto_dlg->scroll->active) {
|
||
show_scrollbar(goto_dlg->scroll);
|
||
goto_dlg->scroll->pscroll_bar->size.y = goto_dlg->end_widget_list->area.y +
|
||
goto_dlg->scroll->up_left_button->size.h;
|
||
goto_dlg->scroll->pscroll_bar->size.h = scrollbar_size(goto_dlg->scroll);
|
||
} else {
|
||
hide_scrollbar(pGotoDlg->scroll);
|
||
hide_scrollbar(goto_dlg->scroll);
|
||
}
|
||
setup_vertical_widgets_position(1,
|
||
pGotoDlg->end_widget_list->area.x,
|
||
pGotoDlg->end_widget_list->area.y,
|
||
pGotoDlg->scroll->up_left_button->size.x -
|
||
pGotoDlg->end_widget_list->area.x - adj_size(2),
|
||
0, pGotoDlg->begin_active_widget_list,
|
||
pGotoDlg->end_active_widget_list);
|
||
goto_dlg->end_widget_list->area.x,
|
||
goto_dlg->end_widget_list->area.y,
|
||
goto_dlg->scroll->up_left_button->size.x -
|
||
goto_dlg->end_widget_list->area.x - adj_size(2),
|
||
0, goto_dlg->begin_active_widget_list,
|
||
goto_dlg->end_active_widget_list);
|
||
} else {
|
||
hide_scrollbar(pGotoDlg->scroll);
|
||
hide_scrollbar(goto_dlg->scroll);
|
||
}
|
||
/* redraw */
|
||
redraw_group(pGotoDlg->begin_widget_list, pGotoDlg->end_widget_list, 0);
|
||
widget_flush(pGotoDlg->end_widget_list);
|
||
redraw_group(goto_dlg->begin_widget_list, goto_dlg->end_widget_list, 0);
|
||
widget_flush(goto_dlg->end_widget_list);
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
int i, col, block_x, x, y;
|
||
SDL_Rect area;
|
||
if (pGotoDlg) {
|
||
if (goto_dlg) {
|
||
return;
|
||
}
|
||
pGotoDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
goto_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pstr = create_utf8_from_char(_("Select destination"), adj_font(12));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pGotoDlg->end_widget_list = pwindow;
|
||
goto_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
col++;
|
||
} players_iterate_end;
|
||
pGotoDlg->begin_widget_list = buf;
|
||
goto_dlg->begin_widget_list = buf;
|
||
create_vertical_scrollbar(pGotoDlg, 1, adj_size(320) / adj_size(30), TRUE, TRUE);
|
||
hide_scrollbar(pGotoDlg->scroll);
|
||
create_vertical_scrollbar(goto_dlg, 1, adj_size(320) / adj_size(30), TRUE, TRUE);
|
||
hide_scrollbar(goto_dlg->scroll);
|
||
area.w = MAX(area.w, adj_size(300));
|
||
area.h = adj_size(320);
|
||
... | ... | |
x += buf->size.w + adj_size(5);
|
||
}
|
||
if (buf == pGotoDlg->begin_widget_list) {
|
||
if (buf == goto_dlg->begin_widget_list) {
|
||
break;
|
||
}
|
||
... | ... | |
buf = buf->prev;
|
||
}
|
||
setup_vertical_scrollbar_area(pGotoDlg->scroll,
|
||
setup_vertical_scrollbar_area(goto_dlg->scroll,
|
||
block_x, area.y,
|
||
area.h, TRUE);
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_goto_airlift_dialog(void)
|
||
{
|
||
if (pGotoDlg) {
|
||
popdown_window_group_dialog(pGotoDlg->begin_widget_list,
|
||
pGotoDlg->end_widget_list);
|
||
FC_FREE(pGotoDlg->scroll);
|
||
FC_FREE(pGotoDlg);
|
||
if (goto_dlg) {
|
||
popdown_window_group_dialog(goto_dlg->begin_widget_list,
|
||
goto_dlg->end_widget_list);
|
||
FC_FREE(goto_dlg->scroll);
|
||
FC_FREE(goto_dlg);
|
||
}
|
||
GOTO = TRUE;
|
||
}
|
client/gui-sdl2/mapctrl.c | ||
---|---|---|
extern bool is_unit_move_blocked;
|
||
static char *pSuggestedCityName = NULL;
|
||
static struct small_dialog *pNewCity_Dlg = NULL;
|
||
static struct small_dialog *new_city_dlg = NULL;
|
||
extern struct widget *options_button;
|
||
#ifdef SCALE_MINIMAP
|
||
static struct small_dialog *pScale_MiniMap_Dlg = NULL;
|
||
static struct small_dialog *scale_minimap_dlg = NULL;
|
||
static int popdown_scale_minmap_dlg_callback(struct widget *pwidget);
|
||
#endif /* SCALE_MINIMAP */
|
||
#ifdef SCALE_UNITINFO
|
||
static struct small_dialog *pScale_UnitInfo_Dlg = NULL;
|
||
static struct small_dialog *scale_unit_info_dlg = NULL;
|
||
static int INFO_WIDTH, INFO_HEIGHT = 0, INFO_WIDTH_MIN, INFO_HEIGHT_MIN;
|
||
static int popdown_scale_unitinfo_dlg_callback(struct widget *pwidget);
|
||
static void remake_unitinfo(int w, int h);
|
||
#endif /* SCALE_UNITINFO */
|
||
static struct advanced_dialog *pMiniMap_Dlg = NULL;
|
||
static struct advanced_dialog *minimap_dlg = NULL;
|
||
static struct advanced_dialog *unit_info_dlg = NULL;
|
||
int overview_w = 0;
|
||
... | ... | |
static int move_scale_minimap_dlg_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pScale_MiniMap_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(scale_minimap_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int popdown_scale_minimap_dlg_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pScale_MiniMap_Dlg) {
|
||
popdown_window_group_dialog(pScale_MiniMap_Dlg->begin_widget_list,
|
||
pScale_MiniMap_Dlg->end_widget_list);
|
||
FC_FREE(pScale_MiniMap_Dlg);
|
||
if (scale_minimap_dlg) {
|
||
popdown_window_group_dialog(scale_minimap_dlg->begin_widget_list,
|
||
scale_minimap_dlg->end_widget_list);
|
||
FC_FREE(scale_minimap_dlg);
|
||
if (pwidget) {
|
||
flush_dirty();
|
||
}
|
||
... | ... | |
int window_x = 0, window_y = 0;
|
||
SDL_Rect area;
|
||
if (pScale_MiniMap_Dlg || !(sdl2_client_flags & CF_OVERVIEW_SHOWN)) {
|
||
if (scale_minimap_dlg || !(sdl2_client_flags & CF_OVERVIEW_SHOWN)) {
|
||
return;
|
||
}
|
||
pScale_MiniMap_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
scale_minimap_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* create window */
|
||
pstr = create_utf8_from_char(_("Scale Mini Map"), adj_font(12));
|
||
... | ... | |
pwindow->action = move_scale_minimap_dlg_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pScale_MiniMap_Dlg->end_widget_list = pwindow;
|
||
scale_minimap_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
buf = create_themeicon_button(current_theme->CANCEL_Icon, pwindow->dst, pstr, 0);
|
||
buf->action = popdown_scale_minimap_dlg_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
pScale_MiniMap_Dlg->begin_widget_list = buf;
|
||
scale_minimap_dlg->begin_widget_list = buf;
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
area.h += buf->size.h + adj_size(10);
|
||
area.w = MAX(area.w, buf->size.w + adj_size(20));
|
||
... | ... | |
buf->size.y = area.y + area.h - buf->size.h - adj_size(7);
|
||
/* -------------------- */
|
||
redraw_group(pScale_MiniMap_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(scale_minimap_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
#endif /* SCALE_MINIMAP */
|
||
... | ... | |
static int move_scale_unitinfo_dlg_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pScale_UnitInfo_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(scale_unit_info_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int popdown_scale_unitinfo_dlg_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pScale_UnitInfo_Dlg) {
|
||
popdown_window_group_dialog(pScale_UnitInfo_Dlg->begin_widget_list,
|
||
pScale_UnitInfo_Dlg->end_widget_list);
|
||
FC_FREE(pScale_UnitInfo_Dlg);
|
||
if (scale_unit_info_dlg) {
|
||
popdown_window_group_dialog(scale_unit_info_dlg->begin_widget_list,
|
||
scale_unit_info_dlg->end_widget_list);
|
||
FC_FREE(scale_unit_info_dlg);
|
||
if (pwidget) {
|
||
flush_dirty();
|
||
}
|
||
... | ... | |
int window_x = 0, window_y = 0;
|
||
SDL_Rect area;
|
||
if (pScale_UnitInfo_Dlg || !(sdl2_client_flags & CF_UNITINFO_SHOWN)) {
|
||
if (scale_unit_info_dlg || !(sdl2_client_flags & CF_UNITINFO_SHOWN)) {
|
||
return;
|
||
}
|
||
pScale_UnitInfo_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
scale_unit_info_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* create window */
|
||
pstr = create_utf8_from_char(_("Scale Unit Info"), adj_font(12));
|
||
... | ... | |
pwindow->action = move_scale_unitinfo_dlg_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pScale_UnitInfo_Dlg->end_widget_list = pwindow;
|
||
scale_unit_info_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
pwindow->dst, pstr, 0);
|
||
buf->action = popdown_scale_unitinfo_dlg_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
pScale_UnitInfo_Dlg->begin_widget_list = buf;
|
||
scale_unit_info_dlg->begin_widget_list = buf;
|
||
add_to_gui_list(ID_BUTTON, buf);
|
||
area.h += buf->size.h + adj_size(10);
|
||
area.w = MAX(area.w, buf->size.w + adj_size(20));
|
||
... | ... | |
}
|
||
/* -------------------- */
|
||
redraw_group(pScale_UnitInfo_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(scale_unit_info_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
#endif /* SCALE_UNITINFO */
|
||
... | ... | |
SDL_Color black = {0, 0, 0, 255};
|
||
char buf[256];
|
||
if (pMiniMap_Dlg) {
|
||
if (minimap_dlg) {
|
||
return;
|
||
}
|
||
pMiniMap_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
minimap_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
/* minimap_window */
|
||
pwindow = create_window_skeleton(NULL, NULL, 0);
|
||
... | ... | |
add_to_gui_list(ID_MINI_MAP_WINDOW, pwindow);
|
||
minimap_window = pwindow;
|
||
pMiniMap_Dlg->end_widget_list = minimap_window;
|
||
minimap_dlg->end_widget_list = minimap_window;
|
||
/* new turn button */
|
||
pwidget = create_themeicon(current_theme->NEW_TURN_Icon, minimap_window->dst,
|
||
... | ... | |
add_to_gui_list(ID_TOGGLE_MAP_WINDOW_BUTTON, pwidget);
|
||
pMiniMap_Dlg->begin_widget_list = pwidget;
|
||
minimap_dlg->begin_widget_list = pwidget;
|
||
sdl2_client_flags |= CF_OVERVIEW_SHOWN;
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_minimap_window(void)
|
||
{
|
||
if (pMiniMap_Dlg) {
|
||
popdown_window_group_dialog(pMiniMap_Dlg->begin_widget_list, pMiniMap_Dlg->end_widget_list);
|
||
FC_FREE(pMiniMap_Dlg);
|
||
if (minimap_dlg) {
|
||
popdown_window_group_dialog(minimap_dlg->begin_widget_list, minimap_dlg->end_widget_list);
|
||
FC_FREE(minimap_dlg);
|
||
sdl2_client_flags &= ~CF_OVERVIEW_SHOWN;
|
||
}
|
||
}
|
||
... | ... | |
static int newcity_name_edit_callback(struct widget *pedit)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pNewCity_Dlg->begin_widget_list->string_utf8->text == NULL) {
|
||
if (new_city_dlg->begin_widget_list->string_utf8->text == NULL) {
|
||
/* empty input -> restore previous content */
|
||
copy_chars_to_utf8_str(pedit->string_utf8, pSuggestedCityName);
|
||
widget_redraw(pedit);
|
||
... | ... | |
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
finish_city(ok_button->data.tile, pNewCity_Dlg->begin_widget_list->string_utf8->text);
|
||
finish_city(ok_button->data.tile, new_city_dlg->begin_widget_list->string_utf8->text);
|
||
popdown_window_group_dialog(pNewCity_Dlg->begin_widget_list,
|
||
pNewCity_Dlg->end_widget_list);
|
||
FC_FREE(pNewCity_Dlg);
|
||
popdown_window_group_dialog(new_city_dlg->begin_widget_list,
|
||
new_city_dlg->end_widget_list);
|
||
FC_FREE(new_city_dlg);
|
||
FC_FREE(pSuggestedCityName);
|
||
... | ... | |
static int newcity_cancel_callback(struct widget *cancel_button)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
popdown_window_group_dialog(pNewCity_Dlg->begin_widget_list,
|
||
pNewCity_Dlg->end_widget_list);
|
||
popdown_window_group_dialog(new_city_dlg->begin_widget_list,
|
||
new_city_dlg->end_widget_list);
|
||
cancel_city(cancel_button->data.tile);
|
||
FC_FREE(pNewCity_Dlg);
|
||
FC_FREE(new_city_dlg);
|
||
FC_FREE(pSuggestedCityName);
|
||
... | ... | |
static int move_new_city_dlg_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pNewCity_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(new_city_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
SDL_Rect area;
|
||
int suggestlen;
|
||
if (pNewCity_Dlg) {
|
||
if (new_city_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
pSuggestedCityName = fc_calloc(1, suggestlen);
|
||
fc_strlcpy(pSuggestedCityName, pSuggestname, suggestlen);
|
||
pNewCity_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
new_city_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* create window */
|
||
pstr = create_utf8_from_char(action_id_name_translation(ACTION_FOUND_CITY),
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
/* add widgets to main list */
|
||
pNewCity_Dlg->end_widget_list = pwindow;
|
||
new_city_dlg->end_widget_list = pwindow;
|
||
add_to_gui_list(ID_NEWCITY_NAME_WINDOW, pwindow);
|
||
add_to_gui_list(ID_NEWCITY_NAME_LABEL, pLabel);
|
||
add_to_gui_list(ID_NEWCITY_NAME_CANCEL_BUTTON, cancel_button);
|
||
add_to_gui_list(ID_NEWCITY_NAME_OK_BUTTON, ok_button);
|
||
add_to_gui_list(ID_NEWCITY_NAME_EDIT, pedit);
|
||
pNewCity_Dlg->begin_widget_list = pedit;
|
||
new_city_dlg->begin_widget_list = pedit;
|
||
/* redraw */
|
||
redraw_group(pedit, pwindow, 0);
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_newcity_dialog(void)
|
||
{
|
||
if (pNewCity_Dlg) {
|
||
popdown_window_group_dialog(pNewCity_Dlg->begin_widget_list,
|
||
pNewCity_Dlg->end_widget_list);
|
||
FC_FREE(pNewCity_Dlg);
|
||
if (new_city_dlg) {
|
||
popdown_window_group_dialog(new_city_dlg->begin_widget_list,
|
||
new_city_dlg->end_widget_list);
|
||
FC_FREE(new_city_dlg);
|
||
flush_dirty();
|
||
}
|
||
}
|
client/gui-sdl2/mapview.c | ||
---|---|---|
}
|
||
if (n > 1 && (info_window->size.h - sy > 52)) {
|
||
struct advanced_dialog *pDlg = info_window->private_data.adv_dlg;
|
||
struct advanced_dialog *dlg = info_window->private_data.adv_dlg;
|
||
struct widget *buf = NULL, *end = NULL, *dock;
|
||
struct city *pHome_City;
|
||
const struct unit_type *putype;
|
||
int num_w, num_h;
|
||
if (pDlg->end_active_widget_list && pDlg->begin_active_widget_list) {
|
||
del_group(pDlg->begin_active_widget_list, pDlg->end_active_widget_list);
|
||
if (dlg->end_active_widget_list && dlg->begin_active_widget_list) {
|
||
del_group(dlg->begin_active_widget_list, dlg->end_active_widget_list);
|
||
}
|
||
num_w = (info_window->area.w - BLOCKU_W) / 68;
|
||
num_h = (info_window->area.h - sy) / 52;
|
||
... | ... | |
} unit_list_iterate_end;
|
||
pDlg->begin_active_widget_list = buf;
|
||
pDlg->end_active_widget_list = end;
|
||
pDlg->active_widget_list = pDlg->end_active_widget_list;
|
||
dlg->begin_active_widget_list = buf;
|
||
dlg->end_active_widget_list = end;
|
||
dlg->active_widget_list = dlg->end_active_widget_list;
|
||
if (n > num_w * num_h) {
|
||
if (!pDlg->scroll) {
|
||
create_vertical_scrollbar(pDlg, num_w, num_h, FALSE, TRUE);
|
||
if (!dlg->scroll) {
|
||
create_vertical_scrollbar(dlg, num_w, num_h, FALSE, TRUE);
|
||
} else {
|
||
pDlg->scroll->active = num_h;
|
||
pDlg->scroll->step = num_w;
|
||
pDlg->scroll->count = n;
|
||
show_scrollbar(pDlg->scroll);
|
||
dlg->scroll->active = num_h;
|
||
dlg->scroll->step = num_w;
|
||
dlg->scroll->count = n;
|
||
show_scrollbar(dlg->scroll);
|
||
}
|
||
/* create up button */
|
||
buf = pDlg->scroll->up_left_button;
|
||
buf = dlg->scroll->up_left_button;
|
||
buf->size.x = info_window->area.x + info_window->area.w - buf->size.w;
|
||
buf->size.y = info_window->area.y + sy +
|
||
(info_window->size.h - sy - num_h * 52) / 2;
|
||
buf->size.h = (num_h * 52) / 2;
|
||
/* create down button */
|
||
buf = pDlg->scroll->down_right_button;
|
||
buf->size.x = pDlg->scroll->up_left_button->size.x;
|
||
buf->size.y = pDlg->scroll->up_left_button->size.y +
|
||
pDlg->scroll->up_left_button->size.h;
|
||
buf->size.h = pDlg->scroll->up_left_button->size.h;
|
||
buf = dlg->scroll->down_right_button;
|
||
buf->size.x = dlg->scroll->up_left_button->size.x;
|
||
buf->size.y = dlg->scroll->up_left_button->size.y +
|
||
dlg->scroll->up_left_button->size.h;
|
||
buf->size.h = dlg->scroll->up_left_button->size.h;
|
||
} else {
|
||
if (pDlg->scroll) {
|
||
hide_scrollbar(pDlg->scroll);
|
||
if (dlg->scroll) {
|
||
hide_scrollbar(dlg->scroll);
|
||
}
|
||
num_h = (n + num_w - 1) / num_w;
|
||
}
|
||
... | ... | |
info_window->area.x + BLOCKU_W + adj_size(2),
|
||
info_window->size.y + sy +
|
||
(info_window->size.h - sy - num_h * 52) / 2,
|
||
0, 0, pDlg->begin_active_widget_list,
|
||
pDlg->end_active_widget_list);
|
||
0, 0, dlg->begin_active_widget_list,
|
||
dlg->end_active_widget_list);
|
||
} else {
|
||
if (info_window->private_data.adv_dlg->end_active_widget_list) {
|
||
del_group(info_window->private_data.adv_dlg->begin_active_widget_list,
|
client/gui-sdl2/messagewin.c | ||
---|---|---|
#define PTSIZE_LOG_FONT adj_font(10)
|
||
static struct advanced_dialog *pMsg_Dlg = NULL;
|
||
static struct advanced_dialog *msg_dlg = NULL;
|
||
/**********************************************************************//**
|
||
Called from default clicks on a message.
|
||
... | ... | |
static int move_msg_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pMsg_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(msg_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
bool create;
|
||
int label_width;
|
||
if (pMsg_Dlg == NULL) {
|
||
if (msg_dlg == NULL) {
|
||
meswin_dialog_popup(TRUE);
|
||
}
|
||
msg_count = meswin_get_num_messages();
|
||
current_count = pMsg_Dlg->scroll->count;
|
||
current_count = msg_dlg->scroll->count;
|
||
if (current_count > 0) {
|
||
undraw_group(pMsg_Dlg->begin_active_widget_list, pMsg_Dlg->end_active_widget_list);
|
||
del_group_of_widgets_from_gui_list(pMsg_Dlg->begin_active_widget_list,
|
||
pMsg_Dlg->end_active_widget_list);
|
||
pMsg_Dlg->begin_active_widget_list = NULL;
|
||
pMsg_Dlg->end_active_widget_list = NULL;
|
||
pMsg_Dlg->active_widget_list = NULL;
|
||
undraw_group(msg_dlg->begin_active_widget_list, msg_dlg->end_active_widget_list);
|
||
del_group_of_widgets_from_gui_list(msg_dlg->begin_active_widget_list,
|
||
msg_dlg->end_active_widget_list);
|
||
msg_dlg->begin_active_widget_list = NULL;
|
||
msg_dlg->end_active_widget_list = NULL;
|
||
msg_dlg->active_widget_list = NULL;
|
||
/* hide scrollbar */
|
||
hide_scrollbar(pMsg_Dlg->scroll);
|
||
pMsg_Dlg->scroll->count = 0;
|
||
hide_scrollbar(msg_dlg->scroll);
|
||
msg_dlg->scroll->count = 0;
|
||
current_count = 0;
|
||
}
|
||
create = (current_count == 0);
|
||
pwindow = pMsg_Dlg->end_widget_list;
|
||
pwindow = msg_dlg->end_widget_list;
|
||
area = pwindow->area;
|
||
label_width = area.w - pMsg_Dlg->scroll->up_left_button->size.w - adj_size(3);
|
||
label_width = area.w - msg_dlg->scroll->up_left_button->size.w - adj_size(3);
|
||
if (msg_count > 0) {
|
||
for (; current_count < msg_count; current_count++) {
|
||
... | ... | |
/* add to widget list */
|
||
if (create) {
|
||
add_widget_to_vertical_scroll_widget_list(pMsg_Dlg, buf, pwindow, FALSE,
|
||
add_widget_to_vertical_scroll_widget_list(msg_dlg, buf, pwindow, FALSE,
|
||
area.x, area.y);
|
||
create = FALSE;
|
||
} else {
|
||
add_widget_to_vertical_scroll_widget_list(pMsg_Dlg, buf,
|
||
pMsg_Dlg->begin_active_widget_list,
|
||
add_widget_to_vertical_scroll_widget_list(msg_dlg, buf,
|
||
msg_dlg->begin_active_widget_list,
|
||
FALSE, area.x, area.y);
|
||
}
|
||
}
|
||
... | ... | |
/* add to widget list */
|
||
if (create) {
|
||
add_widget_to_vertical_scroll_widget_list(pMsg_Dlg, buf,
|
||
add_widget_to_vertical_scroll_widget_list(msg_dlg, buf,
|
||
pwindow, FALSE,
|
||
area.x, area.y);
|
||
create = FALSE;
|
||
} else {
|
||
add_widget_to_vertical_scroll_widget_list(pMsg_Dlg, buf,
|
||
pMsg_Dlg->begin_active_widget_list,
|
||
add_widget_to_vertical_scroll_widget_list(msg_dlg, buf,
|
||
msg_dlg->begin_active_widget_list,
|
||
FALSE, area.x, area.y);
|
||
}
|
||
}
|
||
... | ... | |
} /* for */
|
||
} /* if */
|
||
redraw_group(pMsg_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(msg_dlg->begin_widget_list, pwindow, 0);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
SDL_Rect area;
|
||
SDL_Rect size;
|
||
if (pMsg_Dlg) {
|
||
if (msg_dlg) {
|
||
return;
|
||
}
|
||
pMsg_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
msg_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
/* create window */
|
||
pstr = create_utf8_from_char(_("Messages"), adj_font(12));
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_CHATLINE_WINDOW, pwindow);
|
||
pMsg_Dlg->end_widget_list = pwindow;
|
||
pMsg_Dlg->begin_widget_list = pwindow;
|
||
msg_dlg->end_widget_list = pwindow;
|
||
msg_dlg->begin_widget_list = pwindow;
|
||
/* create scrollbar */
|
||
create_vertical_scrollbar(pMsg_Dlg, 1, N_MSG_VIEW, TRUE, TRUE);
|
||
create_vertical_scrollbar(msg_dlg, 1, N_MSG_VIEW, TRUE, TRUE);
|
||
pstr = create_utf8_from_char("sample text", PTSIZE_LOG_FONT);
|
||
... | ... | |
area = pwindow->area;
|
||
setup_vertical_scrollbar_area(pMsg_Dlg->scroll,
|
||
setup_vertical_scrollbar_area(msg_dlg->scroll,
|
||
area.x + area.w, area.y,
|
||
area.h, TRUE);
|
||
hide_scrollbar(pMsg_Dlg->scroll);
|
||
hide_scrollbar(msg_dlg->scroll);
|
||
widget_set_position(pwindow, (main_window_width() - pwindow->size.w)/2, adj_size(25));
|
||
... | ... | |
**************************************************************************/
|
||
void meswin_dialog_popdown(void)
|
||
{
|
||
if (pMsg_Dlg) {
|
||
popdown_window_group_dialog(pMsg_Dlg->begin_widget_list,
|
||
pMsg_Dlg->end_widget_list);
|
||
FC_FREE(pMsg_Dlg->scroll);
|
||
FC_FREE(pMsg_Dlg);
|
||
if (msg_dlg) {
|
||
popdown_window_group_dialog(msg_dlg->begin_widget_list,
|
||
msg_dlg->end_widget_list);
|
||
FC_FREE(msg_dlg->scroll);
|
||
FC_FREE(msg_dlg);
|
||
}
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
bool meswin_dialog_is_open(void)
|
||
{
|
||
return (pMsg_Dlg != NULL);
|
||
return (msg_dlg != NULL);
|
||
}
|
client/gui-sdl2/plrdlg.c | ||
---|---|---|
/* ============================== SHORT =============================== */
|
||
static struct advanced_dialog *pShort_Players_Dlg = NULL;
|
||
static struct advanced_dialog *short_players_dlg = NULL;
|
||
/**********************************************************************//**
|
||
User interacted with nations window.
|
||
... | ... | |
const struct player_diplstate *pDS;
|
||
SDL_Rect area;
|
||
if (pShort_Players_Dlg) {
|
||
if (short_players_dlg) {
|
||
return;
|
||
}
|
||
pShort_Players_Dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
short_players_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
/* TRANS: Nations report title */
|
||
pstr = create_utf8_from_char(_("Nations") , adj_font(12));
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
pShort_Players_Dlg->end_widget_list = pwindow;
|
||
short_players_dlg->end_widget_list = pwindow;
|
||
area = pwindow->area;
|
||
... | ... | |
n++;
|
||
}
|
||
} players_iterate_end;
|
||
pShort_Players_Dlg->begin_widget_list = buf;
|
||
pShort_Players_Dlg->begin_active_widget_list = pShort_Players_Dlg->begin_widget_list;
|
||
pShort_Players_Dlg->end_active_widget_list = pwindow->prev->prev;
|
||
pShort_Players_Dlg->active_widget_list = pShort_Players_Dlg->end_active_widget_list;
|
||
short_players_dlg->begin_widget_list = buf;
|
||
short_players_dlg->begin_active_widget_list = short_players_dlg->begin_widget_list;
|
||
short_players_dlg->end_active_widget_list = pwindow->prev->prev;
|
||
short_players_dlg->active_widget_list = short_players_dlg->end_active_widget_list;
|
||
/* ---------- */
|
||
if (n > 20) {
|
||
units_h = create_vertical_scrollbar(pShort_Players_Dlg, 1, 20, TRUE, TRUE);
|
||
pShort_Players_Dlg->scroll->count = n;
|
||
units_h = create_vertical_scrollbar(short_players_dlg, 1, 20, TRUE, TRUE);
|
||
short_players_dlg->scroll->count = n;
|
||
n = units_h;
|
||
area.w += n;
|
||
... | ... | |
w = area.w;
|
||
if (pShort_Players_Dlg->scroll) {
|
||
if (short_players_dlg->scroll) {
|
||
w -= n;
|
||
}
|
||
... | ... | |
/* cities */
|
||
buf = buf->prev;
|
||
setup_vertical_widgets_position(1, area.x, area.y, w, 0,
|
||
pShort_Players_Dlg->begin_active_widget_list,
|
||
short_players_dlg->begin_active_widget_list,
|
||
buf);
|
||
if (pShort_Players_Dlg->scroll) {
|
||
setup_vertical_scrollbar_area(pShort_Players_Dlg->scroll,
|
||
if (short_players_dlg->scroll) {
|
||
setup_vertical_scrollbar_area(short_players_dlg->scroll,
|
||
area.x + area.w, area.y,
|
||
area.h, TRUE);
|
||
}
|
||
/* -------------------- */
|
||
/* redraw */
|
||
redraw_group(pShort_Players_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(short_players_dlg->begin_widget_list, pwindow, 0);
|
||
widget_mark_dirty(pwindow);
|
||
flush_dirty();
|
||
... | ... | |
**************************************************************************/
|
||
void popdown_players_nations_dialog(void)
|
||
{
|
||
if (pShort_Players_Dlg) {
|
||
popdown_window_group_dialog(pShort_Players_Dlg->begin_widget_list,
|
||
pShort_Players_Dlg->end_widget_list);
|
||
FC_FREE(pShort_Players_Dlg->scroll);
|
||
FC_FREE(pShort_Players_Dlg);
|
||
if (short_players_dlg) {
|
||
popdown_window_group_dialog(short_players_dlg->begin_widget_list,
|
||
short_players_dlg->end_widget_list);
|
||
FC_FREE(short_players_dlg->scroll);
|
||
FC_FREE(short_players_dlg);
|
||
}
|
||
}
|
client/gui-sdl2/repodlgs.c | ||
---|---|---|
/* ===================================================================== */
|
||
/* ======================== Economy Report ============================= */
|
||
/* ===================================================================== */
|
||
static struct advanced_dialog *pEconomyDlg = NULL;
|
||
static struct small_dialog *pEconomy_Sell_Dlg = NULL;
|
||
static struct advanced_dialog *economy_dlg = NULL;
|
||
static struct small_dialog *economy_sell_dlg = NULL;
|
||
struct rates_move {
|
||
int min, max, tax, x, gov_max;
|
||
... | ... | |
static int economy_dialog_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pEconomyDlg->begin_widget_list, pwindow);
|
||
move_window_group(economy_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int exit_economy_dialog_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pEconomyDlg) {
|
||
if (pEconomy_Sell_Dlg) {
|
||
del_group_of_widgets_from_gui_list(pEconomy_Sell_Dlg->begin_widget_list,
|
||
pEconomy_Sell_Dlg->end_widget_list);
|
||
FC_FREE(pEconomy_Sell_Dlg);
|
||
if (economy_dlg) {
|
||
if (economy_sell_dlg) {
|
||
del_group_of_widgets_from_gui_list(economy_sell_dlg->begin_widget_list,
|
||
economy_sell_dlg->end_widget_list);
|
||
FC_FREE(economy_sell_dlg);
|
||
}
|
||
popdown_window_group_dialog(pEconomyDlg->begin_widget_list,
|
||
pEconomyDlg->end_widget_list);
|
||
FC_FREE(pEconomyDlg->scroll);
|
||
FC_FREE(pEconomyDlg);
|
||
popdown_window_group_dialog(economy_dlg->begin_widget_list,
|
||
economy_dlg->end_widget_list);
|
||
FC_FREE(economy_dlg->scroll);
|
||
FC_FREE(economy_dlg);
|
||
set_wstate(get_tax_rates_widget(), FC_WS_NORMAL);
|
||
widget_redraw(get_tax_rates_widget());
|
||
widget_mark_dirty(get_tax_rates_widget());
|
||
... | ... | |
void *pData)
|
||
{
|
||
struct rates_move *pMotion = (struct rates_move *)pData;
|
||
struct widget *pTax_Label = pEconomyDlg->end_widget_list->prev->prev;
|
||
struct widget *pTax_Label = economy_dlg->end_widget_list->prev->prev;
|
||
struct widget *pbuf = NULL;
|
||
char cbuf[8];
|
||
int dir, inc, x, *buf_rate = NULL;
|
||
... | ... | |
pMotion.pLabel_Dst = pMotion.pHoriz_Dst->prev;
|
||
} else {
|
||
/* tax label */
|
||
pMotion.pLabel_Dst = pEconomyDlg->end_widget_list->prev->prev;
|
||
pMotion.pLabel_Dst = economy_dlg->end_widget_list->prev->prev;
|
||
}
|
||
pMotion.min = pHoriz_Src->next->size.x + pHoriz_Src->next->size.w + adj_size(2);
|
||
... | ... | |
static void enable_economy_dlg(void)
|
||
{
|
||
/* lux lock */
|
||
struct widget *buf = pEconomyDlg->end_widget_list->prev->prev->prev->prev->prev->prev;
|
||
struct widget *buf = economy_dlg->end_widget_list->prev->prev->prev->prev->prev->prev;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
... | ... | |
buf = buf->prev;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
set_group_state(pEconomyDlg->begin_active_widget_list,
|
||
pEconomyDlg->end_active_widget_list, FC_WS_NORMAL);
|
||
if (pEconomyDlg->scroll && pEconomyDlg->active_widget_list) {
|
||
set_wstate(pEconomyDlg->scroll->up_left_button, FC_WS_NORMAL);
|
||
set_wstate(pEconomyDlg->scroll->down_right_button, FC_WS_NORMAL);
|
||
set_wstate(pEconomyDlg->scroll->pscroll_bar, FC_WS_NORMAL);
|
||
set_group_state(economy_dlg->begin_active_widget_list,
|
||
economy_dlg->end_active_widget_list, FC_WS_NORMAL);
|
||
if (economy_dlg->scroll && economy_dlg->active_widget_list) {
|
||
set_wstate(economy_dlg->scroll->up_left_button, FC_WS_NORMAL);
|
||
set_wstate(economy_dlg->scroll->down_right_button, FC_WS_NORMAL);
|
||
set_wstate(economy_dlg->scroll->pscroll_bar, FC_WS_NORMAL);
|
||
}
|
||
}
|
||
... | ... | |
static void disable_economy_dlg(void)
|
||
{
|
||
/* lux lock */
|
||
struct widget *buf = pEconomyDlg->end_widget_list->prev->prev->prev->prev->prev->prev;
|
||
struct widget *buf = economy_dlg->end_widget_list->prev->prev->prev->prev->prev->prev;
|
||
set_wstate(buf, FC_WS_DISABLED);
|
||
... | ... | |
buf = buf->prev;
|
||
set_wstate(buf, FC_WS_DISABLED);
|
||
set_group_state(pEconomyDlg->begin_active_widget_list,
|
||
pEconomyDlg->end_active_widget_list, FC_WS_DISABLED);
|
||
if (pEconomyDlg->scroll && pEconomyDlg->active_widget_list) {
|
||
set_wstate(pEconomyDlg->scroll->up_left_button, FC_WS_DISABLED);
|
||
set_wstate(pEconomyDlg->scroll->down_right_button, FC_WS_DISABLED);
|
||
set_wstate(pEconomyDlg->scroll->pscroll_bar, FC_WS_DISABLED);
|
||
set_group_state(economy_dlg->begin_active_widget_list,
|
||
economy_dlg->end_active_widget_list, FC_WS_DISABLED);
|
||
if (economy_dlg->scroll && economy_dlg->active_widget_list) {
|
||
set_wstate(economy_dlg->scroll->up_left_button, FC_WS_DISABLED);
|
||
set_wstate(economy_dlg->scroll->down_right_button, FC_WS_DISABLED);
|
||
set_wstate(economy_dlg->scroll->pscroll_bar, FC_WS_DISABLED);
|
||
}
|
||
}
|
||
... | ... | |
total_count = pImpr->data.cont->id1;
|
||
/* popdown sell dlg */
|
||
popdown_window_group_dialog(pEconomy_Sell_Dlg->begin_widget_list,
|
||
pEconomy_Sell_Dlg->end_widget_list);
|
||
FC_FREE(pEconomy_Sell_Dlg);
|
||
popdown_window_group_dialog(economy_sell_dlg->begin_widget_list,
|
||
economy_sell_dlg->end_widget_list);
|
||
FC_FREE(economy_sell_dlg);
|
||
enable_economy_dlg();
|
||
/* send sell */
|
||
... | ... | |
} city_list_iterate_end;
|
||
if (count == total_count) {
|
||
del_widget_from_vertical_scroll_widget_list(pEconomyDlg, pImpr);
|
||
del_widget_from_vertical_scroll_widget_list(economy_dlg, pImpr);
|
||
}
|
||
}
|
||
... | ... | |
static int sell_impr_window_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
move_window_group(pEconomy_Sell_Dlg->begin_widget_list, pwindow);
|
||
move_window_group(economy_sell_dlg->begin_widget_list, pwindow);
|
||
}
|
||
return -1;
|
||
... | ... | |
static int cancel_sell_impr_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pEconomy_Sell_Dlg) {
|
||
popdown_window_group_dialog(pEconomy_Sell_Dlg->begin_widget_list,
|
||
pEconomy_Sell_Dlg->end_widget_list);
|
||
FC_FREE(pEconomy_Sell_Dlg);
|
||
if (economy_sell_dlg) {
|
||
popdown_window_group_dialog(economy_sell_dlg->begin_widget_list,
|
||
economy_sell_dlg->end_widget_list);
|
||
FC_FREE(economy_sell_dlg);
|
||
enable_economy_dlg();
|
||
flush_dirty();
|
||
}
|
||
... | ... | |
SDL_Rect dst;
|
||
SDL_Rect area;
|
||
if (pEconomy_Sell_Dlg) {
|
||
if (economy_sell_dlg) {
|
||
return 1;
|
||
}
|
||
... | ... | |
widget_redraw(pwidget);
|
||
widget_mark_dirty(pwidget);
|
||
pEconomy_Sell_Dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
economy_sell_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
imp = pwidget->data.cont->id0;
|
||
total_count = pwidget->data.cont->id1;
|
||
... | ... | |
pwindow->action = sell_impr_window_callback;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pEconomy_Sell_Dlg->end_widget_list = pwindow;
|
||
economy_sell_dlg->end_widget_list = pwindow;
|
||
add_to_gui_list(ID_WINDOW, pwindow);
|
||
... | ... | |
}
|
||
/* ============================================ */
|
||
pEconomy_Sell_Dlg->begin_widget_list = buf;
|
||
economy_sell_dlg->begin_widget_list = buf;
|
||
resize_window(pwindow, NULL, get_theme_color(COLOR_THEME_BACKGROUND),
|
||
(pwindow->size.w - pwindow->area.w) + area.w,
|
||
... | ... | |
area = pwindow->area;
|
||
widget_set_position(pwindow,
|
||
pEconomyDlg->end_widget_list->size.x +
|
||
(pEconomyDlg->end_widget_list->size.w - pwindow->size.w) / 2,
|
||
pEconomyDlg->end_widget_list->size.y +
|
||
(pEconomyDlg->end_widget_list->size.h - pwindow->size.h) / 2);
|
||
economy_dlg->end_widget_list->size.x +
|
||
(economy_dlg->end_widget_list->size.w - pwindow->size.w) / 2,
|
||
economy_dlg->end_widget_list->size.y +
|
||
(economy_dlg->end_widget_list->size.h - pwindow->size.h) / 2);
|
||
/* setup rest of widgets */
|
||
/* label */
|
||
... | ... | |
/* ================================================== */
|
||
/* redraw */
|
||
redraw_group(pEconomy_Sell_Dlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(economy_sell_dlg->begin_widget_list, pwindow, 0);
|
||
disable_economy_dlg();
|
||
widget_mark_dirty(pwindow);
|
||
... | ... | |
**************************************************************************/
|
||
void real_economy_report_dialog_update(void *unused)
|
||
{
|
||
if (pEconomyDlg) {
|
||
struct widget *pbuf = pEconomyDlg->end_widget_list;
|
||
if (economy_dlg) {
|
||
struct widget *pbuf = economy_dlg->end_widget_list;
|
||
int tax, total, entries_used = 0;
|
||
char cbuf[128];
|
||
struct improvement_entry entries[B_LAST];
|
||
... | ... | |
}
|
||
/* ---------------- */
|
||
redraw_group(pEconomyDlg->begin_widget_list, pEconomyDlg->end_widget_list, 0);
|
||
widget_flush(pEconomyDlg->end_widget_list);
|
||
redraw_group(economy_dlg->begin_widget_list, economy_dlg->end_widget_list, 0);
|
||
widget_flush(economy_dlg->end_widget_list);
|
||
}
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
void economy_report_dialog_popdown(void)
|
||
{
|
||
if (pEconomyDlg) {
|
||
if (pEconomy_Sell_Dlg) {
|
||
del_group_of_widgets_from_gui_list(pEconomy_Sell_Dlg->begin_widget_list,
|
||
pEconomy_Sell_Dlg->end_widget_list);
|
||
FC_FREE(pEconomy_Sell_Dlg);
|
||
if (economy_dlg) {
|
||
if (economy_sell_dlg) {
|
||
del_group_of_widgets_from_gui_list(economy_sell_dlg->begin_widget_list,
|
||
economy_sell_dlg->end_widget_list);
|
||
FC_FREE(economy_sell_dlg);
|
||
}
|
||
popdown_window_group_dialog(pEconomyDlg->begin_widget_list,
|
||
pEconomyDlg->end_widget_list);
|
||
FC_FREE(pEconomyDlg->scroll);
|
||
FC_FREE(pEconomyDlg);
|
||
popdown_window_group_dialog(economy_dlg->begin_widget_list,
|
||
economy_dlg->end_widget_list);
|
||
FC_FREE(economy_dlg->scroll);
|
||
FC_FREE(economy_dlg);
|
||
set_wstate(get_tax_rates_widget(), FC_WS_NORMAL);
|
||
widget_redraw(get_tax_rates_widget());
|
||
widget_mark_dirty(get_tax_rates_widget());
|
||
... | ... | |
SDL_Surface *pNetIncomeText;
|
||
SDL_Surface *pMaxRateText;
|
||
if (pEconomyDlg) {
|
||
if (economy_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
widget_redraw(buf);
|
||
widget_mark_dirty(buf);
|
||
pEconomyDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
economy_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
get_economy_report_data(entries, &entries_used, &total, &tax);
|
||
... | ... | |
pstr->style |= TTF_STYLE_BOLD;
|
||
pwindow = create_window_skeleton(NULL, pstr, 0);
|
||
pEconomyDlg->end_widget_list = pwindow;
|
||
economy_dlg->end_widget_list = pwindow;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pwindow->action = economy_dialog_callback;
|
||
... | ... | |
FREEUTF8STR(pstr);
|
||
FREESURFACE(background);
|
||
pEconomyDlg->end_active_widget_list = pLast->prev;
|
||
pEconomyDlg->begin_widget_list = buf;
|
||
pEconomyDlg->begin_active_widget_list = pEconomyDlg->begin_widget_list;
|
||
economy_dlg->end_active_widget_list = pLast->prev;
|
||
economy_dlg->begin_widget_list = buf;
|
||
economy_dlg->begin_active_widget_list = economy_dlg->begin_widget_list;
|
||
if (entries_used > (TARGETS_ROW * TARGETS_COL)) {
|
||
pEconomyDlg->active_widget_list = pEconomyDlg->end_active_widget_list;
|
||
count = create_vertical_scrollbar(pEconomyDlg,
|
||
economy_dlg->active_widget_list = economy_dlg->end_active_widget_list;
|
||
count = create_vertical_scrollbar(economy_dlg,
|
||
TARGETS_COL, TARGETS_ROW, TRUE, TRUE);
|
||
h += (TARGETS_ROW * buf->size.h + adj_size(10));
|
||
} else {
|
||
... | ... | |
}
|
||
count = TARGETS_COL * buf->size.w + count;
|
||
} else {
|
||
pEconomyDlg->begin_widget_list = buf;
|
||
economy_dlg->begin_widget_list = buf;
|
||
h += adj_size(10);
|
||
count = 0;
|
||
}
|
||
... | ... | |
setup_vertical_widgets_position(TARGETS_COL,
|
||
area.x,
|
||
area.y + h,
|
||
0, 0, pEconomyDlg->begin_active_widget_list,
|
||
pEconomyDlg->end_active_widget_list);
|
||
if (pEconomyDlg->scroll) {
|
||
setup_vertical_scrollbar_area(pEconomyDlg->scroll,
|
||
0, 0, economy_dlg->begin_active_widget_list,
|
||
economy_dlg->end_active_widget_list);
|
||
if (economy_dlg->scroll) {
|
||
setup_vertical_scrollbar_area(economy_dlg->scroll,
|
||
area.x + area.w - 1,
|
||
area.y + h,
|
||
area.h - h - 1, TRUE);
|
||
... | ... | |
}
|
||
/* ------------------------ */
|
||
redraw_group(pEconomyDlg->begin_widget_list, pwindow, 0);
|
||
redraw_group(economy_dlg->begin_widget_list, pwindow, 0);
|
||
widget_mark_dirty(pwindow);
|
||
flush_dirty();
|
||
}
|
||
... | ... | |
/* ===================================================================== */
|
||
/* ======================== Science Report ============================= */
|
||
/* ===================================================================== */
|
||
static struct small_dialog *pScienceDlg = NULL;
|
||
static struct small_dialog *science_dlg = NULL;
|
||
static struct advanced_dialog *pChangeTechDlg = NULL;
|
||
static struct advanced_dialog *change_tech_dlg = NULL;
|
||
/**********************************************************************//**
|
||
Create icon surface for a tech.
|
||
... | ... | |
**************************************************************************/
|
||
static void enable_science_dialog(void)
|
||
{
|
||
set_group_state(pScienceDlg->begin_widget_list,
|
||
pScienceDlg->end_widget_list->prev, FC_WS_NORMAL);
|
||
set_group_state(science_dlg->begin_widget_list,
|
||
science_dlg->end_widget_list->prev, FC_WS_NORMAL);
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
**************************************************************************/
|
||
static void disable_science_dialog(void)
|
||
{
|
||
set_group_state(pScienceDlg->begin_widget_list,
|
||
pScienceDlg->end_widget_list->prev, FC_WS_DISABLED);
|
||
set_group_state(science_dlg->begin_widget_list,
|
||
science_dlg->end_widget_list->prev, FC_WS_DISABLED);
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
{
|
||
SDL_Color bg_color = {255, 255, 255, 136};
|
||
if (pScienceDlg) {
|
||
if (science_dlg) {
|
||
const struct research *presearch = research_get(client_player());
|
||
char cBuf[128];
|
||
utf8_str *pStr;
|
||
... | ... | |
struct widget *pChangeResearchButton;
|
||
struct widget *pChangeResearchGoalButton;
|
||
SDL_Rect area;
|
||
struct widget *pwindow = pScienceDlg->end_widget_list;
|
||
struct widget *pwindow = science_dlg->end_widget_list;
|
||
area = pwindow->area;
|
||
pChangeResearchButton = pwindow->prev;
|
||
... | ... | |
/* -------------------------------- */
|
||
widget_mark_dirty(pwindow);
|
||
redraw_group(pScienceDlg->begin_widget_list, pwindow->prev, 1);
|
||
redraw_group(science_dlg->begin_widget_list, pwindow->prev, 1);
|
||
flush_dirty();
|
||
FREEUTF8STR(pStr);
|
||
... | ... | |
**************************************************************************/
|
||
static void science_report_dialog_popdown(void)
|
||
{
|
||
if (pScienceDlg) {
|
||
popdown_window_group_dialog(pScienceDlg->begin_widget_list,
|
||
pScienceDlg->end_widget_list);
|
||
FC_FREE(pScienceDlg);
|
||
if (science_dlg) {
|
||
popdown_window_group_dialog(science_dlg->begin_widget_list,
|
||
science_dlg->end_widget_list);
|
||
FC_FREE(science_dlg);
|
||
set_wstate(get_research_widget(), FC_WS_NORMAL);
|
||
widget_redraw(get_research_widget());
|
||
widget_mark_dirty(get_research_widget());
|
||
... | ... | |
static int exit_change_tech_dlg_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (pChangeTechDlg) {
|
||
popdown_window_group_dialog(pChangeTechDlg->begin_widget_list,
|
||
pChangeTechDlg->end_widget_list);
|
||
FC_FREE(pChangeTechDlg->scroll);
|
||
FC_FREE(pChangeTechDlg);
|
||
if (change_tech_dlg) {
|
||
popdown_window_group_dialog(change_tech_dlg->begin_widget_list,
|
||
change_tech_dlg->end_widget_list);
|
||
FC_FREE(change_tech_dlg->scroll);
|
||
FC_FREE(change_tech_dlg);
|
||
enable_science_dialog();
|
||
if (pwidget) {
|
||
flush_dirty();
|
||
... | ... | |
static int change_research_goal_dialog_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (select_window_group_dialog(pChangeTechDlg->begin_widget_list, pwindow)) {
|
||
if (select_window_group_dialog(change_tech_dlg->begin_widget_list, pwindow)) {
|
||
widget_flush(pwindow);
|
||
}
|
||
}
|
||
... | ... | |
return;
|
||
}
|
||
pChangeTechDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
change_tech_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pstr = create_utf8_from_char(_("What should we focus on now?"), adj_font(12));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
pwindow = create_window_skeleton(NULL, pstr, 0);
|
||
pChangeTechDlg->end_widget_list = pwindow;
|
||
change_tech_dlg->end_widget_list = pwindow;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pwindow->action = change_research_goal_dialog_callback;
|
||
... | ... | |
FREEUTF8STR(pstr);
|
||
pChangeTechDlg->begin_widget_list = buf;
|
||
pChangeTechDlg->begin_active_widget_list = pChangeTechDlg->begin_widget_list;
|
||
pChangeTechDlg->end_active_widget_list = pChangeTechDlg->end_widget_list->prev->prev;
|
||
change_tech_dlg->begin_widget_list = buf;
|
||
change_tech_dlg->begin_active_widget_list = change_tech_dlg->begin_widget_list;
|
||
change_tech_dlg->end_active_widget_list = change_tech_dlg->end_widget_list->prev->prev;
|
||
/* -------------------------------------------------------------- */
|
||
... | ... | |
if (count > col) {
|
||
count = (count + (col - 1)) / col;
|
||
if (count > max_row) {
|
||
pChangeTechDlg->active_widget_list = pChangeTechDlg->end_active_widget_list;
|
||
change_tech_dlg->active_widget_list = change_tech_dlg->end_active_widget_list;
|
||
count = max_row;
|
||
i = create_vertical_scrollbar(pChangeTechDlg, col, count, TRUE, TRUE);
|
||
i = create_vertical_scrollbar(change_tech_dlg, col, count, TRUE, TRUE);
|
||
}
|
||
} else {
|
||
count = 1;
|
||
... | ... | |
setup_vertical_widgets_position(col, area.x + 1,
|
||
area.y, 0, 0,
|
||
pChangeTechDlg->begin_active_widget_list,
|
||
pChangeTechDlg->end_active_widget_list);
|
||
change_tech_dlg->begin_active_widget_list,
|
||
change_tech_dlg->end_active_widget_list);
|
||
if (pChangeTechDlg->scroll) {
|
||
setup_vertical_scrollbar_area(pChangeTechDlg->scroll,
|
||
if (change_tech_dlg->scroll) {
|
||
setup_vertical_scrollbar_area(change_tech_dlg->scroll,
|
||
area.x + area.w, area.y,
|
||
area.h, TRUE);
|
||
}
|
||
redraw_group(pChangeTechDlg->begin_widget_list, pwindow, FALSE);
|
||
redraw_group(change_tech_dlg->begin_widget_list, pwindow, FALSE);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
return;
|
||
}
|
||
pChangeTechDlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
change_tech_dlg = fc_calloc(1, sizeof(struct advanced_dialog));
|
||
pstr = create_utf8_from_char(_("Select target :"), adj_font(12));
|
||
pstr->style |= TTF_STYLE_BOLD;
|
||
pwindow = create_window_skeleton(NULL, pstr, 0);
|
||
pChangeTechDlg->end_widget_list = pwindow;
|
||
change_tech_dlg->end_widget_list = pwindow;
|
||
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pwindow->action = change_research_goal_dialog_callback;
|
||
... | ... | |
FREEUTF8STR(pstr);
|
||
pChangeTechDlg->begin_widget_list = buf;
|
||
pChangeTechDlg->begin_active_widget_list = pChangeTechDlg->begin_widget_list;
|
||
pChangeTechDlg->end_active_widget_list = pChangeTechDlg->end_widget_list->prev->prev;
|
||
change_tech_dlg->begin_widget_list = buf;
|
||
change_tech_dlg->begin_active_widget_list = change_tech_dlg->begin_widget_list;
|
||
change_tech_dlg->end_active_widget_list = change_tech_dlg->end_widget_list->prev->prev;
|
||
/* -------------------------------------------------------------- */
|
||
... | ... | |
if (count > col) {
|
||
count = (count + (col-1)) / col;
|
||
if (count > max_row) {
|
||
pChangeTechDlg->active_widget_list = pChangeTechDlg->end_active_widget_list;
|
||
change_tech_dlg->active_widget_list = change_tech_dlg->end_active_widget_list;
|
||
count = max_row;
|
||
i = create_vertical_scrollbar(pChangeTechDlg, col, count, TRUE, TRUE);
|
||
i = create_vertical_scrollbar(change_tech_dlg, col, count, TRUE, TRUE);
|
||
}
|
||
} else {
|
||
count = 1;
|
||
... | ... | |
setup_vertical_widgets_position(col, area.x + 1,
|
||
area.y, 0, 0,
|
||
pChangeTechDlg->begin_active_widget_list,
|
||
pChangeTechDlg->end_active_widget_list);
|
||
change_tech_dlg->begin_active_widget_list,
|
||
change_tech_dlg->end_active_widget_list);
|
||
if (pChangeTechDlg->scroll) {
|
||
setup_vertical_scrollbar_area(pChangeTechDlg->scroll,
|
||
if (change_tech_dlg->scroll) {
|
||
setup_vertical_scrollbar_area(change_tech_dlg->scroll,
|
||
area.x + area.w, area.y,
|
||
area.h, TRUE);
|
||
}
|
||
redraw_group(pChangeTechDlg->begin_widget_list, pwindow, FALSE);
|
||
redraw_group(change_tech_dlg->begin_widget_list, pwindow, FALSE);
|
||
widget_flush(pwindow);
|
||
}
|
||
... | ... | |
static int science_dialog_callback(struct widget *pwindow)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
if (!pChangeTechDlg) {
|
||
if (select_window_group_dialog(pScienceDlg->begin_widget_list, pwindow)) {
|
||
if (!change_tech_dlg) {
|
||
if (select_window_group_dialog(science_dlg->begin_widget_list, pwindow)) {
|
||
widget_flush(pwindow);
|
||
}
|
||
if (move_window_group_dialog(pScienceDlg->begin_widget_list, pwindow)) {
|
||
if (move_window_group_dialog(science_dlg->begin_widget_list, pwindow)) {
|
||
real_science_report_dialog_update(NULL);
|
||
}
|
||
}
|
||
... | ... | |
int count;
|
||
SDL_Rect area;
|
||
if (pScienceDlg) {
|
||
if (science_dlg) {
|
||
return;
|
||
}
|
||
... | ... | |
widget_redraw(pwidget);
|
||
widget_mark_dirty(pwidget);
|
||
pScienceDlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
science_dlg = fc_calloc(1, sizeof(struct small_dialog));
|
||
/* TRANS: Research report title */
|
||
pstr = create_utf8_from_char(_("Research"), adj_font(12));
|
||
... | ... | |
set_wstate(pwindow, FC_WS_NORMAL);
|
||
pwindow->action = science_dialog_callback;
|
||
pScienceDlg->end_widget_list = pwindow;
|
||
science_dlg->end_widget_list = pwindow;
|
||
background = theme_get_background(theme, BACKGROUND_SCIENCEDLG);
|
||
pwindow->theme = ResizeSurface(background, pwindow->size.w, pwindow->size.h, 1);
|
||
... | ... | |
pwindow->size.y + adj_size(2));
|
||
/* ======================== */
|
||
pScienceDlg->begin_widget_list = pExitButton;
|
||
science_dlg->begin_widget_list = pExitButton;
|
||
real_science_report_dialog_update(NULL);
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
void science_report_dialogs_popdown_all(void)
|
||
{
|
||
if (pChangeTechDlg) {
|
||
popdown_window_group_dialog(pChangeTechDlg->begin_widget_list,
|
||
pChangeTechDlg->end_widget_list);
|
||
FC_FREE(pChangeTechDlg->scroll);
|
||
FC_FREE(pChangeTechDlg);
|
||
if (change_tech_dlg) {
|
||
popdown_window_group_dialog(change_tech_dlg->begin_widget_list,
|
||
change_tech_dlg->end_widget_list);
|
||
FC_FREE(change_tech_dlg->scroll);
|
||
FC_FREE(change_tech_dlg);
|
||
}
|
||
if (pScienceDlg) {
|
||
popdown_window_group_dialog(pScienceDlg->begin_widget_list,
|
||
pScienceDlg->end_widget_list);
|
||
FC_FREE(pScienceDlg);
|
||
if (science_dlg) {
|
||
popdown_window_group_dialog(science_dlg->begin_widget_list,
|
||
science_dlg->end_widget_list);
|
||
FC_FREE(science_dlg);
|
||
set_wstate(get_research_widget(), FC_WS_NORMAL);
|
||
widget_redraw(get_research_widget());
|
||
widget_mark_dirty(get_research_widget());
|
client/gui-sdl2/widget.h | ||
---|---|---|
FC_WS_DISABLED)
|
||
/* Advanced Dialog */
|
||
bool add_widget_to_vertical_scroll_widget_list(struct advanced_dialog *pDlg,
|
||
bool add_widget_to_vertical_scroll_widget_list(struct advanced_dialog *dlg,
|
||
struct widget *new_widget,
|
||
struct widget *add_dock, bool dir,
|
||
Sint16 start_x, Sint16 start_y);
|
||
bool del_widget_from_vertical_scroll_widget_list(struct advanced_dialog *pDlg,
|
||
bool del_widget_from_vertical_scroll_widget_list(struct advanced_dialog *dlg,
|
||
struct widget *pwidget);
|
||
/* misc */
|
client/gui-sdl2/widget_scrollbar.c | ||
---|---|---|
/**********************************************************************//**
|
||
Get current active position of the scrollbar.
|
||
**************************************************************************/
|
||
static int get_position(struct advanced_dialog *pDlg)
|
||
static int get_position(struct advanced_dialog *dlg)
|
||
{
|
||
struct widget *buf = pDlg->active_widget_list;
|
||
int count = pDlg->scroll->active * pDlg->scroll->step - 1;
|
||
int step = get_step(pDlg->scroll);
|
||
struct widget *buf = dlg->active_widget_list;
|
||
int count = dlg->scroll->active * dlg->scroll->step - 1;
|
||
int step = get_step(dlg->scroll);
|
||
/* find last seen widget */
|
||
while (count) {
|
||
if (buf == pDlg->begin_active_widget_list) {
|
||
if (buf == dlg->begin_active_widget_list) {
|
||
break;
|
||
}
|
||
count--;
|
||
... | ... | |
}
|
||
count = 0;
|
||
if (buf != pDlg->begin_active_widget_list) {
|
||
if (buf != dlg->begin_active_widget_list) {
|
||
do {
|
||
count++;
|
||
buf = buf->prev;
|
||
} while (buf != pDlg->begin_active_widget_list);
|
||
} while (buf != dlg->begin_active_widget_list);
|
||
}
|
||
if (pDlg->scroll->pscroll_bar) {
|
||
return pDlg->scroll->max - pDlg->scroll->pscroll_bar->size.h -
|
||
count * (float)step / pDlg->scroll->step;
|
||
if (dlg->scroll->pscroll_bar) {
|
||
return dlg->scroll->max - dlg->scroll->pscroll_bar->size.h -
|
||
count * (float)step / dlg->scroll->step;
|
||
} else {
|
||
return pDlg->scroll->max - count * (float)step / pDlg->scroll->step;
|
||
return dlg->scroll->max - count * (float)step / dlg->scroll->step;
|
||
}
|
||
}
|
||
... | ... | |
static int std_up_advanced_dlg_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct advanced_dialog *pDlg = pwidget->private_data.adv_dlg;
|
||
struct advanced_dialog *dlg = pwidget->private_data.adv_dlg;
|
||
struct widget *begin = up_scroll_widget_list(
|
||
pDlg->scroll,
|
||
pDlg->active_widget_list,
|
||
pDlg->begin_active_widget_list,
|
||
pDlg->end_active_widget_list);
|
||
dlg->scroll,
|
||
dlg->active_widget_list,
|
||
dlg->begin_active_widget_list,
|
||
dlg->end_active_widget_list);
|
||
if (begin) {
|
||
pDlg->active_widget_list = begin;
|
||
dlg->active_widget_list = begin;
|
||
}
|
||
unselect_widget_action();
|
||
... | ... | |
static int std_down_advanced_dlg_callback(struct widget *pwidget)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct advanced_dialog *pDlg = pwidget->private_data.adv_dlg;
|
||
struct advanced_dialog *dlg = pwidget->private_data.adv_dlg;
|
||
struct widget *begin = down_scroll_widget_list(
|
||
pDlg->scroll,
|
||
pDlg->active_widget_list,
|
||
pDlg->begin_active_widget_list,
|
||
pDlg->end_active_widget_list);
|
||
dlg->scroll,
|
||
dlg->active_widget_list,
|
||
dlg->begin_active_widget_list,
|
||
dlg->end_active_widget_list);
|
||
if (begin) {
|
||
pDlg->active_widget_list = begin;
|
||
dlg->active_widget_list = begin;
|
||
}
|
||
unselect_widget_action();
|
||
... | ... | |
static int std_vscroll_advanced_dlg_callback(struct widget *pscroll_bar)
|
||
{
|
||
if (PRESSED_EVENT(main_data.event)) {
|
||
struct advanced_dialog *pDlg = pscroll_bar->private_data.adv_dlg;
|
||
struct advanced_dialog *dlg = pscroll_bar->private_data.adv_dlg;
|
||
struct widget *begin = vertic_scroll_widget_list(
|
||
pDlg->scroll,
|
||
pDlg->active_widget_list,
|
||
pDlg->begin_active_widget_list,
|
||
pDlg->end_active_widget_list);
|
||
dlg->scroll,
|
||
dlg->active_widget_list,
|
||
dlg->begin_active_widget_list,
|
||
dlg->end_active_widget_list);
|
||
if (begin) {
|
||
pDlg->active_widget_list = begin;
|
||
dlg->active_widget_list = begin;
|
||
}
|
||
unselect_widget_action();
|
||
... | ... | |
/**********************************************************************//**
|
||
Create a new vertical scrollbar to active widgets list.
|
||
**************************************************************************/
|
||
Uint32 create_vertical_scrollbar(struct advanced_dialog *pDlg,
|
||
Uint32 create_vertical_scrollbar(struct advanced_dialog *dlg,
|
||
Uint8 step, Uint8 active,
|
||
bool create_scrollbar, bool create_buttons)
|
||
{
|
||
Uint16 count = 0;
|
||
struct widget *buf = NULL, *pwindow = NULL;
|
||
fc_assert_ret_val(pDlg != NULL, 0);
|
||
fc_assert_ret_val(dlg != NULL, 0);
|
||
pwindow = pDlg->end_widget_list;
|
||
pwindow = dlg->end_widget_list;
|
||
if (!pDlg->scroll) {
|
||
pDlg->scroll = fc_calloc(1, sizeof(struct scroll_bar));
|
||
if (!dlg->scroll) {
|
||
dlg->scroll = fc_calloc(1, sizeof(struct scroll_bar));
|
||
buf = pDlg->end_active_widget_list;
|
||
while (buf && (buf != pDlg->begin_active_widget_list->prev)) {
|
||
buf = dlg->end_active_widget_list;
|
||
while (buf && (buf != dlg->begin_active_widget_list->prev)) {
|
||
buf = buf->prev;
|
||
count++;
|
||
}
|
||
pDlg->scroll->count = count;
|
||
dlg->scroll->count = count;
|
||
}
|
||
pDlg->scroll->active = active;
|
||
pDlg->scroll->step = step;
|
||
dlg->scroll->active = active;
|
||
dlg->scroll->step = step;
|
||
if (create_buttons) {
|
||
/* create up button */
|
||
... | ... | |
NULL, WF_RESTORE_BACKGROUND);
|
||
buf->ID = ID_BUTTON;
|
||
buf->private_data.adv_dlg = pDlg;
|
||
buf->private_data.adv_dlg = dlg;
|
||
buf->action = std_up_advanced_dlg_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
pDlg->scroll->up_left_button = buf;
|
||
widget_add_as_prev(buf, pDlg->begin_widget_list);
|
||
pDlg->begin_widget_list = buf;
|
||
dlg->scroll->up_left_button = buf;
|
||
widget_add_as_prev(buf, dlg->begin_widget_list);
|
||
dlg->begin_widget_list = buf;
|
||
count = buf->size.w;
|
||
... | ... | |
NULL, WF_RESTORE_BACKGROUND);
|
||
buf->ID = ID_BUTTON;
|
||
buf->private_data.adv_dlg = pDlg;
|
||
buf->private_data.adv_dlg = dlg;
|
||
buf->action = std_down_advanced_dlg_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
pDlg->scroll->down_right_button = buf;
|
||
widget_add_as_prev(buf, pDlg->begin_widget_list);
|
||
pDlg->begin_widget_list = buf;
|
||
dlg->scroll->down_right_button = buf;
|
||
widget_add_as_prev(buf, dlg->begin_widget_list);
|
||
dlg->begin_widget_list = buf;
|
||
}
|
||
if (create_scrollbar) {
|
||
... | ... | |
adj_size(10), WF_RESTORE_BACKGROUND);
|
||
buf->ID = ID_SCROLLBAR;
|
||
buf->private_data.adv_dlg = pDlg;
|
||
buf->private_data.adv_dlg = dlg;
|
||
buf->action = std_vscroll_advanced_dlg_callback;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
pDlg->scroll->pscroll_bar = buf;
|
||
widget_add_as_prev(buf, pDlg->begin_widget_list);
|
||
pDlg->begin_widget_list = buf;
|
||
dlg->scroll->pscroll_bar = buf;
|
||
widget_add_as_prev(buf, dlg->begin_widget_list);
|
||
dlg->begin_widget_list = buf;
|
||
if (!count) {
|
||
count = buf->size.w;
|
||
... | ... | |
TRUE - upper add => add_dock->next = new_widget.
|
||
FALSE - down add => add_dock->prev = new_widget.
|
||
start_x, start_y - positions of first seen widget (active_widget_list).
|
||
pDlg->scroll ( scrollbar ) must exist.
|
||
dlg->scroll ( scrollbar ) must exist.
|
||
It isn't full secure to multi widget list.
|
||
**************************************************************************/
|
||
bool add_widget_to_vertical_scroll_widget_list(struct advanced_dialog *pDlg,
|
||
bool add_widget_to_vertical_scroll_widget_list(struct advanced_dialog *dlg,
|
||
struct widget *new_widget,
|
||
struct widget *add_dock,
|
||
bool dir,
|
||
... | ... | |
bool last = FALSE, seen = TRUE;
|
||
fc_assert_ret_val(new_widget != NULL, FALSE);
|
||
fc_assert_ret_val(pDlg != NULL, FALSE);
|
||
fc_assert_ret_val(pDlg->scroll != NULL, FALSE);
|
||
fc_assert_ret_val(dlg != NULL, FALSE);
|
||
fc_assert_ret_val(dlg->scroll != NULL, FALSE);
|
||
if (!add_dock) {
|
||
add_dock = pDlg->begin_widget_list; /* last item */
|
||
add_dock = dlg->begin_widget_list; /* last item */
|
||
}
|
||
pDlg->scroll->count++;
|
||
dlg->scroll->count++;
|
||
if (pDlg->scroll->count > (pDlg->scroll->active * pDlg->scroll->step)) {
|
||
if (dlg->scroll->count > (dlg->scroll->active * dlg->scroll->step)) {
|
||
/* -> scrollbar needed */
|
||
if (pDlg->active_widget_list) {
|
||
if (dlg->active_widget_list) {
|
||
/* -> scrollbar is already visible */
|
||
int i = 0;
|
||
/* find last active widget */
|
||
pOld_End = add_dock;
|
||
while (pOld_End != pDlg->active_widget_list) {
|
||
while (pOld_End != dlg->active_widget_list) {
|
||
pOld_End = pOld_End->next;
|
||
i++;
|
||
if (pOld_End == pDlg->end_active_widget_list) {
|
||
/* implies (pOld_End == pDlg->active_widget_list)? */
|
||
if (pOld_End == dlg->end_active_widget_list) {
|
||
/* implies (pOld_End == dlg->active_widget_list)? */
|
||
seen = FALSE;
|
||
break;
|
||
}
|
||
}
|
||
if (seen) {
|
||
count = (pDlg->scroll->active * pDlg->scroll->step) - 1;
|
||
count = (dlg->scroll->active * dlg->scroll->step) - 1;
|
||
if (i > count) {
|
||
seen = FALSE;
|
||
} else {
|
||
... | ... | |
} else {
|
||
last = TRUE;
|
||
pDlg->active_widget_list = pDlg->end_active_widget_list;
|
||
show_scrollbar(pDlg->scroll);
|
||
dlg->active_widget_list = dlg->end_active_widget_list;
|
||
show_scrollbar(dlg->scroll);
|
||
}
|
||
}
|
||
... | ... | |
/* upper add */
|
||
widget_add_next(new_widget, add_dock);
|
||
if (add_dock == pDlg->end_widget_list) {
|
||
pDlg->end_widget_list = new_widget;
|
||
if (add_dock == dlg->end_widget_list) {
|
||
dlg->end_widget_list = new_widget;
|
||
}
|
||
if (add_dock == pDlg->end_active_widget_list) {
|
||
pDlg->end_active_widget_list = new_widget;
|
||
if (add_dock == dlg->end_active_widget_list) {
|
||
dlg->end_active_widget_list = new_widget;
|
||
}
|
||
if (add_dock == pDlg->active_widget_list) {
|
||
pDlg->active_widget_list = new_widget;
|
||
if (add_dock == dlg->active_widget_list) {
|
||
dlg->active_widget_list = new_widget;
|
||
}
|
||
} else {
|
||
/* down add */
|
||
widget_add_as_prev(new_widget, add_dock);
|
||
if (add_dock == pDlg->begin_widget_list) {
|
||
pDlg->begin_widget_list = new_widget;
|
||
if (add_dock == dlg->begin_widget_list) {
|
||
dlg->begin_widget_list = new_widget;
|
||
}
|
||
if (add_dock == pDlg->begin_active_widget_list) {
|
||
pDlg->begin_active_widget_list = new_widget;
|
||
if (add_dock == dlg->begin_active_widget_list) {
|
||
dlg->begin_active_widget_list = new_widget;
|
||
}
|
||
}
|
||
/* setup draw positions */
|
||
if (seen) {
|
||
if (!pDlg->begin_active_widget_list) {
|
||
if (!dlg->begin_active_widget_list) {
|
||
/* first element ( active list empty ) */
|
||
fc_assert_msg(FALSE == dir, "Forbided List Operation");
|
||
new_widget->size.x = start_x;
|
||
new_widget->size.y = start_y;
|
||
pDlg->begin_active_widget_list = new_widget;
|
||
pDlg->end_active_widget_list = new_widget;
|
||
if (!pDlg->begin_widget_list) {
|
||
pDlg->begin_widget_list = new_widget;
|
||
pDlg->end_widget_list = new_widget;
|
||
dlg->begin_active_widget_list = new_widget;
|
||
dlg->end_active_widget_list = new_widget;
|
||
if (!dlg->begin_widget_list) {
|
||
dlg->begin_widget_list = new_widget;
|
||
dlg->end_widget_list = new_widget;
|
||
}
|
||
} else { /* there are some elements on local active list */
|
||
if (last) {
|
||
... | ... | |
buf->gfx = buf->next->gfx;
|
||
buf->next->gfx = NULL;
|
||
buf = buf->next;
|
||
} while (buf != pDlg->active_widget_list);
|
||
} while (buf != dlg->active_widget_list);
|
||
buf->gfx = NULL;
|
||
set_wflag(buf, WF_HIDDEN);
|
||
pDlg->active_widget_list = pDlg->active_widget_list->prev;
|
||
dlg->active_widget_list = dlg->active_widget_list->prev;
|
||
}
|
||
} else { /* !last */
|
||
buf = new_widget;
|
||
/* find last seen widget */
|
||
if (pDlg->active_widget_list) {
|
||
end = pDlg->active_widget_list;
|
||
count = pDlg->scroll->active * pDlg->scroll->step - 1;
|
||
while (count && end != pDlg->begin_active_widget_list) {
|
||
if (dlg->active_widget_list) {
|
||
end = dlg->active_widget_list;
|
||
count = dlg->scroll->active * dlg->scroll->step - 1;
|
||
while (count && end != dlg->begin_active_widget_list) {
|
||
end = end->prev;
|
||
count--;
|
||
}
|
||
}
|
||
while (buf) {
|
||
if (buf == pDlg->begin_active_widget_list) {
|
||
if (buf == dlg->begin_active_widget_list) {
|
||
struct widget *pTmp = buf;
|
||
count = pDlg->scroll->step;
|
||
count = dlg->scroll->step;
|
||
while (count) {
|
||
pTmp = pTmp->next;
|
||
count--;
|
||
... | ... | |
set_wflag(pOld_End, WF_HIDDEN);
|
||
}
|
||
} /* !last */
|
||
} /* pDlg->begin_active_widget_list */
|
||
} /* dlg->begin_active_widget_list */
|
||
} else { /* !seen */
|
||
set_wflag(new_widget, WF_HIDDEN);
|
||
}
|
||
if (pDlg->active_widget_list && pDlg->scroll->pscroll_bar) {
|
||
widget_undraw(pDlg->scroll->pscroll_bar);
|
||
widget_mark_dirty(pDlg->scroll->pscroll_bar);
|
||
if (dlg->active_widget_list && dlg->scroll->pscroll_bar) {
|
||
widget_undraw(dlg->scroll->pscroll_bar);
|
||
widget_mark_dirty(dlg->scroll->pscroll_bar);
|
||
pDlg->scroll->pscroll_bar->size.h = scrollbar_size(pDlg->scroll);
|
||
dlg->scroll->pscroll_bar->size.h = scrollbar_size(dlg->scroll);
|
||
if (last) {
|
||
pDlg->scroll->pscroll_bar->size.y = get_position(pDlg);
|
||
dlg->scroll->pscroll_bar->size.y = get_position(dlg);
|
||
}
|
||
if (get_wflags(pDlg->scroll->pscroll_bar) & WF_RESTORE_BACKGROUND) {
|
||
refresh_widget_background(pDlg->scroll->pscroll_bar);
|
||
if (get_wflags(dlg->scroll->pscroll_bar) & WF_RESTORE_BACKGROUND) {
|
||
refresh_widget_background(dlg->scroll->pscroll_bar);
|
||
}
|
||
if (!seen) {
|
||
redraw_vert(pDlg->scroll->pscroll_bar);
|
||
redraw_vert(dlg->scroll->pscroll_bar);
|
||
}
|
||
}
|
||
... | ... | |
/**********************************************************************//**
|
||
Delete widget from scrolled list and set draw position of all changed
|
||
widgets.
|
||
Don't free pDlg and pDlg->scroll (if exist)
|
||
Don't free dlg and dlg->scroll (if exist)
|
||
It is full secure for multi widget list case.
|
||
**************************************************************************/
|
||
bool del_widget_from_vertical_scroll_widget_list(struct advanced_dialog *pDlg,
|
||
bool del_widget_from_vertical_scroll_widget_list(struct advanced_dialog *dlg,
|
||
struct widget *pwidget)
|
||
{
|
||
int count = 0;
|
||
struct widget *buf = pwidget;
|
||
fc_assert_ret_val(pwidget != NULL, FALSE);
|
||
fc_assert_ret_val(pDlg != NULL, FALSE);
|
||
fc_assert_ret_val(dlg != NULL, FALSE);
|
||
/* if begin == end -> size = 1 */
|
||
if (pDlg->begin_active_widget_list == pDlg->end_active_widget_list) {
|
||
if (dlg->begin_active_widget_list == dlg->end_active_widget_list) {
|
||
if (pDlg->scroll) {
|
||
pDlg->scroll->count = 0;
|
||
if (dlg->scroll) {
|
||
dlg->scroll->count = 0;
|
||
}
|
||
if (pDlg->begin_active_widget_list == pDlg->begin_widget_list) {
|
||
pDlg->begin_widget_list = pDlg->begin_widget_list->next;
|
||
if (dlg->begin_active_widget_list == dlg->begin_widget_list) {
|
||
dlg->begin_widget_list = dlg->begin_widget_list->next;
|
||
}
|
||
if (pDlg->end_active_widget_list == pDlg->end_widget_list) {
|
||
pDlg->end_widget_list = pDlg->end_widget_list->prev;
|
||
if (dlg->end_active_widget_list == dlg->end_widget_list) {
|
||
dlg->end_widget_list = dlg->end_widget_list->prev;
|
||
}
|
||
pDlg->begin_active_widget_list = NULL;
|
||
pDlg->active_widget_list = NULL;
|
||
pDlg->end_active_widget_list = NULL;
|
||
dlg->begin_active_widget_list = NULL;
|
||
dlg->active_widget_list = NULL;
|
||
dlg->end_active_widget_list = NULL;
|
||
widget_undraw(pwidget);
|
||
widget_mark_dirty(pwidget);
|
||
... | ... | |
return FALSE;
|
||
}
|
||
if (pDlg->scroll && pDlg->active_widget_list) {
|
||
if (dlg->scroll && dlg->active_widget_list) {
|
||
/* scrollbar exist and active, start mod. from last seen label */
|
||
struct widget *pLast;
|
||
bool widget_found = FALSE;
|
||
/* this is always true because no-scrolbar case (active*step < count)
|
||
will be supported in other part of code (see "else" part) */
|
||
count = pDlg->scroll->active * pDlg->scroll->step;
|
||
count = dlg->scroll->active * dlg->scroll->step;
|
||
/* find last */
|
||
buf = pDlg->active_widget_list;
|
||
buf = dlg->active_widget_list;
|
||
while (count > 0) {
|
||
buf = buf->prev;
|
||
count--;
|
||
}
|
||
if (!buf) {
|
||
pLast = pDlg->begin_active_widget_list;
|
||
pLast = dlg->begin_active_widget_list;
|
||
} else {
|
||
pLast = buf->next;
|
||
}
|
||
if (pLast == pDlg->begin_active_widget_list) {
|
||
if (pDlg->scroll->step == 1) {
|
||
pDlg->active_widget_list = pDlg->active_widget_list->next;
|
||
clear_wflag(pDlg->active_widget_list, WF_HIDDEN);
|
||
if (pLast == dlg->begin_active_widget_list) {
|
||
if (dlg->scroll->step == 1) {
|
||
dlg->active_widget_list = dlg->active_widget_list->next;
|
||
clear_wflag(dlg->active_widget_list, WF_HIDDEN);
|
||
/* look for the widget in the non-visible part */
|
||
buf = pDlg->end_active_widget_list;
|
||
while (buf != pDlg->active_widget_list) {
|
||
buf = dlg->end_active_widget_list;
|
||
while (buf != dlg->active_widget_list) {
|
||
if (buf == pwidget) {
|
||
widget_found = TRUE;
|
||
buf = pDlg->active_widget_list;
|
||
buf = dlg->active_widget_list;
|
||
break;
|
||
}
|
||
buf = buf->prev;
|
||
... | ... | |
}
|
||
}
|
||
if ((pDlg->scroll->count - 1) <= (pDlg->scroll->active * pDlg->scroll->step)) {
|
||
if ((dlg->scroll->count - 1) <= (dlg->scroll->active * dlg->scroll->step)) {
|
||
/* scrollbar not needed anymore */
|
||
hide_scrollbar(pDlg->scroll);
|
||
pDlg->active_widget_list = NULL;
|
||
hide_scrollbar(dlg->scroll);
|
||
dlg->active_widget_list = NULL;
|
||
}
|
||
pDlg->scroll->count--;
|
||
dlg->scroll->count--;
|
||
if (pDlg->active_widget_list) {
|
||
if (pDlg->scroll->pscroll_bar) {
|
||
widget_undraw(pDlg->scroll->pscroll_bar);
|
||
pDlg->scroll->pscroll_bar->size.h = scrollbar_size(pDlg->scroll);
|
||
refresh_widget_background(pDlg->scroll->pscroll_bar);
|
||
if (dlg->active_widget_list) {
|
||
if (dlg->scroll->pscroll_bar) {
|
||
widget_undraw(dlg->scroll->pscroll_bar);
|
||
dlg->scroll->pscroll_bar->size.h = scrollbar_size(dlg->scroll);
|
||
refresh_widget_background(dlg->scroll->pscroll_bar);
|
||
}
|
||
}
|
||
} else { /* no scrollbar */
|
||
buf = pDlg->begin_active_widget_list;
|
||
buf = dlg->begin_active_widget_list;
|
||
/* undraw last widget */
|
||
widget_undraw(buf);
|
||
... | ... | |
buf = buf->next;
|
||
}
|
||
if (pDlg->scroll) {
|
||
pDlg->scroll->count--;
|
||
if (dlg->scroll) {
|
||
dlg->scroll->count--;
|
||
}
|
||
}
|
||
if (pwidget == pDlg->begin_widget_list) {
|
||
pDlg->begin_widget_list = pwidget->next;
|
||
if (pwidget == dlg->begin_widget_list) {
|
||
dlg->begin_widget_list = pwidget->next;
|
||
}
|
||
if (pwidget == pDlg->begin_active_widget_list) {
|
||
pDlg->begin_active_widget_list = pwidget->next;
|
||
if (pwidget == dlg->begin_active_widget_list) {
|
||
dlg->begin_active_widget_list = pwidget->next;
|
||
}
|
||
if (pwidget == pDlg->end_active_widget_list) {
|
||
if (pwidget == pDlg->end_widget_list) {
|
||
pDlg->end_widget_list = pwidget->prev;
|
||
if (pwidget == dlg->end_active_widget_list) {
|
||
if (pwidget == dlg->end_widget_list) {
|
||
dlg->end_widget_list = pwidget->prev;
|
||
}
|
||
if (pwidget == pDlg->active_widget_list) {
|
||
pDlg->active_widget_list = pwidget->prev;
|
||
if (pwidget == dlg->active_widget_list) {
|
||
dlg->active_widget_list = pwidget->prev;
|
||
}
|
||
pDlg->end_active_widget_list = pwidget->prev;
|
||
dlg->end_active_widget_list = pwidget->prev;
|
||
}
|
||
if (pDlg->active_widget_list && (pDlg->active_widget_list == pwidget)) {
|
||
pDlg->active_widget_list = pwidget->prev;
|
||
if (dlg->active_widget_list && (dlg->active_widget_list == pwidget)) {
|
||
dlg->active_widget_list = pwidget->prev;
|
||
}
|
||
del_widget_from_gui_list(pwidget);
|
||
if (pDlg->scroll && pDlg->scroll->pscroll_bar && pDlg->active_widget_list) {
|
||
widget_undraw(pDlg->scroll->pscroll_bar);
|
||
pDlg->scroll->pscroll_bar->size.y = get_position(pDlg);
|
||
refresh_widget_background(pDlg->scroll->pscroll_bar);
|
||
if (dlg->scroll && dlg->scroll->pscroll_bar && dlg->active_widget_list) {
|
||
widget_undraw(dlg->scroll->pscroll_bar);
|
||
dlg->scroll->pscroll_bar->size.y = get_position(dlg);
|
||
refresh_widget_background(dlg->scroll->pscroll_bar);
|
||
}
|
||
return TRUE;
|
||
... | ... | |
/**********************************************************************//**
|
||
Create a new horizontal scrollbar to active widgets list.
|
||
**************************************************************************/
|
||
Uint32 create_horizontal_scrollbar(struct advanced_dialog *pDlg,
|
||
Uint32 create_horizontal_scrollbar(struct advanced_dialog *dlg,
|
||
Sint16 start_x, Sint16 start_y,
|
||
Uint16 width, Uint16 active,
|
||
bool create_scrollbar, bool create_buttons,
|
||
... | ... | |
Uint16 count = 0;
|
||
struct widget *buf = NULL, *pwindow = NULL;
|
||
fc_assert_ret_val(pDlg != NULL, 0);
|
||
fc_assert_ret_val(dlg != NULL, 0);
|
||
pwindow = pDlg->end_widget_list;
|
||
pwindow = dlg->end_widget_list;
|
||
if (!pDlg->scroll) {
|
||
pDlg->scroll = fc_calloc(1, sizeof(struct scroll_bar));
|
||
if (!dlg->scroll) {
|
||
dlg->scroll = fc_calloc(1, sizeof(struct scroll_bar));
|
||
pDlg->scroll->active = active;
|
||
dlg->scroll->active = active;
|
||
buf = pDlg->end_active_widget_list;
|
||
while (buf && buf != pDlg->begin_active_widget_list->prev) {
|
||
buf = dlg->end_active_widget_list;
|
||
while (buf && buf != dlg->begin_active_widget_list->prev) {
|
||
buf = buf->prev;
|
||
count++;
|
||
}
|
||
pDlg->scroll->count = count;
|
||
dlg->scroll->count = count;
|
||
}
|
||
if (create_buttons) {
|
||
... | ... | |
buf = create_themeicon_button(current_theme->LEFT_Icon, pwindow->dst, NULL, 0);
|
||
buf->ID = ID_BUTTON;
|
||
buf->data.ptr = (void *)pDlg;
|
||
buf->data.ptr = (void *)dlg;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
buf->size.x = start_x;
|
||
... | ... | |
buf->size.y = start_y;
|
||
}
|
||
pDlg->scroll->min = start_x + buf->size.w;
|
||
pDlg->scroll->up_left_button = buf;
|
||
widget_add_as_prev(buf, pDlg->begin_widget_list);
|
||
pDlg->begin_widget_list = buf;
|
||
dlg->scroll->min = start_x + buf->size.w;
|
||
dlg->scroll->up_left_button = buf;
|
||
widget_add_as_prev(buf, dlg->begin_widget_list);
|
||
dlg->begin_widget_list = buf;
|
||
count = buf->size.h;
|
||
... | ... | |
buf = create_themeicon_button(current_theme->RIGHT_Icon, pwindow->dst, NULL, 0);
|
||
buf->ID = ID_BUTTON;
|
||
buf->data.ptr = (void *)pDlg;
|
||
buf->data.ptr = (void *)dlg;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
buf->size.x = start_x + width - buf->size.w;
|
||
... | ... | |
buf->size.y = start_y;
|
||
}
|
||
pDlg->scroll->max = buf->size.x;
|
||
pDlg->scroll->down_right_button = buf;
|
||
widget_add_as_prev(buf, pDlg->begin_widget_list);
|
||
pDlg->begin_widget_list = buf;
|
||
dlg->scroll->max = buf->size.x;
|
||
dlg->scroll->down_right_button = buf;
|
||
widget_add_as_prev(buf, dlg->begin_widget_list);
|
||
dlg->begin_widget_list = buf;
|
||
}
|
||
if (create_scrollbar) {
|
||
... | ... | |
width, WF_RESTORE_BACKGROUND);
|
||
buf->ID = ID_SCROLLBAR;
|
||
buf->data.ptr = (void *)pDlg;
|
||
buf->data.ptr = (void *)dlg;
|
||
set_wstate(buf, FC_WS_NORMAL);
|
||
if (swap_start_y) {
|
||
... | ... | |
}
|
||
if (create_buttons) {
|
||
buf->size.x = start_x + pDlg->scroll->up_left_button->size.w;
|
||
if (pDlg->scroll->count > pDlg->scroll->active) {
|
||
buf->size.w = scrollbar_size(pDlg->scroll);
|
||
buf->size.x = start_x + dlg->scroll->up_left_button->size.w;
|
||
if (dlg->scroll->count > dlg->scroll->active) {
|
||
buf->size.w = scrollbar_size(dlg->scroll);
|
||
} else {
|
||
buf->size.w = pDlg->scroll->max - pDlg->scroll->min;
|
||
buf->size.w = dlg->scroll->max - dlg->scroll->min;
|
||
}
|
||
} else {
|
||
buf->size.x = start_x;
|
||
pDlg->scroll->min = start_x;
|
||
pDlg->scroll->max = start_x + width;
|
||
dlg->scroll->min = start_x;
|
||
dlg->scroll->max = start_x + width;
|
||
}
|
||
pDlg->scroll->pscroll_bar = buf;
|
||
widget_add_as_prev(buf, pDlg->begin_widget_list);
|
||
pDlg->begin_widget_list = buf;
|
||
dlg->scroll->pscroll_bar = buf;
|
||
widget_add_as_prev(buf, dlg->begin_widget_list);
|
||
dlg->begin_widget_list = buf;
|
||
if (!count) {
|
||
count = buf->size.h;
|
client/gui-sdl2/widget_scrollbar.h | ||
---|---|---|
Uint16 height, Uint32 flags);
|
||
int draw_vert(struct widget *pVert, Sint16 x, Sint16 y);
|
||
Uint32 create_vertical_scrollbar(struct advanced_dialog *pDlg,
|
||
Uint32 create_vertical_scrollbar(struct advanced_dialog *dlg,
|
||
Uint8 step, Uint8 active,
|
||
bool create_scrollbar, bool create_buttons);
|
||
... | ... | |
Uint16 width, Uint32 flags);
|
||
int draw_horiz(struct widget *pHoriz, Sint16 x, Sint16 y);
|
||
Uint32 create_horizontal_scrollbar(struct advanced_dialog *pDlg,
|
||
Uint32 create_horizontal_scrollbar(struct advanced_dialog *dlg,
|
||
Sint16 start_x, Sint16 start_y,
|
||
Uint16 width, Uint16 active,
|
||
bool create_scrollbar, bool create_buttons,
|