mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-17 12:58:56 +00:00

include new definitions and updated versions of existing definitions "default/classic" and "modern" has been renamed to "Parchment" and "Celes" to avoid confusion
250 lines
4.3 KiB
INI
250 lines
4.3 KiB
INI
#textdomain wesnoth-lib
|
|
###
|
|
### Definition of the window used to show large tooltips.
|
|
### The placement algorithms used are described in the
|
|
### »Tooltip placement« section in the GUI2 design document.
|
|
###
|
|
### gui/dialogs/title_screen.cpp has test code, which is
|
|
### activated by defining the DEBUG_TOOLTIP macro.
|
|
###
|
|
|
|
#define __GUI_WINDOW_HEIGHT
|
|
(
|
|
if(window_height = 0
|
|
# Determine the wanted maximum height. #
|
|
# The value should be high enough to avoid an #
|
|
# unable to place exception. #
|
|
, 100000
|
|
# Determine the height to use. #
|
|
, window_height)
|
|
)#enddef
|
|
|
|
|
|
#define __GUI_WINDOW_FUNCTIONS
|
|
def placement_method(m, w, s)
|
|
(
|
|
if((w.y > s.y) or (w.x > s.x)
|
|
, 'TooBig'
|
|
, if(m.y + 25 + w.y >= s.y
|
|
, 'Above'
|
|
, 'Below'
|
|
)
|
|
)
|
|
);
|
|
|
|
def set_x(m, w, s)
|
|
(
|
|
[
|
|
if(preferred_x + w.x > s.x
|
|
, s.x - w.x
|
|
, preferred_x)
|
|
where
|
|
preferred_x = switch(
|
|
placement_method(m, w, s)
|
|
# extra offset to avoid being obscured by the mouse. #
|
|
, 'Above' , m.x + 20
|
|
, 'Below' , m.x + 20
|
|
, 'TooBig' , 5
|
|
, #default# m.x
|
|
),
|
|
#
|
|
debug_print('placement_method, mouse ', m),
|
|
debug_print('window ', w),
|
|
debug_print('screen ', s),
|
|
debug_print('y margin', s.y - (m.y + w.y)),
|
|
debug_print('result ', placement_method(m, w, s)),
|
|
#
|
|
|
|
][0]
|
|
);
|
|
|
|
def set_y(m, w, s)
|
|
(
|
|
if(preferred_y < 0
|
|
, s.y - w.y
|
|
, preferred_y)
|
|
where
|
|
preferred_y = switch(
|
|
placement_method(m, w, s)
|
|
, 'Above' , m.y - (w.y + 15)
|
|
, 'Below' , m.y + 25
|
|
, 'TooBig' , 5
|
|
, #default# m.y - w.y
|
|
)
|
|
);
|
|
|
|
def get_maximum_width(w, s)
|
|
(
|
|
if(w.x = 0
|
|
# The default width upon the initial run. #
|
|
, 450
|
|
, if(w.y <= s.y
|
|
# If the window's height fits use that. #
|
|
, w.x
|
|
# Else use an increased width, which should reduce #
|
|
# the required height. #
|
|
, 2 * w.x))
|
|
);
|
|
|
|
def set_w(r, w, s)
|
|
(
|
|
switch(
|
|
r
|
|
, 'maximum', get_maximum_width(w, s)
|
|
, 'size', w.x
|
|
)
|
|
);
|
|
|
|
def reevaluate_best_size(w, s)
|
|
(
|
|
[
|
|
w.y > s.y,
|
|
#
|
|
debug_print('window ', w),
|
|
debug_print('screen ', s)
|
|
#
|
|
][0]
|
|
);
|
|
#enddef
|
|
|
|
#define __GUI_WINDOW_X
|
|
(
|
|
set_x(
|
|
loc(mouse_x, mouse_y)
|
|
, loc(window_width, window_height)
|
|
, loc(screen_width, screen_height))
|
|
)
|
|
#enddef
|
|
|
|
#define __GUI_WINDOW_Y
|
|
(
|
|
set_y(
|
|
loc(mouse_x, mouse_y)
|
|
, loc(window_width, window_height)
|
|
, loc(screen_width, screen_height))
|
|
)#enddef
|
|
|
|
#define __GUI_WINDOW_WIDTH
|
|
(
|
|
set_w(
|
|
size_request_mode
|
|
, loc(window_width, window_height)
|
|
, loc(screen_width, screen_height))
|
|
)#enddef
|
|
|
|
#define __GUI_WINDOW_REEVALUATE_BEST_SIZE
|
|
(
|
|
reevaluate_best_size(
|
|
loc(window_width, window_height)
|
|
, loc(screen_width, screen_height))
|
|
)#enddef
|
|
|
|
[window]
|
|
id = "tooltip"
|
|
description = "The tooltip popup window with floating tooltips."
|
|
|
|
[resolution]
|
|
definition = "tooltip"
|
|
|
|
automatic_placement = false
|
|
|
|
functions = "{__GUI_WINDOW_FUNCTIONS}"
|
|
|
|
x = "{__GUI_WINDOW_X}"
|
|
y = "{__GUI_WINDOW_Y}"
|
|
width = "{__GUI_WINDOW_WIDTH}"
|
|
height = "{__GUI_WINDOW_HEIGHT}"
|
|
reevaluate_best_size = "{__GUI_WINDOW_REEVALUATE_BEST_SIZE}"
|
|
|
|
# TODO tooltips in this window make little sense.
|
|
# Have to think of a nice solution.
|
|
[tooltip]
|
|
id = "tooltip"
|
|
[/tooltip]
|
|
|
|
[helptip]
|
|
id = "tooltip"
|
|
[/helptip]
|
|
|
|
[grid]
|
|
|
|
[row]
|
|
|
|
[column]
|
|
|
|
[label]
|
|
id = "label"
|
|
definition = "default_small"
|
|
|
|
use_markup = true
|
|
wrap = true
|
|
[/label]
|
|
|
|
[/column]
|
|
|
|
[/row]
|
|
|
|
[/grid]
|
|
|
|
[/resolution]
|
|
|
|
[/window]
|
|
|
|
[window]
|
|
id = "tooltip_transparent"
|
|
description = "The tooltip popup window with floating tooltips, and transparent background."
|
|
|
|
[resolution]
|
|
definition = "tooltip_transparent"
|
|
|
|
automatic_placement = false
|
|
|
|
functions = "{__GUI_WINDOW_FUNCTIONS}"
|
|
|
|
x = "{__GUI_WINDOW_X}"
|
|
y = "{__GUI_WINDOW_Y}"
|
|
width = "{__GUI_WINDOW_WIDTH}"
|
|
height = "{__GUI_WINDOW_HEIGHT}"
|
|
reevaluate_best_size = "{__GUI_WINDOW_REEVALUATE_BEST_SIZE}"
|
|
|
|
# TODO tooltips in this window make little sense.
|
|
# Have to think of a nice solution.
|
|
[tooltip]
|
|
id = "tooltip_transparent"
|
|
[/tooltip]
|
|
|
|
[helptip]
|
|
id = "tooltip_transparent"
|
|
[/helptip]
|
|
|
|
[grid]
|
|
|
|
[row]
|
|
|
|
[column]
|
|
|
|
[label]
|
|
id = "label"
|
|
definition = "default_small"
|
|
|
|
use_markup = true
|
|
wrap = true
|
|
[/label]
|
|
|
|
[/column]
|
|
|
|
[/row]
|
|
|
|
[/grid]
|
|
|
|
[/resolution]
|
|
|
|
[/window]
|
|
|
|
#undef __GUI_WINDOW_REEVALUATE_BEST_SIZE
|
|
#undef __GUI_WINDOW_HEIGHT
|
|
#undef __GUI_WINDOW_WIDTH
|
|
#undef __GUI_WINDOW_Y
|
|
#undef __GUI_WINDOW_X
|
|
#undef __GUI_WINDOW_FUNCTIONS
|