1.17.10.006

This commit is contained in:
Tanasart 2024-08-13 18:17:45 +07:00
parent 5408133a3f
commit 132c06e2dc
55 changed files with 1396 additions and 892 deletions

View file

@ -662,6 +662,7 @@
{"name":"json_functions","order":8,"path":"scripts/json_functions/json_functions.yy",},
{"name":"json_minify","order":6,"path":"scripts/json_minify/json_minify.yy",},
{"name":"json_prettify","order":7,"path":"scripts/json_prettify/json_prettify.yy",},
{"name":"keyboard_display","order":3,"path":"scripts/keyboard_display/keyboard_display.yy",},
{"name":"keyboard_function","order":2,"path":"scripts/keyboard_function/keyboard_function.yy",},
{"name":"lcd_function","order":2,"path":"scripts/lcd_function/lcd_function.yy",},
{"name":"lerp_float","order":1,"path":"scripts/lerp_float/lerp_float.yy",},
@ -1820,6 +1821,7 @@
{"name":"s_checkbox","order":16,"path":"sprites/s_checkbox/s_checkbox.yy",},
{"name":"s_circle_16","order":33,"path":"sprites/s_circle_16/s_circle_16.yy",},
{"name":"s_circle_8","order":34,"path":"sprites/s_circle_8/s_circle_8.yy",},
{"name":"s_circle_hotkey","order":231,"path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},
{"name":"s_circle_toggle_8","order":35,"path":"sprites/s_circle_toggle_8/s_circle_toggle_8.yy",},
{"name":"s_close_16","order":36,"path":"sprites/s_close_16/s_close_16.yy",},
{"name":"s_code_show_auto","order":37,"path":"sprites/s_code_show_auto/s_code_show_auto.yy",},

View file

@ -1194,6 +1194,7 @@
{"id":{"name":"json_minify","path":"scripts/json_minify/json_minify.yy",},},
{"id":{"name":"json_prettify","path":"scripts/json_prettify/json_prettify.yy",},},
{"id":{"name":"key_press","path":"scripts/key_press/key_press.yy",},},
{"id":{"name":"keyboard_display","path":"scripts/keyboard_display/keyboard_display.yy",},},
{"id":{"name":"keyboard_function","path":"scripts/keyboard_function/keyboard_function.yy",},},
{"id":{"name":"lcd_function","path":"scripts/lcd_function/lcd_function.yy",},},
{"id":{"name":"lerp_float","path":"scripts/lerp_float/lerp_float.yy",},},
@ -2523,6 +2524,7 @@
{"id":{"name":"s_checkbox","path":"sprites/s_checkbox/s_checkbox.yy",},},
{"id":{"name":"s_circle_16","path":"sprites/s_circle_16/s_circle_16.yy",},},
{"id":{"name":"s_circle_8","path":"sprites/s_circle_8/s_circle_8.yy",},},
{"id":{"name":"s_circle_hotkey","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},},
{"id":{"name":"s_circle_toggle_8","path":"sprites/s_circle_toggle_8/s_circle_toggle_8.yy",},},
{"id":{"name":"s_close_16","path":"sprites/s_close_16/s_close_16.yy",},},
{"id":{"name":"s_code_show_auto","path":"sprites/s_code_show_auto/s_code_show_auto.yy",},},

Binary file not shown.

View file

@ -3,6 +3,4 @@ event_inherited();
for( var i = 0, n = array_length(children); i < n; i++ )
instance_destroy(children[i]);
// print(FOCUS);
// if(instance_number(o_dialog_menubox) == 1)
// FOCUS = FOCUS_BEFORE;
if(FOCUS == noone && instance_number(o_dialog_menubox) == 1) FOCUS = FOCUS_BEFORE;

View file

@ -88,17 +88,12 @@ if(!ready) exit;
};
selecting_menu = _menuItem;
var _loadKey = _key.full_name();
var context_menu_settings = [
_loadKey,
menuItem("Edit hotkey", function() /*=>*/ {
hk_editing = selecting_menu;
keyboard_lastchar = hk_editing.hoykeyObject.key;
}),
];
with(o_dialog_menubox) { if(!remove_parents) instance_destroy(); }
var context_menu_settings = [
_key.full_name(),
menuItem(__txt("Edit hotkey"), function() /*=>*/ { hk_editing = selecting_menu; keyboard_lastchar = hk_editing.hoykeyObject.key; }),
];
item_selecting = submenuCall(_dat, context_menu_settings);
item_selecting.remove_parents = false;

View file

@ -7,11 +7,12 @@ event_inherited();
padding = ui(8);
title_height = ui(24);
dialog_resizable = true;
destroy_on_click_out = true;
destroy_on_escape = false;
panel = surface_create(dialog_w, dialog_h);
mask_surface = noone;
content = noone;
destroy_on_click_out = true;
function setContent(content) {
self.content = content;

View file

@ -2,8 +2,8 @@
event_inherited();
#region data
dialog_w = ui(900);
dialog_h = ui(640);
dialog_w = min(WIN_W - ui(16), ui(1000));
dialog_h = min(WIN_H - ui(16), ui(700));
page_width = ui(160);
destroy_on_click_out = true;
@ -20,7 +20,7 @@ event_inherited();
panel_width = dialog_w - ui(padding + padding) - page_width;
panel_height = dialog_h - ui(title_height + padding);
hotkey_cont_h = ui(0);
hotkey_cont_h = ui(240);
hotkey_height = panel_height - hotkey_cont_h - ui(32);
onResize = function() /*=>*/ {
@ -639,9 +639,17 @@ event_inherited();
#region hotkey
hk_editing = noone;
hk_modifiers = MOD_KEY.none;
hotkeyContext = [];
hotkeyArray = [];
hotkey_focus = noone;
hotkey_focus_highlight = noone;
hotkey_focus_high_bg = 0;
hotkey_focus_index = 0;
keyboards_display = new KeyboardDisplay();
for(var j = 0; j < ds_list_size(HOTKEY_CONTEXT); j++) {
var ctx = HOTKEY_CONTEXT[| j];
var _lst = [];
@ -676,14 +684,11 @@ event_inherited();
}
array_push(hotkeyContext, { context: ctx, list: _lst });
var _title = ctx == ""? "Global" : ctx;
_title = string_replace_all(_title, "_", " ");
array_push(hotkeyArray, _title);
array_push(hotkeyArray, $" - {ctx}");
}
hk_page = 0;
hk_scroll = new scrollBox(hotkeyArray, function(val) /*=>*/ { hk_page = val; });
hk_scroll = new scrollBox(hotkeyArray, function(val) /*=>*/ { hk_page = val; sp_hotkey.scroll_y_to = 0; });
hk_scroll.align = fa_left;
sp_hotkey = new scrollPane(panel_width, hotkey_height, function(_y, _m) {
@ -705,31 +710,21 @@ event_inherited();
var _hov = sHOVER && sp_hotkey.hover;
var modified = false;
// for (var i = 0, n = array_length(hotkeyContext); i < n; i++) {
// var _ctxObj = hotkeyContext[i];
var _ctxObj = hotkeyContext[hk_page];
var _cntx = _ctxObj.context;
var _list = _ctxObj.list;
var _yy = yy + hh;
// var _grlab = _cntx == ""? __txt("Global") : _cntx;
// draw_set_text(f_p1, fa_left, fa_top, COLORS._main_text_sub);
// draw_text_add(ui(8), _yy, _grlab);
// array_push(sect, [ _grlab, sp_hotkey, hh + ui(12) ]);
// if(_yy >= 0 && section_current == "")
// section_current = psect;
// psect = _grlab;
ind = 0;
// hh += string_height("l") + ui(8);
var _search = string_lower(search_text);
for (var j = 0, m = array_length(_list); j < m; j++) {
var key = _list[j];
var name = __txt(key.name);
var dk = key_get_name(key.key, key.modi);
if(search_text != "" && string_pos(string_lower(search_text), string_lower(name)) == 0)
if(_search != "" && string_pos(_search, string_lower(name)) == 0
&& string_pos(_search, string_lower(dk)) == 0)
continue;
var pkey = key.key;
@ -737,12 +732,14 @@ event_inherited();
var _yy = yy + hh;
var _lb_y = _yy;
if(hotkey_focus == key) sp_hotkey.scroll_y_to = -hh;
if(ind++ % 2 == 0) draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _yy - padd, _ww, th + padd * 2, COLORS.dialog_preference_prop_bg, 1);
if(hotkey_focus_highlight == key) draw_sprite_stretched_add(THEME.ui_panel, 0, 0, _yy - padd, _ww, th + padd * 2, COLORS._main_accent, min(1, hotkey_focus_high_bg) * .5);
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text);
draw_text_add(ui(24), _lb_y, name);
var dk = key_get_name(key.key, key.modi);
var kw = string_width(dk);
var tx = key_x1 - ui(24);
@ -778,7 +775,7 @@ event_inherited();
if(key.key != key.dKey || key.modi != key.dModi) {
modified = true;
var bx = x1 - ui(32);
var bx = _ww - ui(32);
var by = _yy + th / 2 - ui(12);
var b = buttonInstant(THEME.button_hide, bx, by, ui(24), ui(24), _m, sFOCUS, _hov, __txt("Reset"), THEME.refresh_16);
@ -793,9 +790,11 @@ event_inherited();
hh += th + padd * 2;
}
// }
// sections[page_current] = sect;
hotkey_focus = noone;
hotkey_focus_high_bg = lerp_linear(hotkey_focus_high_bg, 0, DELTA_TIME);
if(hotkey_focus_high_bg == 0) hotkey_focus_highlight = noone;
if(hk_editing != noone) hotkey_editing(hk_editing);
return hh + ui(32);
@ -917,9 +916,7 @@ event_inherited();
#endregion
#region search
tb_search = new textBox(TEXTBOX_INPUT.text, function(str) /*=>*/ {
search_text = str;
});
tb_search = new textBox(TEXTBOX_INPUT.text, function(str) /*=>*/ { search_text = str; });
tb_search.align = fa_left;
search_text = "";

View file

@ -96,6 +96,148 @@ if !ready exit;
if(mouse_press(mb_left, sFOCUS))
hk_editing = noone;
var hk_w = panel_width;
var hk_h = hotkey_cont_h - ui(16);
var kdsp = keyboards_display;
var keys = keyboards_display.keys;
var ks = min(hk_w / kdsp.width, hk_h / kdsp.height);
var _kww = ks * kdsp.width;
var _khh = ks * kdsp.height;
var _ksx = px + hk_w / 2 - _kww / 2;
var _ksy = py + hk_h / 2 - _khh / 2;
var _kp = ui(2);
var _keyUsing = {};
var _ctxObj = hotkeyContext[hk_page];
var _cntx = _ctxObj.context;
var _list = _ctxObj.list;
for (var j = 0, m = array_length(_list); j < m; j++) {
var _ky = _list[j];
var _kkey = _ky.key;
var _kmod = _ky.modi;
if(_kkey == noone && _kmod == MOD_KEY.none) continue;
if(!struct_has(_keyUsing, _kkey))
_keyUsing[$ _kkey] = {};
var _kuse = _keyUsing[$ _kkey];
if(!struct_has(_kuse, _kmod))
_kuse[$ _kmod] = [];
array_append(_kuse[$ _kmod], _ky);
}
var c_control = CDEF.orange, kc_control = colorMultiply(CDEF.main_dkgrey, c_control);
var c_shift = CDEF.blue, kc_shift = colorMultiply(CDEF.main_dkgrey, c_shift);
var c_alt = CDEF.lime, kc_alt = colorMultiply(CDEF.main_dkgrey, c_alt);
var _sel = true;
var _mod_arr = [
MOD_KEY.ctrl, MOD_KEY.shift, MOD_KEY.alt,
MOD_KEY.ctrl | MOD_KEY.shift,
MOD_KEY.ctrl | MOD_KEY.alt,
MOD_KEY.shift | MOD_KEY.alt,
MOD_KEY.ctrl | MOD_KEY.shift | MOD_KEY.alt,
];
var _cur_mod = MOD_KEY.ctrl * key_mod_press(CTRL)
+ MOD_KEY.shift * key_mod_press(SHIFT)
+ MOD_KEY.alt * key_mod_press(ALT)
var _cmod = _cur_mod == MOD_KEY.none? hk_modifiers : _cur_mod;
draw_set_text(f_p4, fa_center, fa_center);
for (var i = 0, n = array_length(keys); i < n; i++) {
var _key = keys[i];
var _kx = _ksx + _key.x * ks;
var _ky = _ksy + _key.y * ks;
var _kw = _key.w * ks;
var _kh = _key.h * ks;
var _vk = _key.vk;
_kx += _kw / 2 - (_kw - _kp) / 2;
_ky += _kh / 2 - (_kh - _kp) / 2;
_kw -= _kp;
_kh -= _kp;
if(_vk == -1) {
draw_sprite_stretched_ext(THEME.ui_panel, 0, _kx, _ky, _kw, _kh, CDEF.main_black, 0.3);
continue;
}
var _tc = CDEF.main_grey;
var _hov = sHOVER && point_in_rectangle(mouse_mx, mouse_my, _kx - _kp, _ky - _kp, _kx + _kw + _kp - 1, _ky + _kh + _kp - 1);
if(_vk == vk_control) {
_sel = bool(MOD_KEY.ctrl & _cmod);
draw_sprite_stretched_ext(THEME.ui_panel, 0, _kx, _ky, _kw, _kh, _sel? c_control : kc_control);
_tc = _sel? kc_control : c_control;
if(mouse_press(mb_left, sFOCUS && _hov)) hk_modifiers ^= MOD_KEY.ctrl;
} else if(_vk == vk_shift) {
_sel = bool(MOD_KEY.shift & _cmod);
draw_sprite_stretched_ext(THEME.ui_panel, 0, _kx, _ky, _kw, _kh, _sel? c_shift : kc_shift);
_tc = _sel? kc_shift : c_shift;
if(mouse_press(mb_left, sFOCUS && _hov)) hk_modifiers ^= MOD_KEY.shift;
} else if(_vk == vk_alt) {
_sel = bool(MOD_KEY.alt & _cmod);
draw_sprite_stretched_ext(THEME.ui_panel, 0, _kx, _ky, _kw, _kh, _sel? c_alt : kc_alt);
_tc = _sel? kc_alt : c_alt;
if(mouse_press(mb_left, sFOCUS && _hov)) hk_modifiers ^= MOD_KEY.alt;
} else if(struct_has(_keyUsing, _vk) && struct_has(_keyUsing[$ _vk], _cmod)) {
draw_sprite_stretched_ext(THEME.ui_panel, 0, _kx, _ky, _kw, _kh, CDEF.main_ltgrey);
draw_sprite_stretched_add(THEME.ui_panel, 1, _kx, _ky, _kw, _kh, c_white, 0.1);
_tc = CDEF.main_mdblack;
var _act = _keyUsing[$ _vk][$ _cmod];
if(_hov) {
TOOLTIP = new tooltipHotkey_assign(_act, key_get_name(_vk, _cmod));
if(mouse_press(mb_left, sFOCUS)) {
if(hotkey_focus_index >= array_length(_act))
hotkey_focus_index = 0;
hotkey_focus = _act[hotkey_focus_index];
hotkey_focus_highlight = _act[hotkey_focus_index];
hotkey_focus_high_bg = 1;
hotkey_focus_index++;
}
}
} else {
draw_sprite_stretched_ext(THEME.ui_panel, 0, _kx, _ky, _kw, _kh, CDEF.main_black);
_tc = CDEF.main_grey;
if(_hov) {
TOOLTIP = new tooltipHotkey_assign(noone, key_get_name(_vk, _cmod));
}
}
draw_sprite_stretched_add(THEME.ui_panel, 1, _kx, _ky, _kw, _kh, c_white, 0.1 + _hov * 0.2);
if(is_string(_key.key)) {
draw_set_color(_tc);
draw_set_alpha(1);
draw_text(_kx + _kw / 2, _ky + _kh / 2, _key.key);
}
}
var _ppy = py + hotkey_cont_h;
hk_scroll.font = f_p2;

View file

@ -4,3 +4,5 @@ event_inherited();
if(initVal > -1)
scrollbox.onModify(initVal);
scrollbox.open = false;
if(FOCUS == noone && instance_number(o_dialog_scrollbox_horizontal) == 1) FOCUS = FOCUS_BEFORE;

View file

@ -4,3 +4,5 @@ event_inherited();
if(initVal > -1)
scrollbox.onModify(initVal);
scrollbox.open = false;
if(FOCUS == noone && instance_number(o_dialog_scrollbox) == 1) FOCUS = FOCUS_BEFORE;

View file

@ -27,27 +27,23 @@ if(PROJECT.active && !PROJECT.safeMode) { //node step
if(!instance_exists(o_dialog_preference) && !HOTKEY_BLOCK) {
if(ds_map_exists(HOTKEYS, "")) {
var l = HOTKEYS[? ""];
for(var i = 0; i < ds_list_size(l); i++) {
for(var i = 0, n = ds_list_size(l); i < n; i++) {
var hotkey = l[| i];
if(hotkey.key == 0 && hotkey.modi == MOD_KEY.none) continue;
if(key_press(hotkey.key, hotkey.modi)) {
if(key_press(hotkey.key, hotkey.modi))
hotkey.action();
break;
}
}
}
if(ds_map_exists(HOTKEYS, FOCUS_STR)) {
var list = HOTKEYS[? FOCUS_STR];
for(var i = 0; i < ds_list_size(list); i++) {
for(var i = 0, n = ds_list_size(list); i < n; i++) {
var hotkey = list[| i];
if(hotkey.key == 0 && hotkey.modi == MOD_KEY.none) continue;
if(key_press(hotkey.key, hotkey.modi)) {
if(key_press(hotkey.key, hotkey.modi))
hotkey.action();
break;
}
}
}
}

View file

@ -1,10 +1,11 @@
function __Panel_Linear_Setting_Item(name, editWidget, data, onEdit = noone, getDefault = noone) constructor {
function __Panel_Linear_Setting_Item(name, editWidget, data, onEdit = noone, getDefault = noone, action = noone) constructor {
self.name = name;
self.editWidget = editWidget;
self.data = data;
self.onEdit = onEdit;
self.getDefault = getDefault;
self.action = action == noone? noone : struct_try_get(FUNCTIONS, string_to_var2(action[0], action[1]), noone);
self.is_patreon = false;
@ -27,21 +28,24 @@ function __Panel_Linear_Setting_Label(name, sprite, _index = 0, _color = c_white
}
function Panel_Linear_Setting() : PanelContent() constructor {
title = __txtx("preview_3d_settings", "3D Preview Settings");
title = __txt("Settings");
w = ui(400);
wdgw = ui(180);
bg_y = -1;
bg_y_to = -1;
bg_a = 0;
properties = []
hk_editing = noone;
selecting_menu = noone;
properties = [];
static setHeight = function() { h = ui(12 + 36 * array_length(properties)); }
static drawSettings = function(panel) {
var yy = ui(24);
var th = ui(36);
var ww = w - ui(180);
var ww = wdgw;
var wh = TEXTBOX_HEIGHT;
var _hov = false;
@ -75,8 +79,6 @@ function Panel_Linear_Setting() : PanelContent() constructor {
_widg.setFocusHover(pFOCUS, pHOVER);
_widg.register();
//if(i % 2) draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, ui(4), yy - th / 2, w - ui(8), th, COLORS.panel_prop_bg, 0.25);
if(pHOVER && point_in_rectangle(mx, my, 0, yy - th / 2, w, yy + th / 2)) {
bg_y_to = yy - th / 2;
_hov = true;
@ -99,6 +101,50 @@ function Panel_Linear_Setting() : PanelContent() constructor {
_widg.drawParam(params);
if(_prop.action != noone) {
var _key = _prop.action.hotkey;
if(_hov && !_widg.inBBOX([ mx, my ]) && mouse_press(mb_right)) {
selecting_menu = _key;
var context_menu_settings = [
_key.full_name(),
menuItem(__txt("Edit hotkey"), function() /*=>*/ { hk_editing = selecting_menu; keyboard_lastchar = hk_editing.key; }),
];
menuCall("", context_menu_settings);
}
if(_key) {
draw_set_font(f_p1);
var _ktxt = key_get_name(_key.key, _key.modi);
var _tw = string_width(_ktxt);
var _th = line_get_height();
var _hx = _x1 - ww - ui(16);
var _hy = yy + ui(2);
var _bx = _hx - _tw - ui(4);
var _by = _hy - _th / 2 - ui(3);
var _bw = _tw + ui(8);
var _bh = _th + ui(3);
if(hk_editing == _key) {
draw_set_text(f_p1, fa_right, fa_center, COLORS._main_accent);
draw_sprite_stretched_ext(THEME.ui_panel, 1, _bx, _by, _bw, _bh, COLORS._main_text_accent);
} else if(_ktxt != "") {
draw_set_text(f_p1, fa_right, fa_center, COLORS._main_text_sub);
draw_sprite_stretched_ext(THEME.ui_panel, 1, _bx, _by, _bw, _bh, CDEF.main_dkgrey);
}
draw_text(_hx, _hy, _ktxt);
}
}
if(_prop.getDefault != noone) {
var _defVal = is_method(_prop.getDefault)? _prop.getDefault() : _prop.getDefault;
var _bs = ui(32);
@ -122,6 +168,13 @@ function Panel_Linear_Setting() : PanelContent() constructor {
if(bg_y == -1) bg_y = bg_y_to;
else bg_y = lerp_float(bg_y, bg_y_to, 2);
if(hk_editing != noone) {
if(keyboard_check_pressed(vk_enter)) hk_editing = noone;
else hotkey_editing(hk_editing);
if(keyboard_check_pressed(vk_escape)) hk_editing = noone;
}
}
function drawContent(panel) { drawSettings(panel); }

View file

@ -62,7 +62,6 @@ function fileNameCall(path, onModify, _x = mouse_mx + 8, _y = mouse_my + 8) {
}
function menuItem(name, func, spr = noone, hotkey = noone, toggle = noone, params = {}) { return new MenuItem(name, func, spr, hotkey, toggle, params); }
function menuItemAction(name, func, spr = noone, toggle = noone) { return new MenuItem(name, func, spr, struct_try_get(ACTION_MAP, func, noone), toggle); }
function MenuItem(_name, _func, _spr = noone, _hotkey = noone, _toggle = noone, _params = {}) constructor {
active = true;

View file

@ -11,11 +11,10 @@
}
function __fnInit() {
globalvar CMD_FUNCTIONS, ACTION_MAP, MENU_ITEMS, FUNCTIONS;
globalvar CMD_FUNCTIONS, MENU_ITEMS, FUNCTIONS;
FUNCTIONS = {};
CMD_FUNCTIONS = {};
ACTION_MAP = {};
MENU_ITEMS = {};
__fnInit_Global();
@ -43,13 +42,11 @@ function functionObject(_context, _name, _key, _mod, _action) constructor {
action = _action;
hide = false;
fnName = _context == ""? _name : $"{_context} {_name}";
fnName = string_to_var(fnName);
fnName = string_to_var2(_context, _name);
menu = noone;
FUNCTIONS[$ fnName] = self;
CMD_FUNCTIONS[$ fnName] = { action: _action, args: [] };
ACTION_MAP[$ _action] = [ _context, _name ];
static setArg = function(_args = []) {
CMD_FUNCTIONS[$ fnName] = { action, args: _args };
@ -57,7 +54,7 @@ function functionObject(_context, _name, _key, _mod, _action) constructor {
}
static setMenuAlt = function(_name, _id, _spr = noone, shelf = false) {
menu = menuItemAction(__txt(_name), action, _spr);
menu = menuItem(__txt(_name), action, _spr, [ context, name ]);
if(shelf) menu.setIsShelf();
MENU_ITEMS[$ _id] = menu;
@ -65,7 +62,7 @@ function functionObject(_context, _name, _key, _mod, _action) constructor {
}
static setMenu = function(_id, _spr = noone, shelf = false) {
menu = menuItemAction(__txt(name), action, _spr);
menu = menuItem(__txt(name), action, _spr, [ context, name ]);
if(shelf) menu.setIsShelf();
MENU_ITEMS[$ _id] = menu;

View file

@ -39,7 +39,7 @@
LATEST_VERSION = 11700;
VERSION = 11790;
SAVE_VERSION = 11700;
VERSION_STRING = "1.17.10.005";
VERSION_STRING = "1.17.10.006";
BUILD_NUMBER = 11790;
HOTKEYS = ds_map_create();

View file

@ -165,14 +165,13 @@ function find_hotkey(_context, _name) {
}
function hotkey_editing(hotkey) {
HOTKEY_BLOCK = true;
static vk_list = [
vk_left, vk_right, vk_up, vk_down, vk_space, vk_backspace, vk_tab, vk_home, vk_end, vk_delete, vk_insert,
vk_pageup, vk_pagedown, vk_pause, vk_printscreen,
vk_f1, vk_f2, vk_f3, vk_f4, vk_f5, vk_f6, vk_f7, vk_f8, vk_f9, vk_f10, vk_f11, vk_f12,
];
HOTKEY_BLOCK = true;
var _mod_prs = 0;
if(keyboard_check(vk_control)) _mod_prs |= MOD_KEY.ctrl;
@ -200,6 +199,7 @@ function hotkey_editing(hotkey) {
if(!press) {
var k = ds_map_find_first(global.KEY_STRING_MAP);
var amo = ds_map_size(global.KEY_STRING_MAP);
repeat(amo) {
if(!keyboard_check_pressed(k)) {
k = ds_map_find_next(global.KEY_STRING_MAP, k);

View file

@ -1,4 +1,11 @@
#region key map
enum MOD_KEY {
none = 0,
ctrl = 1 << 0,
shift = 1 << 1,
alt = 1 << 2
}
global.KEY_STRING_MAP = ds_map_create();
global.KEY_STRING_MAP[? 0] = ""
@ -139,13 +146,6 @@
}
#endregion
enum MOD_KEY {
none = 0,
ctrl = 1 << 0,
shift = 1 << 1,
alt = 1 << 2
}
function key_press(_key, _mod = MOD_KEY.none) {
if(WIDGET_CURRENT) return false;
if(_mod == MOD_KEY.none && _key == noone) return false;

View file

@ -0,0 +1,137 @@
function KeyboardDisplayLayout_Key(_key, _vk, _x, _y, _w = 1, _h = 1) constructor {
key = _key;
vk = _vk;
x = _x;
y = _y;
w = _w;
h = _h;
}
function KeyboardDisplay() constructor {
__key = function(_key, _vk, _x, _y, _w = 1, _h = 1) /*=>*/ { return new KeyboardDisplayLayout_Key(_key, _vk, _x, _y, _w, _h); }
keys = [
__key( "Esc", -1, 0, 0),
__key( "F1", vk_f1, 2, 0),
__key( "F2", vk_f2, 3, 0),
__key( "F3", vk_f3, 4, 0),
__key( "F4", vk_f4, 5, 0),
__key( "F5", vk_f5, 6.5, 0),
__key( "F6", vk_f6, 7.5, 0),
__key( "F7", vk_f7, 8.5, 0),
__key( "F8", vk_f8, 9.5, 0),
__key( "F9", vk_f9, 11, 0),
__key( "F10", vk_f10, 12, 0),
__key( "F11", vk_f11, 13, 0),
__key( "F12", vk_f12, 14, 0), //15
__key( "`", 192, 0, 1.1),
__key( "1", ord("1"), 1, 1.1),
__key( "2", ord("2"), 2, 1.1),
__key( "3", ord("3"), 3, 1.1),
__key( "4", ord("4"), 4, 1.1),
__key( "5", ord("5"), 5, 1.1),
__key( "6", ord("6"), 6, 1.1),
__key( "7", ord("7"), 7, 1.1),
__key( "8", ord("8"), 8, 1.1),
__key( "9", ord("9"), 9, 1.1),
__key( "0", ord("0"), 10, 1.1),
__key( "-", 189, 11, 1.1),
__key( "=", 187, 12, 1.1),
__key( "bsp", vk_backspace, 13, 1.1, 2), //15
__key( "Tab", vk_tab, 0, 2.1, 1.5),
__key( "Q", ord("Q"), 1.5, 2.1),
__key( "W", ord("W"), 2.5, 2.1),
__key( "E", ord("E"), 3.5, 2.1),
__key( "R", ord("R"), 4.5, 2.1),
__key( "T", ord("T"), 5.5, 2.1),
__key( "Y", ord("Y"), 6.5, 2.1),
__key( "U", ord("U"), 7.5, 2.1),
__key( "I", ord("I"), 8.5, 2.1),
__key( "O", ord("O"), 9.5, 2.1),
__key( "P", ord("P"), 10.5, 2.1),
__key( "[", 219, 11.5, 2.1),
__key( "]", 221, 12.5, 2.1),
__key( "\\", 220, 13.5, 2.1, 1.5),
__key( "Caps", -1, 0, 3.1, 2),
__key( "A", ord("A"), 2, 3.1),
__key( "S", ord("S"), 3, 3.1),
__key( "D", ord("D"), 4, 3.1),
__key( "F", ord("F"), 5, 3.1),
__key( "G", ord("G"), 6, 3.1),
__key( "H", ord("H"), 7, 3.1),
__key( "J", ord("J"), 8, 3.1),
__key( "K", ord("K"), 9, 3.1),
__key( "L", ord("L"), 10, 3.1),
__key( ";", 186, 11, 3.1),
__key( "'", 222, 12, 3.1),
__key( "Enter", -1, 13, 3.1, 2),
__key( "Shift", vk_shift, 0, 4.1, 2.5),
__key( "Z", ord("Z"), 2.5, 4.1),
__key( "X", ord("X"), 3.5, 4.1),
__key( "C", ord("C"), 4.5, 4.1),
__key( "V", ord("V"), 5.5, 4.1),
__key( "B", ord("B"), 6.5, 4.1),
__key( "N", ord("N"), 7.5, 4.1),
__key( "M", ord("M"), 8.5, 4.1),
__key( ",", 188, 9.5, 4.1),
__key( ".", 190, 10.5, 4.1),
__key( "/", 191, 11.5, 4.1),
__key( "Shift", vk_shift, 12.5, 4.1, 2.5),
__key( "Ctrl", vk_control, 0, 5.1),
__key( "Win", -1, 1, 5.1),
__key( "Alt", vk_alt, 2, 5.1),
__key( "", vk_space, 3, 5.1, 8),
__key( "Alt", vk_alt, 11, 5.1),
__key( "Win", -1, 12, 5.1),
__key( "Fn", -1, 13, 5.1),
__key( "Ctrl", vk_control, 14, 5.1),
//////////////////////////////////////////////////////
__key( "Ins", vk_insert, 15.1, 1.1),
__key( "Home", vk_home, 16.1, 1.1),
__key( "PgUp", vk_pageup, 17.1, 1.1),
__key( "Del", vk_delete, 15.1, 2.1),
__key( "End", vk_end, 16.1, 2.1),
__key( "PgDn", vk_pagedown, 17.1, 2.1),
__key( "Up", vk_up, 16.1, 4.1),
__key( "Left", vk_left, 15.1, 5.1),
__key( "Down", vk_down, 16.1, 5.1),
__key( "Right", vk_right, 17.1, 5.1),
//////////////////////////////////////////////////////
__key( "Num", -1, 18.2, 1.1),
__key( "/", vk_divide, 19.2, 1.1),
__key( "*", vk_multiply, 20.2, 1.1),
__key( "-", vk_subtract, 21.2, 1.1),
__key( "7", vk_numpad7, 18.2, 2.1),
__key( "8", vk_numpad8, 19.2, 2.1),
__key( "9", vk_numpad9, 20.2, 2.1),
__key( "+", vk_add, 21.2, 2.1, 1, 2),
__key( "4", vk_numpad4, 18.2, 3.1),
__key( "5", vk_numpad5, 19.2, 3.1),
__key( "6", vk_numpad6, 20.2, 3.1),
__key( "1", vk_numpad1, 18.2, 4.1),
__key( "2", vk_numpad2, 19.2, 4.1),
__key( "3", vk_numpad3, 20.2, 4.1),
__key( "Enter", -1, 21.2, 4.1, 1, 2),
__key( "0", vk_numpad0, 18.2, 5.1, 2),
__key( ".", vk_decimal, 20.2, 5.1),
];
width = 22.2;
height = 6.1;
}

View file

@ -0,0 +1,13 @@
{
"$GMScript":"",
"%Name":"keyboard_display",
"isCompatibility":false,
"isDnD":false,
"name":"keyboard_display",
"parent":{
"name":"inputs",
"path":"folders/functions/inputs.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View file

@ -160,7 +160,9 @@ function LOAD_AT(path, params = new __loadParams()) { #region
if(struct_has(_load_content, "nodes")) {
try {
var _node_list = _load_content.nodes;
for(var i = 0, n = array_length(_node_list); i < n; i++) {
var _node = nodeLoad(_node_list[i]);
if(_node) array_push(create_list, _node);
}

View file

@ -11,7 +11,7 @@ function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) construc
cached_pos = ds_map_create();
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _path = getInputData(0);
if(_path && struct_has(_path, "drawOverlay")) _path.drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
@ -35,29 +35,29 @@ function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) construc
oy = ny;
}
}
} #endregion
}
static getLineCount = function() { #region
static getLineCount = function() {
var _path = getInputData(0);
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
} #endregion
}
static getSegmentCount = function(ind = 0) { #region
static getSegmentCount = function(ind = 0) {
var _path = getInputData(0);
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
} #endregion
}
static getLength = function(ind = 0) { #region
static getLength = function(ind = 0) {
var _path = getInputData(0);
return struct_has(_path, "getLength")? _path.getLength(ind) : 0;
} #endregion
}
static getAccuLength = function(ind = 0) { #region
static getAccuLength = function(ind = 0) {
var _path = getInputData(0);
return struct_has(_path, "getAccuLength")? _path.getAccuLength(ind) : [];
} #endregion
}
static getPointRatio = function(_rat, ind = 0, out = undefined) { #region
static getPointRatio = function(_rat, ind = 0, out = undefined) {
if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; }
var _cKey = $"{_rat},{ind}";
@ -91,22 +91,22 @@ function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) construc
cached_pos[? _cKey] = out.clone();
return out;
} #endregion
}
static getPointDistance = function(_dist, ind = 0, out = undefined) { return getPointRatio(_dist / getLength(), ind, out); }
static getBoundary = function(ind = 0) { #region
static getBoundary = function(ind = 0) {
var _path = getInputData(0);
return struct_has(_path, "getBoundary")? _path.getBoundary(ind) : new BoundingBox( 0, 0, 1, 1 );
} #endregion
}
static update = function() { #region
static update = function() {
ds_map_clear(cached_pos);
outputs[0].setValue(self);
} #endregion
}
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { #region
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
var bbox = drawGetBbox(xx, yy, _s);
draw_sprite_fit(s_node_path_shift, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
} #endregion
}
}

View file

@ -11,6 +11,7 @@ function nodeValueSeed(_node, _type) {
}
function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constructor {
static DISPLAY_DATA_KEYS = [ "linked", "angle_display", "bone_id", "unit", "atlas_crop" ];
#region ---- main ----
@ -102,7 +103,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
#endregion
#region ---- value ----
def_val = variable_clone(_value);
def_val = array_clone(_value);
def_length = is_array(def_val)? array_length(def_val) : 0;
def_depth = array_get_depth(def_val);
unit = new nodeValueUnit(self);
@ -537,7 +539,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
return self;
}
static resetDisplay = function() { #region //////////////////// RESET DISPLAY ////////////////////
static resetDisplay = function() {
editWidget = noone;
switch(display_type) {
case VALUE_DISPLAY.button : #region
@ -807,7 +810,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
extract_node = "Node_Boolean";
break; #endregion
case VALUE_TYPE.color : #region
case VALUE_TYPE.color :
switch(display_type) {
case VALUE_DISPLAY._default :
editWidget = new buttonColor(function(color) { return setValueInspector(color); } );
@ -822,15 +825,15 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
extract_node = "Node_Palette";
break;
}
break; #endregion
break;
case VALUE_TYPE.gradient : #region
case VALUE_TYPE.gradient :
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
extract_node = "Node_Gradient_Out";
break; #endregion
break;
case VALUE_TYPE.path : #region
case VALUE_TYPE.path :
switch(display_type) {
case VALUE_DISPLAY.path_array :
editWidget = new pathArrayBox(self, display_data.filter, function(path) { setValueInspector(path); } );
@ -868,14 +871,14 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
editWidget = new fontScrollBox( function(val) { return setValueInspector(FONT_INTERNAL[val]); } );
break;
}
break; #endregion
break;
case VALUE_TYPE.curve : #region
case VALUE_TYPE.curve :
display_type = VALUE_DISPLAY.curve;
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
break; #endregion
break;
case VALUE_TYPE.text : #region
case VALUE_TYPE.text :
switch(display_type) {
case VALUE_DISPLAY._default :
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
@ -922,9 +925,9 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
editWidget = new textArrayBox(function() { return animator.values[0].value; }, display_data.data, function() { node.doUpdate(); });
break;
}
break; #endregion
break;
case VALUE_TYPE.d3Material : #region
case VALUE_TYPE.d3Material :
editWidget = new materialBox(function(ind) {
var res = setValueInspector(ind);
node.triggerRender();
@ -934,19 +937,19 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
if(!struct_has(display_data, "atlas")) display_data.atlas = true;
show_in_inspector = true;
extract_node = "Node_Canvas";
break; #endregion
break;
case VALUE_TYPE.surface : #region
case VALUE_TYPE.surface :
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
if(!struct_has(display_data, "atlas")) display_data.atlas = true;
show_in_inspector = true;
extract_node = "Node_Canvas";
break; #endregion
break;
case VALUE_TYPE.pathnode : #region
case VALUE_TYPE.pathnode :
extract_node = "Node_Path";
break; #endregion
break;
}
if(is_struct(display_data) && struct_has(display_data, "side_button") && editWidget.side_button == noone)
@ -961,7 +964,9 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
}
setDropKey();
} resetDisplay(); #endregion
}
resetDisplay();
/////============ RENDER ============
@ -2276,6 +2281,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
static cleanUp = function() {}
static toString = function() { return (connect_type == JUNCTION_CONNECT.input? "Input" : "Output") + $" junction {index} of [{name}]: {node}"; }
}
/////========== FUNCTIONS ==========

View file

@ -9,6 +9,9 @@ function NodeValue_Color(_name, _node, _value, _tooltip = "") : NodeValue(_name,
var val = __curr_get_val[0];
var nod = __curr_get_val[1];
return val;
if(nod.type == VALUE_TYPE.integer || nod.type == VALUE_TYPE.float)
return val >= 1? cola(val) : make_color_rgb(val * 255, val * 255, val * 255);
}

View file

@ -1,4 +1,6 @@
#region // function calls
#region function calls
#macro PANEL_GRAPH_PROJECT_CHECK if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
function panel_graph_add_node() { CALL("graph_add_node"); PANEL_GRAPH.callAddDialog(); }
function panel_graph_focus_content() { CALL("graph_focus_content"); PANEL_GRAPH.fullView(); }
function panel_graph_preview_focus() { CALL("graph_preview_focus"); PANEL_GRAPH.setCurrentPreview(); }
@ -10,13 +12,14 @@
function panel_graph_add_vec3() { CALL("graph_add_vec3"); PANEL_GRAPH.createNodeHotkey("Node_Vector3"); }
function panel_graph_add_vec4() { CALL("graph_add_vec4"); PANEL_GRAPH.createNodeHotkey("Node_Vector4"); }
function panel_graph_add_display() { CALL("graph_add_disp"); PANEL_GRAPH.createNodeHotkey("Node_Display_Text"); }
function panel_graph_add_math_add() { CALL("graph_add_math_add"); PANEL_GRAPH.createNodeHotkey(Node_create_Math, { query: "add" }); }
function panel_graph_select_all() { CALL("graph_select_all"); PANEL_GRAPH.nodes_selecting = PANEL_GRAPH.nodes_list; }
function panel_graph_toggle_grid() { CALL("graph_toggle_grid"); PANEL_GRAPH.display_parameter.show_grid = !PANEL_GRAPH.display_parameter.show_grid; }
function panel_graph_export() { CALL("graph_export"); PANEL_GRAPH.setCurrentExport(); }
function panel_graph_toggle_dimension() { CALL("graph_toggle_dimension"); PANEL_GRAPH.display_parameter.show_dimension = !PANEL_GRAPH.display_parameter.show_dimension; }
function panel_graph_toggle_compute() { CALL("graph_toggle_compute"); PANEL_GRAPH.display_parameter.show_compute = !PANEL_GRAPH.display_parameter.show_compute; }
function panel_graph_toggle_control() { CALL("graph_toggle_control"); PANEL_GRAPH.display_parameter.show_control = !PANEL_GRAPH.display_parameter.show_control; }
function panel_graph_toggle_avoid_label() { CALL("graph_toggle_avoid_label"); PANEL_GRAPH.display_parameter.avoid_label = !PANEL_GRAPH.display_parameter.avoid_label; }
function panel_graph_add_transform() { CALL("graph_add_transform"); PANEL_GRAPH.doTransform(); }
function panel_graph_blend() { CALL("graph_blend"); PANEL_GRAPH.doBlend(); }
@ -24,6 +27,7 @@
function panel_graph_array() { CALL("graph_array"); PANEL_GRAPH.doArray(); }
function panel_graph_group() { CALL("graph_group"); PANEL_GRAPH.doGroup(); }
function panel_graph_ungroup() { CALL("graph_ungroup"); PANEL_GRAPH.doUngroup(); }
function panel_graph_export() { CALL("graph_export"); PANEL_GRAPH.setCurrentExport(); }
function panel_graph_canvas_copy() { CALL("graph_canvas_copy"); PANEL_GRAPH.setCurrentCanvas(); }
function panel_graph_canvas_blend() { CALL("graph_canvas_blend"); PANEL_GRAPH.setCurrentCanvasBlend(); }
@ -39,8 +43,8 @@
function panel_graph_search() { CALL("graph_search"); PANEL_GRAPH.toggleSearch(); }
function panel_graph_toggle_minimap() { CALL("graph_toggle_minimap"); PANEL_GRAPH.minimap_show = !PANEL_GRAPH.minimap_show; }
function panel_graph_pan() { CALL("graph_pan"); if(PANEL_GRAPH.node_hovering || PANEL_GRAPH.value_focus) return; PANEL_GRAPH.graph_dragging_key = true;}
function panel_graph_zoom() { CALL("graph_zoom"); if(PANEL_GRAPH.node_hovering || PANEL_GRAPH.value_focus) return; PANEL_GRAPH.graph_zooming_key = true;}
function panel_graph_pan() { CALL("graph_pan"); if(PANEL_GRAPH.node_hovering || PANEL_GRAPH.value_focus) return; PANEL_GRAPH.graph_dragging_key = true; }
function panel_graph_zoom() { CALL("graph_zoom"); if(PANEL_GRAPH.node_hovering || PANEL_GRAPH.value_focus) return; PANEL_GRAPH.graph_zooming_key = true; }
function panel_graph_send_to_preview() { CALL("graph_send_to_preview"); PANEL_GRAPH.send_to_preview(); }
function panel_graph_preview_window() { CALL("graph_preview_window"); create_preview_window(PANEL_GRAPH.getFocusingNode()); }
@ -59,6 +63,9 @@
function panel_graph_doPasteProp() { CALL("graph_doPasteProp"); PANEL_GRAPH.doPasteProp(); }
function panel_graph_createTunnel() { CALL("graph_createTunnel"); PANEL_GRAPH.createTunnel(); }
function panel_graph_grid_snap() { CALL("graph_grid_snap"); PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.snap = !PANEL_GRAPH.project.graphGrid.snap; }
function panel_graph_show_origin() { CALL("graph_grid_show_origin"); PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.show_origin = !PANEL_GRAPH.project.graphGrid.show_origin; }
function __fnInit_Graph() {
registerFunction("Graph", "Add Node", "A", MOD_KEY.none, panel_graph_add_node ).setMenu("graph_add_node")
registerFunction("Graph", "Focus Content", "F", MOD_KEY.none, panel_graph_focus_content ).setMenu("graph_focus_content")
@ -75,6 +82,10 @@
registerFunction("Graph", "Select All", "A", MOD_KEY.ctrl, panel_graph_select_all ).setMenu("graph_select_all")
registerFunction("Graph", "Toggle Grid", "G", MOD_KEY.none, panel_graph_toggle_grid ).setMenu("graph_toggle_grid")
registerFunction("Graph", "Toggle Dimension", "", MOD_KEY.none, panel_graph_toggle_dimension ).setMenu("graph_toggle_dimension")
registerFunction("Graph", "Toggle Compute", "", MOD_KEY.none, panel_graph_toggle_compute ).setMenu("graph_toggle_compute")
registerFunction("Graph", "Toggle Control", "", MOD_KEY.none, panel_graph_toggle_control ).setMenu("graph_toggle_control")
registerFunction("Graph", "Toggle Avoid Label", "", MOD_KEY.none, panel_graph_toggle_avoid_label ).setMenu("graph_toggle_avoid_label")
registerFunction("Graph", "Blend", "B", MOD_KEY.ctrl, panel_graph_blend ).setMenu("graph_blend")
registerFunction("Graph", "Compose", "B", MOD_KEY.ctrl | MOD_KEY.shift, panel_graph_compose ).setMenu("graph_compose")
@ -119,11 +130,19 @@
registerFunction("Graph", "Paste Value", "", MOD_KEY.none, panel_graph_doPasteProp ).setMenu("graph_paste_value")
registerFunction("Graph", "Create Tunnel", "", MOD_KEY.none, panel_graph_createTunnel ).setMenu("graph_create_tunnel")
registerFunction("Graph", "Toggle Grid Snap", "", MOD_KEY.none, panel_graph_grid_snap ).setMenu("graph_grid_snap")
registerFunction("Graph", "Toggle Show Origin", "", MOD_KEY.none, panel_graph_show_origin ).setMenu("graph_show_origin")
if(!DEMO) {
registerFunction("Graph", "Export Selected", "E", MOD_KEY.ctrl, panel_graph_export ).setMenu("graph_export_selected")
registerFunction("Graph", "Export Hover", "", MOD_KEY.none, panel_graph_send_to_export ).setMenu("graph_export_hover")
registerFunction("Graph", "Export Selected Node", "E", MOD_KEY.ctrl, panel_graph_export ).setMenu("graph_export_selected")
registerFunction("Graph", "Export Hovering Node", "", MOD_KEY.none, panel_graph_send_to_export ).setMenu("graph_export_hover")
}
registerFunction("Graph", "Export As Image", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Graph_Export_Image(PANEL_GRAPH)) }).setMenu("graph_export_image")
registerFunction("Graph", "Connection Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Graph_Connection_Setting()) }).setMenu("graph_connection_settings")
registerFunction("Graph", "Grid Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Graph_Grid_Setting()) }).setMenu("graph_grid_settings")
registerFunction("Graph", "View Settiings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Graph_View_Setting(PANEL_GRAPH, PANEL_GRAPH.display_parameter)) }).setMenu("graph_view_settings")
__fnGroupInit_Graph()
}
@ -389,8 +408,10 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
context_framing = false;
context_frame_progress = 0;
context_frame_direct = 0;
context_frame_sx = 0; context_frame_ex = 0;
context_frame_sy = 0; context_frame_ey = 0;
context_frame_sx = 0;
context_frame_ex = 0;
context_frame_sy = 0;
context_frame_ey = 0;
#endregion
#region // ---- search ----
@ -453,44 +474,48 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
function initSize() { toCenterNode(); }
#region // ++++ toolbars ++++
tooltip_center = new tooltipHotkey(__txtx("panel_graph_center_to_nodes", "Center to nodes"), "Graph", "Focus content");
tooltip_search = new tooltipHotkey(__txt("Search"), "Graph", "Search");
tooltip_minimap = new tooltipHotkey(__txtx("panel_graph_toggle_minimap", "Toggle minimap"), "Graph", "Toggle Minimap");
toolbars_general = [
[
THEME.icon_preview_export,
function() /*=>*/ {return 0}, function() /*=>*/ {return __txtx("panel_graph_export_image", "Export graph as image")},
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txtx("panel_graph_export_image", "Export graph as image"), "Graph", "Export As Image")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Graph_Export_Image(self)); }
],
[
THEME.search_24,
function() /*=>*/ {return 0}, function() /*=>*/ {return tooltip_search},
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txt("Search"), "Graph", "Search")},
function(param) /*=>*/ { toggleSearch(); }
],
[
THEME.icon_center_canvas,
function() /*=>*/ {return 0}, function() /*=>*/ {return tooltip_center},
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txtx("panel_graph_center_to_nodes", "Center to nodes"), "Graph", "Focus content")},
function(param) /*=>*/ { toCenterNode(); }
],
[
THEME.icon_minimap,
function() /*=>*/ {return minimap_show}, function() /*=>*/ {return tooltip_minimap},
function() /*=>*/ {return minimap_show},
function() /*=>*/ {return new tooltipHotkey(__txtx("panel_graph_toggle_minimap", "Toggle minimap"), "Graph", "Toggle Minimap")},
function(param) /*=>*/ { minimap_show = !minimap_show; }
],
[
THEME.icon_curve_connection,
function() /*=>*/ {return PREFERENCES.curve_connection_line}, function() /*=>*/ {return __txtx("panel_graph_connection_line", "Connection render settings")},
function() /*=>*/ {return PREFERENCES.curve_connection_line},
function() /*=>*/ {return new tooltipHotkey(__txtx("panel_graph_connection_line", "Connection render settings"), "Graph", "Connection Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Graph_Connection_Setting(), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
[
THEME.icon_grid_setting,
function() /*=>*/ {return 0}, function() /*=>*/ {return __txtx("grid_title", "Grid settings")},
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txtx("grid_title", "Grid settings"), "Graph", "Grid Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Graph_Grid_Setting(), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
[
THEME.icon_visibility,
function() /*=>*/ {return 0}, function() /*=>*/ {return __txtx("graph_visibility_title", "Visibility settings")},
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txtx("graph_visibility_title", "Visibility settings"), "Graph", "View Settiings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Graph_View_Setting(self, display_parameter), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
];

View file

@ -1,9 +1,6 @@
function Panel_Graph_Connection_Setting() : Panel_Linear_Setting() constructor {
title = __txtx("graph_connection_settings", "Connection Settings");
w = ui(400);
#region data
properties = [
new __Panel_Linear_Setting_Item_Preference(
__txt("Type"),
@ -44,5 +41,4 @@ function Panel_Graph_Connection_Setting() : Panel_Linear_Setting() constructor {
];
setHeight();
#endregion
}

View file

@ -41,43 +41,24 @@ function Panel_Graph_Export_Image(targetPanel) : PanelContent() constructor {
widgets = [];
widgets[0] = [ "Nodes", new scrollBox(nodes_select,
function(val) {
function(val) /*=>*/ {
sel = val;
nodeList = val? targetPanel.nodes_selecting : targetPanel.nodes_list;
refresh();
}, false),
function() { return nodes_select[sel] } ];
widgets[1] = [ "Scale", new textBox(TEXTBOX_INPUT.number, function(val) { settings.scale = val; refresh(); }),
function() { return settings.scale } ];
widgets[2] = [ "Padding", new textBox(TEXTBOX_INPUT.number, function(val) { settings.padding = val; refresh(); }),
function() { return settings.padding } ];
widgets[3] = [ "Solid Background", new checkBox(function() { settings.bgEnable = !settings.bgEnable; refresh(); }),
function() { return settings.bgEnable } ];
widgets[4] = [ "Background Color", new buttonColor(function(val) { settings.bgColor = val; refresh(); }),
function() { return settings.bgColor } ];
widgets[5] = [ "Render Grid", new checkBox(function() { settings.gridEnable = !settings.gridEnable; refresh(); }),
function() { return settings.gridEnable } ];
widgets[6] = [ "Grid Color", new buttonColor(function(val) { settings.gridColor = val; refresh(); }),
function() { return settings.gridColor } ];
widgets[7] = [ "Grid Opacity", new textBox(TEXTBOX_INPUT.number, function(val) { settings.gridAlpha = val; refresh(); }),
function() { return settings.gridAlpha } ];
widgets[8] = [ "Border", new textBox(TEXTBOX_INPUT.number, function(val) { settings.borderPad = val; refresh(); }),
function() { return settings.borderPad } ];
widgets[9] = [ "Border Color", new buttonColor(function(val) { settings.borderColor = val; refresh(); }),
function() { return settings.borderColor } ];
widgets[10] = [ "Border Opacity", new textBox(TEXTBOX_INPUT.number, function(val) { settings.borderAlpha = val; refresh(); }),
function() { return settings.borderAlpha } ];
function() /*=>*/ {return nodes_select[sel]}
];
widgets[1] = [ "Scale", new textBox(TEXTBOX_INPUT.number, function(val) /*=>*/ { settings.scale = val; refresh(); }), function() /*=>*/ {return settings.scale} ];
widgets[2] = [ "Padding", new textBox(TEXTBOX_INPUT.number, function(val) /*=>*/ { settings.padding = val; refresh(); }), function() /*=>*/ {return settings.padding} ];
widgets[3] = [ "Solid Background", new checkBox( function() /*=>*/ { settings.bgEnable = !settings.bgEnable; refresh(); }), function() /*=>*/ {return settings.bgEnable} ];
widgets[4] = [ "Background Color", new buttonColor( function(val) /*=>*/ { settings.bgColor = val; refresh(); }), function() /*=>*/ {return settings.bgColor} ];
widgets[5] = [ "Render Grid", new checkBox( function() /*=>*/ { settings.gridEnable = !settings.gridEnable; refresh(); }), function() /*=>*/ {return settings.gridEnable} ];
widgets[6] = [ "Grid Color", new buttonColor( function(val) /*=>*/ { settings.gridColor = val; refresh(); }), function() /*=>*/ {return settings.gridColor} ];
widgets[7] = [ "Grid Opacity", new textBox(TEXTBOX_INPUT.number, function(val) /*=>*/ { settings.gridAlpha = val; refresh(); }), function() /*=>*/ {return settings.gridAlpha} ];
widgets[8] = [ "Border", new textBox(TEXTBOX_INPUT.number, function(val) /*=>*/ { settings.borderPad = val; refresh(); }), function() /*=>*/ {return settings.borderPad} ];
widgets[9] = [ "Border Color", new buttonColor( function(val) /*=>*/ { settings.borderColor = val; refresh(); }), function() /*=>*/ {return settings.borderColor} ];
widgets[10] = [ "Border Opacity", new textBox(TEXTBOX_INPUT.number, function(val) /*=>*/ { settings.borderAlpha = val; refresh(); }), function() /*=>*/ {return settings.borderAlpha} ];
b_export = button(function() {
if(!is_surface(surface)) return;

View file

@ -1,73 +1,53 @@
function Panel_Graph_Grid_Setting() : Panel_Linear_Setting() constructor {
title = __txtx("graph_grid_settings", "Grid Settings");
w = ui(380);
#region data
properties = [
new __Panel_Linear_Setting_Item(
__txtx("grid_snap", "Snap to grid"),
new checkBox(function() {
if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
PANEL_GRAPH.project.graphGrid.snap = !PANEL_GRAPH.project.graphGrid.snap;
}),
function() { return PANEL_GRAPH.project.graphGrid.snap; },
function(val) { PANEL_GRAPH.project.graphGrid.snap = val; },
new checkBox(function() /*=>*/ { PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.snap = !PANEL_GRAPH.project.graphGrid.snap; }),
function() /*=>*/ {return PANEL_GRAPH.project.graphGrid.snap},
function(val) /*=>*/ { PANEL_GRAPH.project.graphGrid.snap = val; },
true,
["Graph", "Toggle Grid Snap"]
),
new __Panel_Linear_Setting_Item(
__txtx("grid_size", "Grid size"),
new textBox(TEXTBOX_INPUT.number, function(str) {
if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
PANEL_GRAPH.project.graphGrid.size = max(1, real(str));
}),
function() { return PANEL_GRAPH.project.graphGrid.size; },
function(val) { PANEL_GRAPH.project.graphGrid.size = val; },
new textBox(TEXTBOX_INPUT.number, function(str) /*=>*/ { PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.size = max(1, real(str)); }),
function() /*=>*/ {return PANEL_GRAPH.project.graphGrid.size},
function(val) /*=>*/ { PANEL_GRAPH.project.graphGrid.size = val; },
16,
),
new __Panel_Linear_Setting_Item(
__txtx("project_graphGrid_opacity", "Grid opacity"),
slider(0, 1, .05, function(str) {
if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
PANEL_GRAPH.project.graphGrid.opacity = clamp(real(str), 0, 1);
}),
function() { return PANEL_GRAPH.project.graphGrid.opacity; },
function(val) { PANEL_GRAPH.project.graphGrid.opacity = val; },
slider(0, 1, .05, function(str) /*=>*/ { PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.opacity = clamp(real(str), 0, 1); }),
function() /*=>*/ {return PANEL_GRAPH.project.graphGrid.opacity},
function(val) /*=>*/ { PANEL_GRAPH.project.graphGrid.opacity = val; },
0.05,
),
new __Panel_Linear_Setting_Item(
__txtx("project_graphGrid_color", "Grid color"),
new buttonColor(function(color) {
if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
PANEL_GRAPH.project.graphGrid.color = color;
}, self),
function() { return PANEL_GRAPH.project.graphGrid.color; },
function(val) { PANEL_GRAPH.project.graphGrid.color = val; },
new buttonColor(function(color) /*=>*/ { PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.color = color; }, self),
function() /*=>*/ {return PANEL_GRAPH.project.graphGrid.color},
function(val) /*=>*/ { PANEL_GRAPH.project.graphGrid.color = val; },
c_white,
),
new __Panel_Linear_Setting_Item(
__txtx("grid_show_origin", "Show origin"),
new checkBox(function() {
if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
PANEL_GRAPH.project.graphGrid.show_origin = !PANEL_GRAPH.project.graphGrid.show_origin;
}),
function() { return PANEL_GRAPH.project.graphGrid.show_origin; },
function(val) { PANEL_GRAPH.project.graphGrid.show_origin = val; },
new checkBox(function() /*=>*/ { PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.show_origin = !PANEL_GRAPH.project.graphGrid.show_origin; }),
function() /*=>*/ {return PANEL_GRAPH.project.graphGrid.show_origin},
function(val) /*=>*/ { PANEL_GRAPH.project.graphGrid.show_origin = val; },
false,
["Graph", "Toggle Show Origin"]
),
new __Panel_Linear_Setting_Item(
__txtx("grid_highlight_every", "Highlight period"),
new textBox(TEXTBOX_INPUT.number, function(str) {
if(PANEL_GRAPH.project == noone || !PANEL_GRAPH.project.active) return;
PANEL_GRAPH.project.graphGrid.highlight = max(1, round(real(str)));
}),
function() { return PANEL_GRAPH.project.graphGrid.highlight; },
function(val) { PANEL_GRAPH.project.graphGrid.highlight = val; },
new textBox(TEXTBOX_INPUT.number, function(str) /*=>*/ { PANEL_GRAPH_PROJECT_CHECK PANEL_GRAPH.project.graphGrid.highlight = max(1, round(real(str))); }),
function() /*=>*/ {return PANEL_GRAPH.project.graphGrid.highlight},
function(val) /*=>*/ { PANEL_GRAPH.project.graphGrid.highlight = val; },
12,
),
];
setHeight();
#endregion
}

View file

@ -1,66 +1,68 @@
function Panel_Graph_View_Setting(graphPanel, display) : Panel_Linear_Setting() constructor {
title = __txtx("graph_view_settings", "View Settings");
w = ui(380);
self.graphPanel = graphPanel;
display_parameter = display;
#region data
properties = [
new __Panel_Linear_Setting_Item(
__txt("Grid"),
new checkBox(function() { display_parameter.show_grid = !display_parameter.show_grid; }),
function() { return display_parameter.show_grid },
function(val) { display_parameter.show_grid = val; },
new checkBox(function() /*=>*/ { display_parameter.show_grid = !display_parameter.show_grid; }),
function() /*=>*/ {return display_parameter.show_grid},
function(val) /*=>*/ { display_parameter.show_grid = val; },
true,
[ "Graph", "Toggle Grid" ],
),
new __Panel_Linear_Setting_Item(
__txtx("graph_visibility_dim", "Dimension"),
new checkBox(function() { display_parameter.show_dimension = !display_parameter.show_dimension; }),
function() { return display_parameter.show_dimension },
function(val) { display_parameter.show_dimension = val; },
new checkBox(function() /*=>*/ { display_parameter.show_dimension = !display_parameter.show_dimension; }),
function() /*=>*/ {return display_parameter.show_dimension},
function(val) /*=>*/ { display_parameter.show_dimension = val; },
true,
[ "Graph", "Toggle Dimension" ],
),
new __Panel_Linear_Setting_Item(
__txtx("graph_visibility_compute", "Compute Time"),
new checkBox(function() { display_parameter.show_compute = !display_parameter.show_compute; }),
function() { return display_parameter.show_compute },
function(val) { display_parameter.show_compute = val; },
new checkBox(function() /*=>*/ { display_parameter.show_compute = !display_parameter.show_compute; }),
function() /*=>*/ {return display_parameter.show_compute},
function(val) /*=>*/ { display_parameter.show_compute = val; },
true,
[ "Graph", "Toggle Compute" ],
),
new __Panel_Linear_Setting_Item(
__txtx("graph_visibility_avoid_label", "Avoid Label"),
new checkBox(function() { display_parameter.avoid_label = !display_parameter.avoid_label; }),
function() { return display_parameter.avoid_label },
function(val) { display_parameter.avoid_label = val; },
new checkBox(function() /*=>*/ { display_parameter.avoid_label = !display_parameter.avoid_label; }),
function() /*=>*/ {return display_parameter.avoid_label},
function(val) /*=>*/ { display_parameter.avoid_label = val; },
true,
[ "Graph", "Toggle Avoid Label" ],
),
new __Panel_Linear_Setting_Item(
__txtx("graph_visibility_slideshow", "Show Controller"),
new checkBox(function() { display_parameter.show_control = !display_parameter.show_control; }),
function() { return display_parameter.show_control },
function(val) { display_parameter.show_control = val; },
new checkBox(function() /*=>*/ { display_parameter.show_control = !display_parameter.show_control; }),
function() /*=>*/ {return display_parameter.show_control},
function(val) /*=>*/ { display_parameter.show_control = val; },
false,
[ "Graph", "Toggle Control" ],
),
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
new __Panel_Linear_Setting_Item(
__txtx("graph_visibility_preview_scale", "Preview Scale"),
slider(50, 100, 1, function(val) { display_parameter.preview_scale = val; }),
function() { return display_parameter.preview_scale },
function(val) { display_parameter.preview_scale = val; },
slider(50, 100, 1, function(val) /*=>*/ { display_parameter.preview_scale = val; }),
function() /*=>*/ {return display_parameter.preview_scale},
function(val) /*=>*/ { display_parameter.preview_scale = val; },
100,
),
new __Panel_Linear_Setting_Item(
__txt("View Control"),
new buttonGroup([ "None", "Left", "Right" ], function(val) { graphPanel.show_view_control = val; }),
function() { return graphPanel.show_view_control },
function(val) { graphPanel.show_view_control = val; },
new buttonGroup([ "None", "Left", "Right" ], function(val) /*=>*/ { graphPanel.show_view_control = val; }),
function() /*=>*/ {return graphPanel.show_view_control},
function(val) /*=>*/ { graphPanel.show_view_control = val; },
1,
),
];
setHeight();
#endregion
}

View file

@ -107,7 +107,6 @@ function Panel_Menu() : PanelContent() constructor {
menu_file_nondemo = [
MENU_ITEMS.new_file,
MENU_ITEMS.open,
// .setShiftMenu(menuItemAction(__txt("Open in safe mode") + "...", LOAD_SAFE, THEME.noti_icon_file_load)),
MENU_ITEMS.save,
MENU_ITEMS.save_as,

View file

@ -26,7 +26,7 @@ function Panel_Nodes() : PanelContent() constructor {
var node = _arr[i];
var name = node.renamed? node.display_name : node.name;
if(string_lower(search_string) != "" && string_lower(string_pos(search_string, name)) == 0)
if(string_lower(search_string) != "" && string_pos(string_lower(search_string), string_lower(name)) == 0)
continue;
var isGroup = struct_has(node, "nodes");

View file

@ -32,6 +32,18 @@
function panel_preview_copy_color() { CALL("preview_copy_color"); PANEL_PREVIEW.copy_color(); }
function panel_preview_copy_color_hex() { CALL("preview_copy_color_hex"); PANEL_PREVIEW.copy_color_hex(); }
function panel_preview_toggle_grid_pixel() { CALL("preview_toggle_grid_pixel"); PROJECT.previewGrid.pixel = !PROJECT.previewGrid.pixel; }
function panel_preview_toggle_grid_visible() { CALL("preview_toggle_grid_visible"); PROJECT.previewGrid.show = !PROJECT.previewGrid.show; }
function panel_preview_toggle_grid_snap() { CALL("preview_toggle_grid_snap"); PROJECT.previewGrid.snap = !PROJECT.previewGrid.snap; }
function panel_preview_onion_enabled() { CALL("preview_onion_enabled"); PROJECT.onion_skin.enabled = !PROJECT.onion_skin.enabled; }
function panel_preview_onion_on_top() { CALL("preview_onion_on_top"); PROJECT.onion_skin.on_top = !PROJECT.onion_skin.on_top; }
function panel_preview_show_info() { CALL("preview_show_info"); PANEL_PREVIEW.show_info = !PANEL_PREVIEW.show_info; }
function panel_preview_toggle_reset_view() { CALL("preview_toggle_reset_view"); PANEL_PREVIEW.toggle_reset_view(); }
function panel_preview_toggle_split_view() { CALL("preview_toggle_split_view"); PANEL_PREVIEW.toggle_split_view(); }
function panel_preview_toggle_lock() { CALL("preview_toggle_lock"); PANEL_PREVIEW.toggle_lock(); }
function __fnInit_Preview() {
registerFunction("Preview", "Focus content", "F", MOD_KEY.none, panel_preview_focus_content ).setMenu("preview_focus_content", THEME.icon_center_canvas)
registerFunction("Preview", "Save current frame", "S", MOD_KEY.shift, panel_preview_save_current_frame ).setMenu("preview_save_current_frame")
@ -68,6 +80,31 @@
registerFunction("Preview", "Copy Color", "", MOD_KEY.none, panel_preview_copy_color ).setMenu("preview_copy_color")
registerFunction("Preview", "Copy Color Hex", "", MOD_KEY.none, panel_preview_copy_color_hex ).setMenu("preview_copy_color_hex")
registerFunction("Preview", "Toggle Pixel Grid", "", MOD_KEY.none, panel_preview_toggle_grid_pixel ).setMenu("preview_toggle_grid_pixel")
registerFunction("Preview", "Toggle Grid", "", MOD_KEY.none, panel_preview_toggle_grid_visible ).setMenu("preview_toggle_grid_visible")
registerFunction("Preview", "Toggle Snap to Grid", "", MOD_KEY.none, panel_preview_toggle_grid_snap ).setMenu("preview_toggle_grid_snap")
registerFunction("Preview", "Toggle Onion Skin", "", MOD_KEY.none, panel_preview_onion_enabled ).setMenu("preview_onion_enabled")
registerFunction("Preview", "Toggle Onion Skin view", "", MOD_KEY.none, panel_preview_onion_on_top ).setMenu("preview_onion_on_top")
registerFunction("Preview", "Toggle Show Info", "", MOD_KEY.none, panel_preview_show_info ).setMenu("preview_show_info")
registerFunction("Preview", "Toggle Reset View", "", MOD_KEY.none, panel_preview_toggle_reset_view ).setMenu("preview_toggle_reset_view")
registerFunction("Preview", "Toggle Split View", "", MOD_KEY.none, panel_preview_toggle_split_view ).setMenu("preview_toggle_split_view")
registerFunction("Preview", "Toggle Lock", "", MOD_KEY.none, panel_preview_toggle_lock ).setMenu("preview_toggle_lock")
registerFunction("Preview", "Tiling Settings", "", MOD_KEY.none, function(_dat) /*=>*/ { submenuCall(_dat, [
MENU_ITEMS.preview_set_tile_off,
MENU_ITEMS.preview_set_tile_horizontal,
MENU_ITEMS.preview_set_tile_vertical,
MENU_ITEMS.preview_set_tile_both,
]) }).setMenu("preview_tiling_settings")
registerFunction("Preview", "Grid Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Preview_Grid_Setting()) }).setMenu("preview_grid_settings")
registerFunction("Preview", "Onion Skin Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Preview_Onion_Setting()) }).setMenu("preview_onion_settings")
registerFunction("Preview", "3D View Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Preview_3D_Setting(PANEL_PREVIEW)) }).setMenu("preview_3D_settings")
registerFunction("Preview", "3D SDF View Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Preview_3D_SDF_Setting(PANEL_PREVIEW)) }).setMenu("preview_3D_SDF_settings")
registerFunction("Preview", "3D Snap Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Preview_Snap_Setting(PANEL_PREVIEW)) }).setMenu("preview_snap_settings")
registerFunction("Preview", "View Settings", "", MOD_KEY.none, function() /*=>*/ { dialogPanelCall(new Panel_Preview_View_Setting(PANEL_PREVIEW)) }).setMenu("preview_view_settings")
__fnGroupInit_Preview();
}
@ -90,11 +127,8 @@ function Panel_Preview() : PanelContent() constructor {
last_focus = noone;
#region ---- canvas control & sample ----
function initSize() {
canvas_x = w / 2;
canvas_y = h / 2;
}
run_in(1, function() { initSize() });
function initSize() { canvas_x = w / 2; canvas_y = h / 2; }
run_in(1, function() /*=>*/ { initSize() });
canvas_x = 0;
canvas_y = 0;
@ -102,9 +136,7 @@ function Panel_Preview() : PanelContent() constructor {
canvas_w = ui(128);
canvas_h = ui(128);
canvas_a = 0;
canvas_bg = -1;
do_fullView = false;
canvas_hover = true;
@ -151,8 +183,6 @@ function Panel_Preview() : PanelContent() constructor {
mouse_on_preview = 0;
_mouse_on_preview = 0;
resetViewOnDoubleClick = true;
splitView = 0;
splitPosition = 0.5;
splitSelection = 0;
@ -162,13 +192,14 @@ function Panel_Preview() : PanelContent() constructor {
splitViewMouse = 0;
tileMode = 0;
bg_color = COLORS.panel_bg_clear;
mouse_pos_string = "";
show_info = true;
show_view_control = 1;
resetViewOnDoubleClick = true;
#endregion
#region ---- tool ----
@ -253,14 +284,14 @@ function Panel_Preview() : PanelContent() constructor {
d3_scene_light_enabled = true;
d3_scene_light0 = new __3dLightDirectional();
d3_scene_light0.transform.position.set(-1, -2, 3);
d3_scene_light0.color = $FFFFFF;
d3_scene_light0.shadow_active = false;
d3_scene_light0.shadow_map_scale = 4;
d3_scene_light0.transform.position.set(-1, -2, 3);
d3_scene_light1 = new __3dLightDirectional();
d3_scene_light1.transform.position.set(1, 2, -3);
d3_scene_light1.color = $505050;
d3_scene_light1.transform.position.set(1, 2, -3);
#endregion
#region tool
@ -273,52 +304,57 @@ function Panel_Preview() : PanelContent() constructor {
tb_framerate = new textBox(TEXTBOX_INPUT.number, function(val) { preview_rate = real(val); });
#region ++++ toolbars & actions ++++
function set_tile_off() { tileMode = 0; }
function set_tile_horizontal() { tileMode = 1; }
function set_tile_vertical() { tileMode = 2; }
function set_tile_both() { tileMode = 3; }
function set_tile_toggle() { tileMode = (tileMode + 1) % 4; }
static set_tile_off = function() /*=>*/ { tileMode = 0; }
static set_tile_horizontal = function() /*=>*/ { tileMode = 1; }
static set_tile_vertical = function() /*=>*/ { tileMode = 2; }
static set_tile_both = function() /*=>*/ { tileMode = 3; }
static set_tile_toggle = function() /*=>*/ { tileMode = (tileMode + 1) % 4; }
function new_preview_window() { create_preview_window(getNodePreview()); }
function copy_color() { clipboard_set_text(sample_color); }
function copy_color_hex() { clipboard_set_text(color_get_hex(sample_color)); }
static new_preview_window = function() /*=>*/ { create_preview_window(getNodePreview()); }
static copy_color = function() /*=>*/ { clipboard_set_text(sample_color); }
static copy_color_hex = function() /*=>*/ { clipboard_set_text(color_get_hex(sample_color)); }
static toggle_reset_view = function() /*=>*/ { resetViewOnDoubleClick = !resetViewOnDoubleClick; }
static toggle_split_view = function() /*=>*/ { splitView = (splitView + 1) % 3; }
static toggle_lock = function() /*=>*/ { locked = !locked }
topbar_height = ui(32);
toolbar_height = ui(40);
toolbars = [
[
THEME.icon_reset_when_preview,
function() { return resetViewOnDoubleClick; },
function() { return resetViewOnDoubleClick? __txtx("panel_preview_center_canvas_on_preview", "Center canvas on preview") :
__txtx("panel_preview_keep_canvas_on_preview", "Keep canvas on preview"); },
function() { resetViewOnDoubleClick = !resetViewOnDoubleClick; }
function() /*=>*/ {return resetViewOnDoubleClick},
function() /*=>*/ { return new tooltipHotkey(resetViewOnDoubleClick? __txtx("panel_preview_center_canvas_on_preview", "Center canvas on preview") :
__txtx("panel_preview_keep_canvas_on_preview", "Keep canvas on preview"), "Preview", "Toggle Reset View" )},
toggle_reset_view,
],
[
THEME.icon_split_view,
function() { return splitView; },
function() {
function() /*=>*/ {return splitView},
function() /*=>*/ {
switch(splitView) {
case 0 : return __txtx("panel_preview_split_view_off", "Split view off");
case 1 : return __txtx("panel_preview_horizontal_split_view", "Horizontal split view");
case 2 : return __txtx("panel_preview_vertical_split_view", "Vertical split view");
case 0 : return new tooltipHotkey(__txtx("panel_preview_split_view_off", "Split view off"), "Preview", "Toggle Split View");
case 1 : return new tooltipHotkey(__txtx("panel_preview_horizontal_split_view", "Horizontal split view"), "Preview", "Toggle Split View");
case 2 : return new tooltipHotkey(__txtx("panel_preview_vertical_split_view", "Vertical split view"), "Preview", "Toggle Split View");
}
return __txtx("panel_preview_split_view", "Split view");
return new tooltipHotkey(__txtx("panel_preview_split_view", "Split view"), "Preview", "Toggle Split View");
},
function() { splitView = (splitView + 1) % 3; }
toggle_split_view,
],
[
THEME.icon_tile_view,
function() { var t = [3, 0, 1, 2]; return array_safe_get_fast(t, tileMode); },
function() {
function() /*=>*/ { var t = [3, 0, 1, 2]; return array_safe_get_fast(t, tileMode); },
function() /*=>*/ {
switch(tileMode) {
case 0 : return __txtx("panel_preview_tile_off", "Tile off");
case 1 : return __txtx("panel_preview_tile_horizontal", "Tile horizontal");
case 2 : return __txtx("panel_preview_tile_vertical", "Tile vertical");
case 3 : return __txtx("panel_preview_tile_both", "Tile both");
case 0 : return new tooltipHotkey(__txtx("panel_preview_tile_off", "Tile off"), "Preview", "Tiling Settings");
case 1 : return new tooltipHotkey(__txtx("panel_preview_tile_horizontal", "Tile horizontal"), "Preview", "Tiling Settings");
case 2 : return new tooltipHotkey(__txtx("panel_preview_tile_vertical", "Tile vertical"), "Preview", "Tiling Settings");
case 3 : return new tooltipHotkey(__txtx("panel_preview_tile_both", "Tile both"), "Preview", "Tiling Settings");
}
return __txtx("panel_preview_tile_mode", "Tile mode");
return new tooltipHotkey(__txtx("panel_preview_tile_mode", "Tile mode"), "Preview", "Tiling Settings");
},
function(data) {
function(data) /*=>*/ {
menuCall("preview_tile_menu", [
MENU_ITEMS.preview_set_tile_off,
MENU_ITEMS.preview_set_tile_horizontal,
@ -329,19 +365,15 @@ function Panel_Preview() : PanelContent() constructor {
],
[
THEME.icon_grid_setting,
function() { return 0; },
function() { return __txtx("grid_title", "Grid setting") },
function(param) {
var dia = dialogPanelCall(new Panel_Preview_Grid_Setting(), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left });
}
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txtx("grid_title", "Grid setting"), "Preview", "Grid Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_Grid_Setting(), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
[
THEME.onion_skin,
function() { return 0; },
function() { return __txt("Onion Skin") },
function(param) {
var dia = dialogPanelCall(new Panel_Preview_Onion_Setting(), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left });
}
function() /*=>*/ {return 0},
function() /*=>*/ {return new tooltipHotkey(__txt("Onion Skin"), "Preview", "Onion Skin Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_Onion_Setting(), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
];
@ -349,13 +381,13 @@ function Panel_Preview() : PanelContent() constructor {
[
THEME.d3d_preview_settings,
function() /*=>*/ {return 0},
function() /*=>*/ {return __txt("3D Preview Settings")},
function() /*=>*/ {return new tooltipHotkey(__txt("3D Preview Settings"), "Preview", "3D View Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_3D_Setting(self), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
[
THEME.d3d_snap_settings,
function() /*=>*/ {return 0},
function() /*=>*/ {return __txt("3D Snap Settings")},
function() /*=>*/ {return new tooltipHotkey(__txt("3D Snap Settings"), "Preview", "3D Snap Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_Snap_Setting(self), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
];
@ -364,42 +396,39 @@ function Panel_Preview() : PanelContent() constructor {
[
THEME.d3d_preview_settings,
function() /*=>*/ {return 0},
function() /*=>*/ {return __txt("3D SDF Preview Settings")},
function() /*=>*/ {return new tooltipHotkey(__txt("3D SDF Preview Settings"), "Preview", "3D SDF View Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_3D_SDF_Setting(self), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
[
THEME.d3d_snap_settings,
function() /*=>*/ {return 0},
function() /*=>*/ {return __txt("3D Snap Settings")},
function() /*=>*/ {return new tooltipHotkey(__txt("3D Snap Settings"), "Preview", "3D Snap Settings")},
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_Snap_Setting(self), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); }
],
];
tooltip_center = new tooltipHotkey(__txtx("panel_preview_center_canvas", "Center canvas"), "Preview", "Focus content");
tooltip_export = new tooltipHotkey(__txtx("panel_preview_export_canvas", "Export canvas"), "Preview", "Save current frame");
actions = [
[
THEME.lock,
__txtx("panel_preview_lock_preview", "Lock previewing node"),
function() /*=>*/ { locked = !locked; },
new tooltipHotkey(__txtx("panel_preview_lock_preview", "Lock previewing node"), "Preview", "Toggle Lock"),
toggle_lock,
function() /*=>*/ {return !locked},
],
[
THEME.icon_preview_export,
tooltip_export,
new tooltipHotkey(__txtx("panel_preview_export_canvas", "Export canvas"), "Preview", "Save current frame"),
function() /*=>*/ { saveCurrentFrame(); },
function() /*=>*/ {return 0},
],
[
THEME.icon_center_canvas,
tooltip_center,
new tooltipHotkey(__txtx("panel_preview_center_canvas", "Center canvas"), "Preview", "Focus content"),
function() /*=>*/ { fullView(); },
function() /*=>*/ {return 0},
],
[
THEME.icon_visibility,
__txtx("graph_visibility_title", "Visibility settings"),
new tooltipHotkey(__txtx("graph_visibility_title", "Visibility settings"), "Preview", "View Settings"),
function(param) /*=>*/ { dialogPanelCall(new Panel_Preview_View_Setting(self), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }); },
function() /*=>*/ {return 0},
],

View file

@ -1,7 +1,5 @@
function Panel_Preview_3D_SDF_Setting(panel) : Panel_Linear_Setting() constructor {
title = __txtx("preview_3d_settings", "3D SDF Preview Settings");
w = ui(380);
preview_panel = panel;
properties_default = [
@ -11,14 +9,15 @@ function Panel_Preview_3D_SDF_Setting(panel) : Panel_Linear_Setting() constructo
if(index == 0) preview_panel.d3_view_camera.view_near = value;
else if(index == 1) preview_panel.d3_view_camera.view_far = value;
}),
function( ) /*=>*/ {return [ preview_panel.d3_view_camera.view_near, preview_panel.d3_view_camera.view_far ]},
function() /*=>*/ {return [ preview_panel.d3_view_camera.view_near, preview_panel.d3_view_camera.view_far ]},
function(val) /*=>*/ { preview_panel.d3_view_camera.view_near = val[0]; preview_panel.d3_view_camera.view_far = val[1] },
[ 0.01, 50 ],
),
new __Panel_Linear_Setting_Item(
__txt("Draw BG"),
new checkBox(function() /*=>*/ { preview_panel.d3_drawBG = !preview_panel.d3_drawBG; }),
function( ) /*=>*/ {return preview_panel.d3_drawBG},
function() /*=>*/ {return preview_panel.d3_drawBG},
function(val) /*=>*/ { preview_panel.d3_drawBG = val; },
false,
),

View file

@ -1,7 +1,5 @@
function Panel_Preview_3D_Setting(panel) : Panel_Linear_Setting() constructor {
title = __txtx("preview_3d_settings", "3D Preview Settings");
w = ui(380);
preview_panel = panel;
properties_default = [

View file

@ -1,59 +1,58 @@
function Panel_Preview_Grid_Setting() : Panel_Linear_Setting() constructor {
title = __txtx("preview_grid_settings", "Grid Settings");
w = ui(380);
#region data
properties = [
new __Panel_Linear_Setting_Item(
__txt("Pixel Grid"),
new checkBox(function() { PROJECT.previewGrid.pixel = !PROJECT.previewGrid.pixel; }),
function() { return PROJECT.previewGrid.pixel; },
function(val) { PROJECT.previewGrid.pixel = val; },
__txt("Enabled"),
new checkBox(function() /*=>*/ { PROJECT.previewGrid.show = !PROJECT.previewGrid.show; }),
function() /*=>*/ {return PROJECT.previewGrid.show},
function(val) /*=>*/ { PROJECT.previewGrid.show = val; },
false,
["Preview", "Toggle Grid"]
),
new __Panel_Linear_Setting_Item(
__txt("Enabled"),
new checkBox(function() { PROJECT.previewGrid.show = !PROJECT.previewGrid.show; }),
function() { return PROJECT.previewGrid.show; },
function(val) { PROJECT.previewGrid.show = val; },
__txt("Pixel Grid"),
new checkBox(function() /*=>*/ { PROJECT.previewGrid.pixel = !PROJECT.previewGrid.pixel; }),
function() /*=>*/ {return PROJECT.previewGrid.pixel},
function(val) /*=>*/ { PROJECT.previewGrid.pixel = val; },
false,
["Preview", "Toggle Pixel Grid"]
),
new __Panel_Linear_Setting_Item(
__txtx("grid_snap", "Snap to grid"),
new checkBox(function() { PROJECT.previewGrid.snap = !PROJECT.previewGrid.snap; }),
function() { return PROJECT.previewGrid.snap; },
function(val) { PROJECT.previewGrid.snap = val; },
new checkBox(function() /*=>*/ { PROJECT.previewGrid.snap = !PROJECT.previewGrid.snap; }),
function() /*=>*/ {return PROJECT.previewGrid.snap},
function(val) /*=>*/ { PROJECT.previewGrid.snap = val; },
false,
["Preview", "Toggle Snap to Grid"]
),
new __Panel_Linear_Setting_Item(
__txt("Grid size"),
new vectorBox(2, function(value, index) {
new vectorBox(2, function(value, index) /*=>*/ {
var _v = PROJECT.previewGrid.size[index];
PROJECT.previewGrid.size[index] = max(1, value);
return _v != max(1, value);
}).setLinkInactiveColor(COLORS._main_icon_light),
function() { return PROJECT.previewGrid.size; },
function(val) { PROJECT.previewGrid.size = val; },
function() /*=>*/ {return PROJECT.previewGrid.size},
function(val) /*=>*/ { PROJECT.previewGrid.size = val; },
[ 16, 16 ],
),
new __Panel_Linear_Setting_Item(
__txt("Grid opacity"),
slider(0, 1, .05, function(str) { PROJECT.previewGrid.opacity = clamp(real(str), 0, 1); }),
function() { return PROJECT.previewGrid.opacity; },
function(val) { PROJECT.previewGrid.opacity = val; },
slider(0, 1, .05, function(str) /*=>*/ { PROJECT.previewGrid.opacity = clamp(real(str), 0, 1); }),
function() /*=>*/ {return PROJECT.previewGrid.opacity},
function(val) /*=>*/ { PROJECT.previewGrid.opacity = val; },
0.5,
),
new __Panel_Linear_Setting_Item(
__txt("Grid color"),
new buttonColor(function(color) { PROJECT.previewGrid.color = color; }, self),
function() { return PROJECT.previewGrid.color; },
function(val) { PROJECT.previewGrid.color = val; },
new buttonColor(function(color) /*=>*/ { PROJECT.previewGrid.color = color; }, self),
function() /*=>*/ {return PROJECT.previewGrid.color},
function(val) /*=>*/ { PROJECT.previewGrid.color = val; },
COLORS.panel_preview_grid,
),
];
setHeight();
#endregion
}

View file

@ -1,54 +1,52 @@
function Panel_Preview_Onion_Setting() : Panel_Linear_Setting() constructor {
title = __txtx("preview_onion_skin_settings", "Onion skin Settings");
w = ui(380);
#region data
properties = [
new __Panel_Linear_Setting_Item(
__txt("Enabled"),
new checkBox(function() { PROJECT.onion_skin.enabled = !PROJECT.onion_skin.enabled; }),
function() { return PROJECT.onion_skin.enabled; },
function(val) { PROJECT.onion_skin.enabled = val; },
false
new checkBox(function() /*=>*/ { PROJECT.onion_skin.enabled = !PROJECT.onion_skin.enabled; }),
function() /*=>*/ {return PROJECT.onion_skin.enabled},
function(val) /*=>*/ { PROJECT.onion_skin.enabled = val; },
false,
["Preview", "Toggle Onion Skin"]
),
new __Panel_Linear_Setting_Item(
__txtx("onion_skin_top", "Draw on top"),
new checkBox(function() { PROJECT.onion_skin.on_top = !PROJECT.onion_skin.on_top; }),
function() { return PROJECT.onion_skin.on_top; },
function(val) { PROJECT.onion_skin.on_top = val; },
true
new checkBox(function() /*=>*/ { PROJECT.onion_skin.on_top = !PROJECT.onion_skin.on_top; }),
function() /*=>*/ {return PROJECT.onion_skin.on_top},
function(val) /*=>*/ { PROJECT.onion_skin.on_top = val; },
true,
["Preview", "Toggle Onion Skin view"]
),
new __Panel_Linear_Setting_Item(
__txtx("onion_skin_frame_step", "Frame step"),
new textBox(TEXTBOX_INPUT.number, function(str) { PROJECT.onion_skin.step = max(1, round(real(str))); }),
function() { return PROJECT.onion_skin.step; },
function(val) { PROJECT.onion_skin.step = val; },
1
new textBox(TEXTBOX_INPUT.number, function(str) /*=>*/ { PROJECT.onion_skin.step = max(1, round(real(str))); }),
function() /*=>*/ {return PROJECT.onion_skin.step},
function(val) /*=>*/ { PROJECT.onion_skin.step = val; },
1,
),
new __Panel_Linear_Setting_Item(
__txtx("onion_skin_pre_color", "Pre Color"),
new buttonColor(function(color) { PROJECT.onion_skin.color[0] = color; }, self),
function() { return PROJECT.onion_skin.color[0]; },
function(val) { PROJECT.onion_skin.color[0] = val; },
c_red
new buttonColor(function(color) /*=>*/ { PROJECT.onion_skin.color[0] = color; }, self),
function() /*=>*/ {return PROJECT.onion_skin.color[0]},
function(val) /*=>*/ { PROJECT.onion_skin.color[0] = val; },
c_red,
),
new __Panel_Linear_Setting_Item(
__txtx("onion_skin_post_color", "Post Color"),
new buttonColor(function(color) { PROJECT.onion_skin.color[1] = color; }, self),
function() { return PROJECT.onion_skin.color[1]; },
function(val) { PROJECT.onion_skin.color[1] = val; },
c_blue
new buttonColor(function(color) /*=>*/ { PROJECT.onion_skin.color[1] = color; }, self),
function() /*=>*/ {return PROJECT.onion_skin.color[1]},
function(val) /*=>*/ { PROJECT.onion_skin.color[1] = val; },
c_blue,
),
new __Panel_Linear_Setting_Item(
__txt("Opacity"),
slider(0, 1, .05, function(str) { PROJECT.onion_skin.alpha = clamp(real(str), 0, 1); }),
function() { return PROJECT.onion_skin.alpha; },
function(val) { PROJECT.onion_skin.alpha = val; },
0.5
slider(0, 1, .05, function(str) /*=>*/ { PROJECT.onion_skin.alpha = clamp(real(str), 0, 1); }),
function() /*=>*/ {return PROJECT.onion_skin.alpha},
function(val) /*=>*/ { PROJECT.onion_skin.alpha = val; },
0.5,
),
];
setHeight();
#endregion
}

View file

@ -1,10 +1,7 @@
function Panel_Preview_Snap_Setting(panel) : Panel_Linear_Setting() constructor {
title = __txtx("preview_snap_settings", "3D Snap Settings");
w = ui(380);
preview_panel = panel;
#region data
properties = [
new __Panel_Linear_Setting_Item(
__txt("Snap"),
@ -30,5 +27,4 @@ function Panel_Preview_Snap_Setting(panel) : Panel_Linear_Setting() constructor
]
setHeight();
#endregion
}

View file

@ -1,27 +1,24 @@
function Panel_Preview_View_Setting(previewPanel) : Panel_Linear_Setting() constructor {
title = __txtx("preview_view_settings", "View Settings");
w = ui(380);
self.previewPanel = previewPanel;
#region data
properties = [
new __Panel_Linear_Setting_Item(
__txt("Info"),
new checkBox(function() { previewPanel.show_info = !previewPanel.show_info; }),
function() { return previewPanel.show_info },
function(val) { previewPanel.show_info = val; },
new checkBox(function() /*=>*/ { previewPanel.show_info = !previewPanel.show_info; }),
function() /*=>*/ {return previewPanel.show_info},
function(val) /*=>*/ { previewPanel.show_info = val; },
true,
["Preview", "Toggle Show Info"]
),
new __Panel_Linear_Setting_Item(
__txt("View Control"),
new buttonGroup([ "None", "Left", "Right" ], function(val) { previewPanel.show_view_control = val; }),
function() { return previewPanel.show_view_control },
function(val) { previewPanel.show_view_control = val; },
new buttonGroup([ "None", "Left", "Right" ], function(val) /*=>*/ { previewPanel.show_view_control = val; }),
function() /*=>*/ {return previewPanel.show_view_control},
function(val) /*=>*/ { previewPanel.show_view_control = val; },
1,
),
];
setHeight();
#endregion
}

View file

@ -2,7 +2,6 @@ function Panel_Tunnels() : PanelContent() constructor {
title = __txt("Tunnels");
padding = 8;
#region data
w = ui(320);
h = ui(480);
@ -27,8 +26,8 @@ function Panel_Tunnels() : PanelContent() constructor {
search_string = "";
keyboard_lastchar = "";
KEYBOARD_STRING = "";
keyboard_lastkey = -1;
KEYBOARD_STRING = "";
search_res = [];
tb_search = new textBox(TEXTBOX_INPUT.text, function(str) {
@ -51,7 +50,6 @@ function Panel_Tunnels() : PanelContent() constructor {
array_push(search_res, node);
}
}
#endregion
function onResize() { sc_tunnel.resize(w - ui(padding + padding), h - ui(padding + padding) - ui(28)); }

View file

@ -37,6 +37,7 @@ function scrollBox(_data, _onModify, update_hover = true) : widget() constructor
var ind = array_find(data, curr_text);
open = true;
FOCUS_BEFORE = FOCUS;
with(dialogCall(horizontal? o_dialog_scrollbox_horizontal : o_dialog_scrollbox, x + open_rx, y + open_ry)) {
initVal = ind;
font = other.font;

View file

@ -41,6 +41,7 @@ function filename_name_only(name) {
}
function string_to_var(str) { INLINE return string_replace_all(string_replace_all(string_lower(str), " ", "_"), "/", "_"); }
function string_to_var2(context, name) { INLINE return string_to_var(context == ""? name : $"{context} {name}"); }
function string_quote(str) { INLINE return $"\"{str}\""; }
function array_to_string(arr) {

View file

@ -38,6 +38,7 @@ function Theme() constructor {
chat = s_chat;
checkbox_on_start = s_checkbox_on_start;
circle_16 = s_circle_16;
circle_hotkey = s_circle_hotkey;
circle = s_circle_8;
circle_toggle_8 = s_circle_toggle_8;
code_show_auto = s_code_show_auto;

View file

@ -33,3 +33,50 @@ function tooltipHotkey(text, context = "", name = "") constructor {
hotkey_draw(keyStr, _hx, _hy);
}
}
function tooltipHotkey_assign(text, hotkey = "") constructor {
self.text = text;
self.hotkey = hotkey;
static drawTooltip = function() {
var _uns = text == noone;
var _txt = _uns? [ __txt("Unassigned") ] : text;
draw_set_font(f_p1);
var _w1 = string_width(hotkey);
draw_set_font(f_p0);
var _w2 = 0;
var th = 0;
for (var i = 0, n = array_length(_txt); i < n; i++) {
var _t = _txt[i];
var _ts = is_string(_t)? _t : _t.name;
_w2 = max(_w2, string_width(_ts));
th += string_height(_ts);
}
var tw = min(WIN_W - ui(32), _w1 + ui(24) + _w2);
var mx = min(mouse_mx + ui(16), WIN_W - (tw + ui(16)));
var my = min(mouse_my + ui(16), WIN_H - (th + ui(16)));
draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + ui(16), th + ui(16));
draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + ui(16), th + ui(16));
var txy = my + ui(8);
draw_set_text(f_p0, fa_left, fa_top, _uns? COLORS._main_text_sub : COLORS._main_text);
for (var i = 0, n = array_length(_txt); i < n; i++) {
var _t = _txt[i];
var _ts = is_string(_t)? _t : _t.name;
draw_text(mx + ui(8), txy, _ts);
txy += string_height(_ts);
}
var _hx = mx + tw + ui(6);
var _hy = my + line_get_height() / 2 + ui(10);
hotkey_draw(hotkey, _hx, _hy);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

View file

@ -0,0 +1,110 @@
{
"$GMSprite":"",
"%Name":"s_circle_hotkey",
"bboxMode":0,
"bbox_bottom":3,
"bbox_left":0,
"bbox_right":3,
"bbox_top":0,
"collisionKind":1,
"collisionTolerance":0,
"DynamicTexturePage":false,
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"f1285d37-7d57-4c8b-9504-10402561d410","name":"f1285d37-7d57-4c8b-9504-10402561d410","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"8c2842ec-1261-4261-aa81-5b4e6589979c","name":"8c2842ec-1261-4261-aa81-5b4e6589979c","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"9d754822-f194-49ac-bcdd-0382b7106c1f","name":"9d754822-f194-49ac-bcdd-0382b7106c1f","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"54ca7373-f3a6-49dc-80a6-ba9f47977265","name":"54ca7373-f3a6-49dc-80a6-ba9f47977265","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"9a6e4559-d82b-498d-9a21-3f7c70d6193b","name":"9a6e4559-d82b-498d-9a21-3f7c70d6193b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"bf6e94ad-78c1-4f50-b0a0-4536e8e445d8","name":"bf6e94ad-78c1-4f50-b0a0-4536e8e445d8","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":4,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"6840640d-5e89-4d5a-aab4-1fe5bbc0fa4e","blendMode":0,"displayName":"default","isLocked":false,"name":"6840640d-5e89-4d5a-aab4-1fe5bbc0fa4e","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_circle_hotkey",
"nineSlice":null,
"origin":4,
"parent":{
"name":"icon",
"path":"folders/theme/icon.yy",
},
"preMultiplyAlpha":false,
"resourceType":"GMSprite",
"resourceVersion":"2.0",
"sequence":{
"$GMSequence":"",
"%Name":"s_circle_hotkey",
"autoRecord":true,
"backdropHeight":768,
"backdropImageOpacity":0.5,
"backdropImagePath":"",
"backdropWidth":1366,
"backdropXOffset":0.0,
"backdropYOffset":0.0,
"events":{
"$KeyframeStore<MessageEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MessageEventKeyframe>",
"resourceVersion":"2.0",
},
"eventStubScript":null,
"eventToFunction":{},
"length":6.0,
"lockOrigin":false,
"moments":{
"$KeyframeStore<MomentsEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
"resourceVersion":"2.0",
},
"name":"s_circle_hotkey",
"playback":1,
"playbackSpeed":30.0,
"playbackSpeedType":0,
"resourceType":"GMSequence",
"resourceVersion":"2.0",
"showBackdrop":true,
"showBackdropImage":false,
"timeUnits":1,
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"f1285d37-7d57-4c8b-9504-10402561d410","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"99b33a02-c0a0-4b9f-8bcd-4241c6b1e6aa","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"8c2842ec-1261-4261-aa81-5b4e6589979c","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"54c14154-377f-44fa-9b06-ee6bb3d0fccf","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"9d754822-f194-49ac-bcdd-0382b7106c1f","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"0fea8ded-5900-4e21-a304-6f2e9bcd3d22","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"54ca7373-f3a6-49dc-80a6-ba9f47977265","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"205ee201-23dd-4366-afdb-e339411da0ea","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"9a6e4559-d82b-498d-9a21-3f7c70d6193b","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"33e5a7df-69b4-4215-a61b-0e81707b3acf","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"bf6e94ad-78c1-4f50-b0a0-4536e8e445d8","path":"sprites/s_circle_hotkey/s_circle_hotkey.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"535a7ff0-4305-4ea2-af7a-11ca0ea64a84","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,
"volume":1.0,
"xorigin":2,
"yorigin":2,
},
"swatchColours":null,
"swfPrecision":0.5,
"textureGroupId":{
"name":"Default",
"path":"texturegroups/Default",
},
"type":0,
"VTile":false,
"width":4,
}