2023-03-12 02:28:21 +01:00
|
|
|
/// @description
|
|
|
|
if !ready exit;
|
|
|
|
|
|
|
|
#region base UI
|
|
|
|
var p = ui(8);
|
2024-08-12 04:28:38 +02:00
|
|
|
var m_in = point_in_rectangle(mouse_mxs, mouse_mys, dialog_x + p, dialog_y + p, dialog_x + dialog_w - p, dialog_y + dialog_h - p);
|
|
|
|
var m_ot = point_in_rectangle(mouse_mxs, mouse_mys, dialog_x, dialog_y, dialog_x + dialog_w, dialog_y + dialog_h);
|
2023-03-12 02:28:21 +01:00
|
|
|
|
2023-11-13 15:42:14 +01:00
|
|
|
DIALOG_DRAW_BG
|
2023-03-12 02:28:21 +01:00
|
|
|
#endregion
|
|
|
|
|
2023-04-22 16:23:51 +02:00
|
|
|
#region content
|
2023-03-12 02:28:21 +01:00
|
|
|
if(!is_undefined(content) && content != noone) {
|
2023-08-29 14:33:44 +02:00
|
|
|
content.panel = self;
|
|
|
|
|
2023-03-12 02:28:21 +01:00
|
|
|
var cx = dialog_x + content.showHeader * padding;
|
|
|
|
var cy = dialog_y + content.showHeader * (padding + title_height);
|
|
|
|
content.x = cx;
|
|
|
|
content.y = cy;
|
|
|
|
content.onStepBegin();
|
2023-04-22 16:23:51 +02:00
|
|
|
|
2023-03-26 07:13:36 +02:00
|
|
|
content.pFOCUS = sFOCUS && m_in;
|
|
|
|
content.pHOVER = sHOVER && m_in;
|
2023-03-12 02:28:21 +01:00
|
|
|
|
|
|
|
panel = surface_verify(panel, dialog_w - content.showHeader * padding * 2,
|
|
|
|
dialog_h - content.showHeader * (padding * 2 + title_height));
|
|
|
|
if(!is_surface(mask_surface))
|
|
|
|
resetMask();
|
|
|
|
|
|
|
|
surface_set_target(panel);
|
2023-11-13 05:38:37 +01:00
|
|
|
draw_clear(COLORS.panel_bg_clear);
|
2023-03-12 02:28:21 +01:00
|
|
|
content.drawContent(panel);
|
|
|
|
|
|
|
|
gpu_set_blendmode(bm_subtract);
|
2024-07-10 03:45:25 +02:00
|
|
|
draw_surface_safe(mask_surface);
|
2023-03-12 02:28:21 +01:00
|
|
|
gpu_set_blendmode(bm_normal);
|
|
|
|
surface_reset_target();
|
|
|
|
|
2023-04-22 16:23:51 +02:00
|
|
|
content.drawGUI();
|
|
|
|
|
2023-03-12 02:28:21 +01:00
|
|
|
draw_surface(panel, cx, cy);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region overlay
|
|
|
|
if(content.showHeader) {
|
2023-11-14 01:54:11 +01:00
|
|
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 3, dialog_x + 3, dialog_y + 3, dialog_w - 6, title_height + 2, COLORS._main_icon_light, 1);
|
2023-03-12 02:28:21 +01:00
|
|
|
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub);
|
|
|
|
draw_text_cut(dialog_x + ui(32), dialog_y + ui(8), content.title, dialog_w - ui(32 + 32));
|
|
|
|
|
2024-07-29 09:47:23 +02:00
|
|
|
var _bx = dialog_x + dialog_w - ui(28);
|
|
|
|
var _by = dialog_y + ui(8);
|
|
|
|
var _bs = ui(20);
|
|
|
|
|
2023-03-12 02:28:21 +01:00
|
|
|
if(instanceof(content) != "Panel_Menu")
|
2024-07-29 09:47:23 +02:00
|
|
|
if(buttonInstant(THEME.button_hide, _bx, _by, _bs, _bs, mouse_ui, sFOCUS, sHOVER, "", THEME.window_exit) == 2) {
|
2023-04-23 16:47:33 +02:00
|
|
|
onDestroy();
|
2023-03-12 02:28:21 +01:00
|
|
|
instance_destroy();
|
2023-04-23 16:47:33 +02:00
|
|
|
}
|
2024-07-29 09:47:23 +02:00
|
|
|
|
|
|
|
_bx -= ui(8);
|
|
|
|
// draw_set_color(COLORS.panel_toolbar_separator);
|
|
|
|
// draw_line_width(_bx + ui(4), _by, _bx + ui(4), _by + _bs, 2);
|
|
|
|
|
|
|
|
for (var i = 0, n = array_length(content.title_actions); i < n; i++) {
|
|
|
|
var _b = content.title_actions[i];
|
|
|
|
|
|
|
|
_bx -= _bs;
|
|
|
|
_b.setFocusHover(sFOCUS, sHOVER);
|
|
|
|
_b.draw(_bx, _by, _bs, _bs, mouse_ui, THEME.button_hide);
|
|
|
|
_bs -= ui(4);
|
|
|
|
}
|
2023-03-12 02:28:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
var bx = content.showHeader? dialog_x + ui(8) : dialog_x + ui(24);
|
|
|
|
var by = content.showHeader? dialog_y + ui(8) : dialog_y + ui(18);
|
2023-06-05 18:27:53 +02:00
|
|
|
var txt = destroy_on_click_out? __txt("Pin") : __txt("Unpin");
|
2023-03-12 02:28:21 +01:00
|
|
|
var cc = destroy_on_click_out? COLORS._main_icon : COLORS._main_icon_light;
|
|
|
|
var ind = !destroy_on_click_out;
|
|
|
|
var ss = content.showHeader? ui(20) : ui(28);
|
|
|
|
var sc = content.showHeader? 0.75 : 1;
|
|
|
|
|
|
|
|
if(instanceof(content) != "Panel_Menu")
|
|
|
|
if(buttonInstant(THEME.button_hide, bx, by, ss, ss, mouse_ui, sFOCUS, sHOVER, txt, THEME.pin, ind, cc,, sc) == 2)
|
|
|
|
destroy_on_click_out = !destroy_on_click_out;
|
|
|
|
|
2023-03-28 06:58:28 +02:00
|
|
|
if(sFOCUS) {
|
2023-11-13 15:42:14 +01:00
|
|
|
DIALOG_DRAW_FOCUS
|
2023-03-12 02:28:21 +01:00
|
|
|
|
2023-03-28 06:58:28 +02:00
|
|
|
if(!m_in && m_ot) {
|
2023-11-14 01:54:11 +01:00
|
|
|
var p = DIALOG_PAD;
|
|
|
|
var p2 = DIALOG_PAD * 2;
|
2024-08-06 06:28:00 +02:00
|
|
|
draw_sprite_stretched_ext(THEME.dialog, 1, dialog_x - p, dialog_y - p, dialog_w + p2, dialog_h + p2, c_white, 0.4);
|
2023-03-12 02:28:21 +01:00
|
|
|
|
2023-03-28 06:58:28 +02:00
|
|
|
if(DOUBLE_CLICK) {
|
|
|
|
content.dragSurface = surface_clone(panel);
|
|
|
|
o_main.panel_dragging = content;
|
|
|
|
content.in_dialog = false;
|
2023-03-12 02:28:21 +01:00
|
|
|
|
2023-03-28 06:58:28 +02:00
|
|
|
instance_destroy();
|
|
|
|
} else if(mouse_press(mb_right)) {
|
2024-08-10 11:04:14 +02:00
|
|
|
menuCall("panel_window_menu", [
|
|
|
|
menuItemAction(__txt("Move"), function() {
|
2023-03-28 06:58:28 +02:00
|
|
|
content.dragSurface = surface_clone(panel);
|
|
|
|
o_main.panel_dragging = content;
|
|
|
|
content.in_dialog = false;
|
|
|
|
panel_mouse = 1;
|
2023-03-12 02:28:21 +01:00
|
|
|
|
2023-03-28 06:58:28 +02:00
|
|
|
instance_destroy();
|
|
|
|
}),
|
2024-08-10 11:04:14 +02:00
|
|
|
]);
|
2023-03-28 06:58:28 +02:00
|
|
|
}
|
|
|
|
|
2023-03-12 02:28:21 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|