diff --git a/objects/o_dialog_command_palette/Create_0.gml b/objects/o_dialog_command_palette/Create_0.gml index 8a2578dad..23096647b 100644 --- a/objects/o_dialog_command_palette/Create_0.gml +++ b/objects/o_dialog_command_palette/Create_0.gml @@ -6,8 +6,11 @@ event_inherited(); draggable = false; selecting = 0; + text_pad = ui(8); + item_pad = ui(6); + dialog_w = ui(480); - dialog_h = ui(400); + dialog_h = ui(32) + line_get_height(f_p2, item_pad); setFocus(self.id); @@ -15,6 +18,27 @@ event_inherited(); keys = variable_struct_get_names(FUNCTIONS); hk_editing = noone; + edit_block = 0; + + search_string = ""; + KEYBOARD_STRING = ""; + + tb_search = new textBox(TEXTBOX_INPUT.text, function(str) { + search_string = string(str); + searchMenu(); + }); + + selecting_hotkey = noone; + tb_search.hide = 2; + tb_search.font = f_p2; + tb_search.align = fa_left; + tb_search.auto_update = true; + tb_search.activate(""); + + _prex = mouse_mx; + _prey = mouse_my; + + keyboard_trigger = false; function searchMenu() { data = []; @@ -39,26 +63,13 @@ event_inherited(); array_push(data, ds_priority_delete_max(pr_list)); ds_priority_destroy(pr_list); - } - - search_string = ""; - KEYBOARD_STRING = ""; - - tb_search = new textBox(TEXTBOX_INPUT.text, function(str) { - search_string = string(str); - searchMenu(); - }); - - tb_search.hide = 2; - tb_search.font = f_p2; - tb_search.align = fa_left; - tb_search.auto_update = true; - - text_pad = ui(8); - item_pad = ui(6); - - _prex = mouse_mx; - _prey = mouse_my; + + var hght = line_get_height(f_p2, item_pad); + var _hh = min(ui(32) + max(1, array_length(data)) * hght , ui(400)) + + dialog_h = _hh; + sc_content.resize(dialog_w - ui(4), dialog_h - ui(32)); + } sc_content = new scrollPane(dialog_w - ui(4), dialog_h - ui(32), function(_y, _m) { draw_clear_alpha(COLORS.panel_bg_clear, 1); @@ -71,39 +82,44 @@ event_inherited(); draw_rectangle(0, 0, ui(32), dialog_h, false); var mouse_move = _prex != mouse_mx || _prey != mouse_my; + if(mouse_move) keyboard_trigger = false; for(var i = 0; i < array_length(data); i++) { var _menu = data[i]; - var _menuItem = _menu.menu; - var _key = _menu.hotkey; + var _menuItem = _menu.menu; + var _key = _menu.hotkey; + var _mhover = mouse_move && point_in_rectangle(_m[0], _m[1], 0, _ly, _dw, _ly + hght - 1); if(selecting == i) { draw_sprite_stretched_ext(THEME.textbox, 3, 0, _ly, dialog_w, hght, COLORS.dialog_menubox_highlight, 1); if(sc_content.active) { - if(mouse_press(mb_left) || keyboard_check_pressed(vk_enter)) { + if((!keyboard_trigger && mouse_press(mb_left)) || keyboard_check_pressed(vk_enter)) { _menu.action(); instance_destroy(); } if(mouse_press(mb_right)) { - selecting_menu = _menuItem; + selecting_hotkey = _key; + var _loadKey = string_to_var($"{_key.context}.{_key.name}"); var context_menu_settings = [ _loadKey, menuItem("Edit hotkey", function() /*=>*/ { - hk_editing = _key; - keyboard_lastchar = _key.key; + hk_editing = selecting_hotkey; + keyboard_lastchar = selecting_hotkey.key; + + tb_search.deactivate(); }), ]; - item_selecting = menuCall("", context_menu_settings); + item_selecting = menuCall("command_palette_item", context_menu_settings); } } } - if(sc_content.hover && mouse_move && point_in_rectangle(_m[0], _m[1], 0, _ly, _dw, _ly + hght - 1)) { + if(sc_content.hover && _mhover) { sc_content.hover_content = true; selecting = i; } @@ -118,7 +134,7 @@ event_inherited(); draw_text_add(_tx, _ty, _cnxt); _tx += string_width(_cnxt); - draw_sprite_ext(THEME.arrow, 0, _tx + ui(8), _ty, 1, 1, 0, COLORS._main_text_sub); + draw_sprite_ext(THEME.arrow, 0, _tx + ui(8), _ty, .75, .75, 0, COLORS._main_text_sub); _tx += ui(16); } @@ -162,28 +178,31 @@ event_inherited(); _h += hght; } - if(sc_content.active) { - 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; - - } else { - if(keyboard_check_pressed(vk_up)) { - selecting--; - if(selecting < 0) selecting = array_length(data) - 1; - } + if(hk_editing != noone) { + edit_block = 2; + + if(keyboard_check_pressed(vk_enter)) + hk_editing = noone; + else + hotkey_editing(hk_editing); - if(keyboard_check_pressed(vk_down)) - selecting = safe_mod(selecting + 1, array_length(data)); - - if(keyboard_check_pressed(vk_escape)) - instance_destroy(); + if(keyboard_check_pressed(vk_escape)) + hk_editing = noone; + + } else if(sc_content.active) { + if(keyboard_check_pressed(vk_up)) { + keyboard_trigger = true; + selecting--; + if(selecting < 0) selecting = array_length(data) - 1; } + + if(keyboard_check_pressed(vk_down)) { + keyboard_trigger = true; + selecting = safe_mod(selecting + 1, array_length(data)); + } + + if(keyboard_check_pressed(vk_escape)) + instance_destroy(); } _prex = mouse_mx; @@ -191,4 +210,13 @@ event_inherited(); return _h; }); + + + function resetPosition() { + if(!active) return; + + dialog_x = xstart - dialog_w / 2; + dialog_y = ystart - ui(480) / 2; + } + #endregion \ No newline at end of file diff --git a/objects/o_dialog_command_palette/Draw_64.gml b/objects/o_dialog_command_palette/Draw_64.gml index 85886c150..5791b26eb 100644 --- a/objects/o_dialog_command_palette/Draw_64.gml +++ b/objects/o_dialog_command_palette/Draw_64.gml @@ -2,12 +2,12 @@ draw_sprite_stretched(THEME.textbox, 3, dialog_x, dialog_y, dialog_w, dialog_h); -if(hk_editing == noone) - WIDGET_CURRENT = tb_search; -tb_search.setFocusHover(true, true); -tb_search.draw(dialog_x, dialog_y, dialog_w, ui(32), search_string); +tb_search.setFocusHover(sHOVER, sFOCUS); +tb_search.draw(dialog_x + ui(32), dialog_y, dialog_w - ui(32), ui(32), search_string); tb_search.sprite_index = 0; +draw_sprite_ext(THEME.search, 0, dialog_x + ui(20), dialog_y + ui(16), 1, 1, 0, COLORS._main_icon, 1); + sc_content.setFocusHover(sFOCUS, sHOVER); sc_content.draw(dialog_x, dialog_y + ui(32)); diff --git a/objects/o_dialog_menubox/Create_0.gml b/objects/o_dialog_menubox/Create_0.gml index de90e47f0..decc52cfa 100644 --- a/objects/o_dialog_menubox/Create_0.gml +++ b/objects/o_dialog_menubox/Create_0.gml @@ -5,6 +5,7 @@ event_inherited(); destroy_on_click_out = false; draggable = false; mouse_init_inside = false; + mouse_init_r_pressed = mouse_click(mb_right); selecting = -1; menu_id = ""; diff --git a/objects/o_dialog_menubox/Destroy_0.gml b/objects/o_dialog_menubox/Destroy_0.gml index f1bae6e1c..129f53c96 100644 --- a/objects/o_dialog_menubox/Destroy_0.gml +++ b/objects/o_dialog_menubox/Destroy_0.gml @@ -1,4 +1,7 @@ event_inherited(); for( var i = 0, n = array_length(children); i < n; i++ ) - instance_destroy(children[i]); \ No newline at end of file + instance_destroy(children[i]); + +if(instance_number(o_dialog_menubox) == 1) + FOCUS = FOCUS_BEFORE; \ No newline at end of file diff --git a/objects/o_dialog_menubox/Draw_64.gml b/objects/o_dialog_menubox/Draw_64.gml index 684dfbaaf..197c058c5 100644 --- a/objects/o_dialog_menubox/Draw_64.gml +++ b/objects/o_dialog_menubox/Draw_64.gml @@ -4,7 +4,7 @@ if(!ready) exit; #region draw var yy = dialog_y; var _lclick = sFOCUS && (!mouse_init_inside && mouse_release(mb_left)) || (keyboard_check_pressed(vk_enter) && hk_editing == noone); - var _rclick = sFOCUS && (!mouse_init_inside && mouse_release(mb_right)); + var _rclick = sFOCUS && !mouse_init_inside && !mouse_init_r_pressed && mouse_release(mb_right); if(!mouse_init_inside && mouse_press(mb_right) && item_selecting) { instance_destroy(item_selecting); item_selecting = noone; @@ -54,8 +54,7 @@ if(!ready) exit; draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, yy, dialog_w, _h, _hc, _ha); - if(is_instanceof(_menuItem, MenuItem) && _hovering_ch) { - + if(_hovering_ch && is_instanceof(_menuItem, MenuItem)) { if(_menuItem.active && _lclick) { var _dat = { _x: dialog_x, @@ -73,7 +72,9 @@ if(!ready) exit; else if(remove_parents) instance_destroy(o_dialog_menubox); // close all else instance_destroy(); // close self } - + } + + if(_hovering_ch && (is_instanceof(_menuItem, MenuItem) || is_instanceof(_menuItem, MenuItemGroup))) { if(_key && _rclick) { var _dat = { _x: mouse_mx + ui(4), @@ -88,6 +89,7 @@ if(!ready) exit; selecting_menu = _menuItem; var _loadKey = string_to_var($"{_key.context}.{_key.name}"); + var context_menu_settings = [ _loadKey, menuItem("Edit hotkey", function() /*=>*/ { @@ -103,9 +105,13 @@ if(!ready) exit; array_push(children, item_selecting.id); } } + } else if(cc != c_white) draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, yy, dialog_w, _h, cc, 0.5); + var _hx = dialog_x + dialog_w - ui(16); + var _hy = yy + hght / 2 + ui(2); + if(is_instanceof(_menuItem, MenuItemGroup)) { var _submenus = _menuItem.group; draw_set_text(font, fa_center, fa_center, COLORS._main_text_sub); @@ -185,37 +191,34 @@ if(!ready) exit; draw_text(tx, yy + hght / 2, label); draw_set_alpha(1); - var _hx = dialog_x + dialog_w - ui(16); - var _hy = yy + hght / 2 + ui(2); - if(_menuItem.isShelf) { draw_sprite_ui_uniform(THEME.arrow, 0, dialog_x + dialog_w - ui(20), yy + hght / 2, 1, COLORS._main_icon); _hx -= ui(24); } + } + + if(_key) { + draw_set_font(font); - if(_key) { - draw_set_font(font); + var _ktxt = key_get_name(_key.key, _key.modi); + var _tw = string_width(_ktxt); + var _th = line_get_height(); + + 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 == _menuItem) { + draw_set_text(font, fa_right, fa_center, COLORS._main_accent); + draw_sprite_stretched_ext(THEME.ui_panel, 1, _bx, _by, _bw, _bh, COLORS._main_text_accent); - var _ktxt = key_get_name(_key.key, _key.modi); - var _tw = string_width(_ktxt); - var _th = line_get_height(); - - 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 == _menuItem) { - draw_set_text(font, 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(font, 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); + } else if(_ktxt != "") { + draw_set_text(font, 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); } yy += _h; @@ -246,6 +249,7 @@ if(!ready) exit; draw_sprite_stretched(THEME.s_box_r2_clr, 1, dialog_x, dialog_y, dialog_w, dialog_h); if(mouse_init_inside && (mouse_release(mb_left) || mouse_release(mb_right))) mouse_init_inside = false; + if(mouse_release(mb_right)) mouse_init_r_pressed = false; #endregion #region debug diff --git a/scripts/contextMenu_controller/contextMenu_controller.gml b/scripts/contextMenu_controller/contextMenu_controller.gml index d11c1f92b..da0401083 100644 --- a/scripts/contextMenu_controller/contextMenu_controller.gml +++ b/scripts/contextMenu_controller/contextMenu_controller.gml @@ -1,12 +1,16 @@ #region data - globalvar CONTEXT_MENU_CALLBACK; + globalvar CONTEXT_MENU_CALLBACK, FOCUS_BEFORE; + CONTEXT_MENU_CALLBACK = ds_map_create(); + FOCUS_BEFORE = noone; #endregion function menuCall(menu_id = "", menu = [], _x = 0, _y = 0, align = fa_left, context = noone) { _x = _x == 0? mouse_mx + ui(4) : _x; _y = _y == 0? mouse_my + ui(4) : _y; + FOCUS_BEFORE = FOCUS; + var dia = dialogCall(o_dialog_menubox, _x, _y); if(menu_id != "" && ds_map_exists(CONTEXT_MENU_CALLBACK, menu_id)) { var callbacks = CONTEXT_MENU_CALLBACK[? menu_id]; @@ -82,13 +86,19 @@ function MenuItem(_name, _func, _spr = noone, _hotkey = noone, _toggle = noone, static setShiftMenu = function(_shiftMenu) /*=>*/ { INLINE shiftMenu = _shiftMenu; return self; } } -function menuItemGroup(_name, _group) { return new MenuItemGroup(_name, _group); } - -function MenuItemGroup(_name, _group) constructor { +function menuItemGroup(_name, _group, _hotkey = noone) { return new MenuItemGroup(_name, _group, _hotkey); } +function MenuItemGroup(_name, _group, _hotkey = noone) constructor { active = true; name = _name; group = _group; - hotkey = noone; + hotkey = _hotkey; + params = {}; + hoykeyObject = noone; spacing = ui(36); + + static setSpacing = function(_spacing) { + spacing = _spacing; + return self; + } } \ No newline at end of file diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index 076b05c38..0798e9402 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -39,7 +39,7 @@ LATEST_VERSION = 11700; VERSION = 11790; SAVE_VERSION = 11700; - VERSION_STRING = "1.17.10.003"; + VERSION_STRING = "1.17.10.004"; BUILD_NUMBER = 11790; HOTKEYS = ds_map_create(); diff --git a/scripts/hotkey_data/hotkey_data.gml b/scripts/hotkey_data/hotkey_data.gml index ea557a8f5..bcb9ba14f 100644 --- a/scripts/hotkey_data/hotkey_data.gml +++ b/scripts/hotkey_data/hotkey_data.gml @@ -163,6 +163,8 @@ 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, diff --git a/scripts/panel_animation/panel_animation.gml b/scripts/panel_animation/panel_animation.gml index 217f3e306..be49bcb5d 100644 --- a/scripts/panel_animation/panel_animation.gml +++ b/scripts/panel_animation/panel_animation.gml @@ -1,41 +1,4 @@ #region funtion calls - function __fnInit_Animation() { - registerFunction("", "Play/Pause", vk_space, MOD_KEY.none, panel_animation_play_pause ).setMenu("play_pause", ) - registerFunction("", "Resume/Pause", vk_space, MOD_KEY.shift, panel_animation_resume ).setMenu("resume_pause", ) - - registerFunction("", "First frame", vk_home, MOD_KEY.none, panel_animation_first_frame ).setMenu("first_frame", ) - registerFunction("", "Last frame", vk_end, MOD_KEY.none, panel_animation_last_frame ).setMenu("last_frame", ) - registerFunction("", "Next frame", vk_right, MOD_KEY.none, panel_animation_next_frame ).setMenu("next_frame", ) - registerFunction("", "Previous frame", vk_left, MOD_KEY.none, panel_animation_prev_frame ).setMenu("previous_frame", ) - - registerFunction("Animation", "Delete keys", vk_delete, MOD_KEY.none, panel_animation_delete_key ).setMenu("animation_delete_keys", ) - registerFunction("Animation", "Duplicate", "D", MOD_KEY.ctrl, panel_animation_duplicate ).setMenu("animation_duplicate", THEME.duplicate) - registerFunction("Animation", "Copy", "C", MOD_KEY.ctrl, panel_animation_copy ).setMenu("animation_copy", THEME.copy) - registerFunction("Animation", "Paste", "V", MOD_KEY.ctrl, panel_animation_paste ).setMenu("animation_paste", THEME.paste) - registerFunction("Animation", "Collapse Toggle", "C", MOD_KEY.none, panel_animation_collapseToggle ).setMenu("animation_collapse_toggle", ) - registerFunction("Animation", "Toggle Nodes", "H", MOD_KEY.none, panel_animation_show_nodes ).setMenu("animation_toggle_nodes", ) - - registerFunction("Animation", "Settings", "S", MOD_KEY.ctrl | MOD_KEY.shift, panel_animation_settings ).setMenu("animation_settings", THEME.animation_setting ) - registerFunction("Animation", "Scaler", "", MOD_KEY.none, panel_animation_scale ).setMenu("animation_scaler", THEME.animation_timing ) - - registerFunction("Animation", "Edit Keyframe Value","", MOD_KEY.none, panel_animation_edit_keyframe_value ).setMenu("animation_edit_keyframe_value", ) - registerFunction("Animation", "Lock Keyframe Y", "", MOD_KEY.none, panel_animation_edit_keyframe_lock_y ).setMenu("animation_lock_keyframe_y", ) - registerFunction("Animation", "Stagger", "", MOD_KEY.none, panel_animation_edit_keyframe_stagger ).setMenu("animation_stagger", ) - registerFunction("Animation", "Driver", "", MOD_KEY.none, panel_animation_keyframe_driver ).setMenu("animation_driver", ) - - registerFunction("Animation", "New Folder", "", MOD_KEY.none, panel_animation_dopesheet_new_folder ).setMenu("animation_new_folder", THEME.folder_content) - registerFunction("Animation", "Dopesheet Expand", "", MOD_KEY.none, panel_animation_dopesheet_expand ).setMenu("animation_dopesheet_expand", ) - registerFunction("Animation", "Dopesheet Collapse", "", MOD_KEY.none, panel_animation_dopesheet_collapse ).setMenu("animation_dopesheet_collapse", ) - - registerFunction("Animation", "Rename Group", "", MOD_KEY.none, panel_animation_group_rename ).setMenu("animation_rename_group", THEME.cross) - registerFunction("Animation", "Remove Group", "", MOD_KEY.none, panel_animation_group_remove ).setMenu("animation_remove_group", ) - registerFunction("Animation", "Separate Axis", "", MOD_KEY.none, panel_animation_separate_axis ).setMenu("animation_separate_axis", ) - registerFunction("Animation", "Combine Axis", "", MOD_KEY.none, panel_animation_combine_axis ).setMenu("animation_combine_axis", ) - - registerFunction("Animation", "Set Range Start", "", MOD_KEY.none, panel_animation_range_set_start ).setMenu("animation_set_range_start", [ THEME.frame_range, 0 ]) - registerFunction("Animation", "Set Range End", "", MOD_KEY.none, panel_animation_range_set_end ).setMenu("animation_set_range_end", [ THEME.frame_range, 1 ]) - registerFunction("Animation", "Reset Range", "", MOD_KEY.none, panel_animation_range_reset ).setMenu("animation_reset_range", ) - } function panel_animation_settings() { var dia = dialogPanelCall(new Panel_Animation_Setting()); dia.anchor = ANCHOR.none; } function panel_animation_scale() { dialogPanelCall(new Panel_Animation_Scaler()); } @@ -72,6 +35,145 @@ function panel_animation_range_set_start() { CALL("animation_range_set_start"); PANEL_ANIMATION.range_set_start(); } function panel_animation_range_set_end() { CALL("animation_range_set_end"); PANEL_ANIMATION.range_set_end(); } function panel_animation_range_reset() { CALL("animation_range_reset"); PANEL_ANIMATION.range_reset(); } + + function __fnInit_Animation() { + registerFunction("", "Play/Pause", vk_space, MOD_KEY.none, panel_animation_play_pause ).setMenu("play_pause", ) + registerFunction("", "Resume/Pause", vk_space, MOD_KEY.shift, panel_animation_resume ).setMenu("resume_pause", ) + + registerFunction("", "First frame", vk_home, MOD_KEY.none, panel_animation_first_frame ).setMenu("first_frame", ) + registerFunction("", "Last frame", vk_end, MOD_KEY.none, panel_animation_last_frame ).setMenu("last_frame", ) + registerFunction("", "Next frame", vk_right, MOD_KEY.none, panel_animation_next_frame ).setMenu("next_frame", ) + registerFunction("", "Previous frame", vk_left, MOD_KEY.none, panel_animation_prev_frame ).setMenu("previous_frame", ) + + registerFunction("Animation", "Delete keys", vk_delete, MOD_KEY.none, panel_animation_delete_key ).setMenu("animation_delete_keys", ) + registerFunction("Animation", "Duplicate", "D", MOD_KEY.ctrl, panel_animation_duplicate ).setMenu("animation_duplicate", THEME.duplicate) + registerFunction("Animation", "Copy", "C", MOD_KEY.ctrl, panel_animation_copy ).setMenu("animation_copy", THEME.copy) + registerFunction("Animation", "Paste", "V", MOD_KEY.ctrl, panel_animation_paste ).setMenu("animation_paste", THEME.paste) + registerFunction("Animation", "Collapse Toggle", "C", MOD_KEY.none, panel_animation_collapseToggle ).setMenu("animation_collapse_toggle", ) + registerFunction("Animation", "Toggle Nodes", "H", MOD_KEY.none, panel_animation_show_nodes ).setMenu("animation_toggle_nodes", ) + + registerFunction("Animation", "Settings", "S", MOD_KEY.ctrl | MOD_KEY.shift, panel_animation_settings ).setMenu("animation_settings", THEME.animation_setting ) + registerFunction("Animation", "Scaler", "", MOD_KEY.none, panel_animation_scale ).setMenu("animation_scaler", THEME.animation_timing ) + + registerFunction("Animation", "Edit Keyframe Value","", MOD_KEY.none, panel_animation_edit_keyframe_value ).setMenu("animation_edit_keyframe_value", ) + registerFunction("Animation", "Lock Keyframe Y", "", MOD_KEY.none, panel_animation_edit_keyframe_lock_y ).setMenu("animation_lock_keyframe_y", ) + registerFunction("Animation", "Stagger", "", MOD_KEY.none, panel_animation_edit_keyframe_stagger ).setMenu("animation_stagger", ) + registerFunction("Animation", "Driver", "", MOD_KEY.none, panel_animation_keyframe_driver ).setMenu("animation_driver", ) + + registerFunction("Animation", "New Folder", "", MOD_KEY.none, panel_animation_dopesheet_new_folder ).setMenu("animation_new_folder", THEME.folder_content) + registerFunction("Animation", "Dopesheet Expand", "", MOD_KEY.none, panel_animation_dopesheet_expand ).setMenu("animation_dopesheet_expand", ) + registerFunction("Animation", "Dopesheet Collapse", "", MOD_KEY.none, panel_animation_dopesheet_collapse ).setMenu("animation_dopesheet_collapse", ) + + registerFunction("Animation", "Rename Group", "", MOD_KEY.none, panel_animation_group_rename ).setMenu("animation_rename_group", ) + registerFunction("Animation", "Remove Group", "", MOD_KEY.none, panel_animation_group_remove ).setMenu("animation_remove_group", THEME.cross) + registerFunction("Animation", "Separate Axis", "", MOD_KEY.none, panel_animation_separate_axis ).setMenu("animation_separate_axis", ) + registerFunction("Animation", "Combine Axis", "", MOD_KEY.none, panel_animation_combine_axis ).setMenu("animation_combine_axis", ) + + registerFunction("Animation", "Set Range Start", "", MOD_KEY.none, panel_animation_range_set_start ).setMenu("animation_set_range_start", [ THEME.frame_range, 0 ]) + registerFunction("Animation", "Set Range End", "", MOD_KEY.none, panel_animation_range_set_end ).setMenu("animation_set_range_end", [ THEME.frame_range, 1 ]) + registerFunction("Animation", "Reset Range", "", MOD_KEY.none, panel_animation_range_reset ).setMenu("animation_reset_range", ) + + __fnGroupInit_Animation(); + } + + function __fnGroupInit_Animation() { + + MENU_ITEMS.animation_group_ease_in = menuItemGroup(__txtx("panel_animation_ease_in", "Ease in"), [ + [ [THEME.timeline_ease, 0], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_in_type = CURVE_TYPE.linear; + k.ease_in = [0, 1]; + } + }, __txtx("panel_animation_ease_linear", "Linear") ], + [ [THEME.timeline_ease, 1], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_in_type = CURVE_TYPE.bezier; + k.ease_in = [1, 1]; + } + }, __txtx("panel_animation_ease_smooth", "Smooth") ], + [ [THEME.timeline_ease, 2], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_in_type = CURVE_TYPE.bezier; + k.ease_in = [1, 2]; + } + }, __txtx("panel_animation_ease_overshoot", "Overshoot") ], + [ [THEME.timeline_ease, 3], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_in_type = CURVE_TYPE.bezier; + k.ease_in = [0, 0]; + } + }, __txtx("panel_animation_ease_sharp", "Sharp") ], + [ [THEME.timeline_ease, 4], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_in_type = CURVE_TYPE.cut; + k.ease_in = [0, 0]; + } + }, __txtx("panel_animation_ease_hold", "Hold") ], + ], [ "Animation", "Ease In" ]); + registerFunction("Animation", "Ease In", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.animation_group_ease_in ]); }); + + MENU_ITEMS.animation_group_ease_out = menuItemGroup(__txtx("panel_animation_ease_out", "Ease out"), [ + [ [THEME.timeline_ease, 0], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_out_type = CURVE_TYPE.linear; + k.ease_out = [0, 0]; + } + }, __txtx("panel_animation_ease_linear", "Linear") ], + [ [THEME.timeline_ease, 1], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_out_type = CURVE_TYPE.bezier; + k.ease_out = [1, 0]; + } + }, __txtx("panel_animation_ease_smooth", "Smooth") ], + [ [THEME.timeline_ease, 2], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_out_type = CURVE_TYPE.bezier; + k.ease_out = [1, -1]; + } + }, __txtx("panel_animation_ease_overshoot", "Overshoot") ], + [ [THEME.timeline_ease, 3], function() /*=>*/ { + for( var i = 0, n = array_length(PANEL_ANIMATION.keyframe_selecting); i < n; i++ ) { + var k = PANEL_ANIMATION.keyframe_selecting[i]; + k.ease_out_type = CURVE_TYPE.bezier; + k.ease_out = [0, 1]; + } + }, __txtx("panel_animation_ease_sharp", "Sharp") ], + ], [ "Animation", "Ease Outs" ]); + registerFunction("Animation", "Ease Out", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.animation_group_ease_out ]); }); + + MENU_ITEMS.animation_group_align = menuItemGroup(__txt("Align"), [ + [ [THEME.object_halign, 0], function() /*=>*/ { PANEL_ANIMATION.alignKeys(fa_left); } ], + [ [THEME.object_halign, 1], function() /*=>*/ { PANEL_ANIMATION.alignKeys(fa_center); } ], + [ [THEME.object_halign, 2], function() /*=>*/ { PANEL_ANIMATION.alignKeys(fa_right); } ], + ], [ "Animation", "Align" ]); + registerFunction("Animation", "Align", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.animation_group_align ]); }); + + var _clrs = COLORS.labels; + var _item = array_create(array_length(_clrs)); + + for( var i = 0, n = array_length(_clrs); i < n; i++ ) { + _item[i] = [ + [ THEME.timeline_color, i > 0, _clrs[i] ], + function(_data) { PANEL_ANIMATION.setSelectingItemColor(_data.color); }, "", { color: i == 0? -1 : _clrs[i] } + ]; + } + + array_push(_item, [ + [ THEME.timeline_color, 2 ], + function(_data) /*=>*/ { colorSelectorCall(PANEL_ANIMATION.context_selecting_item? PANEL_ANIMATION.context_selecting_item.item.getColor() : c_white, PANEL_ANIMATION.setSelectingItemColor); } + ]); + + MENU_ITEMS.animation_group_label_color = menuItemGroup(__txt("Color"), _item, ["Animation", "Label Color"]).setSpacing(ui(24)); + registerFunction("Animation", "Label Color", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.animation_group_label_color ]); }); + } #endregion enum KEYFRAME_DRAG_TYPE { @@ -87,10 +189,10 @@ function Panel_Animation() : PanelContent() constructor { icon = THEME.panel_animation_icon; #region ---- dimension ---- - timeline_h = ui(28); + timeline_h = ui(28); min_w = ui(40); min_h = ui(48); - tool_width = ui(224); + tool_width = ui(224); #endregion static initSize = function() { @@ -319,80 +421,11 @@ function Panel_Animation() : PanelContent() constructor { MENU_ITEMS.animation_edit_keyframe_value, MENU_ITEMS.animation_lock_keyframe_y, - menuItemGroup(__txtx("panel_animation_ease_in", "Ease in"), [ - [ [THEME.timeline_ease, 0], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_in_type = CURVE_TYPE.linear; - k.ease_in = [0, 1]; - } - }, __txtx("panel_animation_ease_linear", "Linear") ], - [ [THEME.timeline_ease, 1], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_in_type = CURVE_TYPE.bezier; - k.ease_in = [1, 1]; - } - }, __txtx("panel_animation_ease_smooth", "Smooth") ], - [ [THEME.timeline_ease, 2], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_in_type = CURVE_TYPE.bezier; - k.ease_in = [1, 2]; - } - }, __txtx("panel_animation_ease_overshoot", "Overshoot") ], - [ [THEME.timeline_ease, 3], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_in_type = CURVE_TYPE.bezier; - k.ease_in = [0, 0]; - } - }, __txtx("panel_animation_ease_sharp", "Sharp") ], - [ [THEME.timeline_ease, 4], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_in_type = CURVE_TYPE.cut; - k.ease_in = [0, 0]; - } - }, __txtx("panel_animation_ease_hold", "Hold") ], - ]), + MENU_ITEMS.animation_group_ease_in, + MENU_ITEMS.animation_group_ease_out, - menuItemGroup(__txtx("panel_animation_ease_out", "Ease out"), [ - [ [THEME.timeline_ease, 0], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_out_type = CURVE_TYPE.linear; - k.ease_out = [0, 0]; - } - }, __txtx("panel_animation_ease_linear", "Linear") ], - [ [THEME.timeline_ease, 1], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_out_type = CURVE_TYPE.bezier; - k.ease_out = [1, 0]; - } - }, __txtx("panel_animation_ease_smooth", "Smooth") ], - [ [THEME.timeline_ease, 2], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_out_type = CURVE_TYPE.bezier; - k.ease_out = [1, -1]; - } - }, __txtx("panel_animation_ease_overshoot", "Overshoot") ], - [ [THEME.timeline_ease, 3], function() { - for( var i = 0, n = array_length(keyframe_selecting); i < n; i++ ) { - var k = keyframe_selecting[i]; - k.ease_out_type = CURVE_TYPE.bezier; - k.ease_out = [0, 1]; - } - }, __txtx("panel_animation_ease_sharp", "Sharp") ], - ]), -1, - menuItemGroup(__txt("Align"), [ - [ [THEME.object_halign, 0], function() { alignKeys(fa_left); } ], - [ [THEME.object_halign, 1], function() { alignKeys(fa_center); } ], - [ [THEME.object_halign, 2], function() { alignKeys(fa_right); } ], - ]), + MENU_ITEMS.animation_group_align, MENU_ITEMS.animation_stagger, MENU_ITEMS.animation_driver, -1, @@ -416,25 +449,9 @@ function Panel_Animation() : PanelContent() constructor { MENU_ITEMS.animation_dopesheet_collapse, ]; - var _clrs = COLORS.labels; - var _item = array_create(array_length(_clrs)); - function setSelectingItemColor(color) { if(context_selecting_item == noone) return; context_selecting_item.item.setColor(color); } - for( var i = 0, n = array_length(_clrs); i < n; i++ ) { - _item[i] = [ - [ THEME.timeline_color, i > 0, _clrs[i] ], - function(_data) { setSelectingItemColor(_data.color); }, "", { color: i == 0? -1 : _clrs[i] } - ]; - } - - array_push(_item, [ - [ THEME.timeline_color, 2 ], - function(_data) /*=>*/ { colorSelectorCall(context_selecting_item? context_selecting_item.item.getColor() : c_white, setSelectingItemColor); } - ]); - - var clr = menuItemGroup(__txt("Color"), _item); - clr.spacing = ui(24); + var clr = MENU_ITEMS.animation_group_label_color; name_menu_item = [ clr, diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 78e6ff7e4..4de65c65d 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -58,7 +58,7 @@ function panel_graph_doCopyProp() { CALL("graph_doCopyProp"); PANEL_GRAPH.doCopyProp(); } function panel_graph_doPasteProp() { CALL("graph_doPasteProp"); PANEL_GRAPH.doPasteProp(); } function panel_graph_createTunnel() { CALL("graph_createTunnel"); PANEL_GRAPH.createTunnel(); } - + 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") @@ -123,6 +123,60 @@ 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") } + + __fnGroupInit_Graph() + } + + function __fnGroupInit_Graph() { + + MENU_ITEMS.graph_group_align = menuItemGroup(__txtx("panel_graph_align_nodes", "Align"), [ + [ [THEME.inspector_surface_halign, 0], function() { node_halign(PANEL_GRAPH.nodes_selecting, fa_left); } ], + [ [THEME.inspector_surface_halign, 1], function() { node_halign(PANEL_GRAPH.nodes_selecting, fa_center); } ], + [ [THEME.inspector_surface_halign, 2], function() { node_halign(PANEL_GRAPH.nodes_selecting, fa_right); } ], + + [ [THEME.inspector_surface_valign, 0], function() { node_valign(PANEL_GRAPH.nodes_selecting, fa_top); } ], + [ [THEME.inspector_surface_valign, 1], function() { node_valign(PANEL_GRAPH.nodes_selecting, fa_middle); } ], + [ [THEME.inspector_surface_valign, 2], function() { node_valign(PANEL_GRAPH.nodes_selecting, fa_bottom); } ], + + [ [THEME.obj_distribute_h, 0], function() { node_hdistribute(PANEL_GRAPH.nodes_selecting); } ], + [ [THEME.obj_distribute_v, 0], function() { node_vdistribute(PANEL_GRAPH.nodes_selecting); } ], + ], ["Graph", "Align Nodes"]); + registerFunction("Graph", "Align Nodes", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.graph_group_align ]); }); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + var _clrs = COLORS.labels; + var _item = array_create(array_length(_clrs)); + + for( var i = 0, n = array_length(_clrs); i < n; i++ ) { + _item[i] = [ + [ THEME.timeline_color, i > 0, _clrs[i] ], + function(_data) { PANEL_GRAPH.setSelectingNodeColor(_data.color); }, "", { color: i == 0? -1 : _clrs[i] } + ]; + } + + array_push(_item, [ [ THEME.timeline_color, 2 ], function() /*=>*/ { colorSelectorCall(PANEL_GRAPH.node_hover? PANEL_GRAPH.node_hover.attributes.color : c_white, PANEL_GRAPH.setSelectingNodeColor); } ]); + + MENU_ITEMS.graph_group_node_color = menuItemGroup(__txt("Node Color"), _item, ["Graph", "Set Node Color"]).setSpacing(ui(24)); + registerFunction("Graph", "Set Node Color", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.graph_group_node_color ]); }); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + var _clrs = COLORS.labels; + var _item = array_create(array_length(_clrs)); + + for( var i = 0, n = array_length(_clrs); i < n; i++ ) { + _item[i] = [ + [ THEME.timeline_color, i > 0, _clrs[i] ], + function(_data) { PANEL_GRAPH.setSelectingJuncColor(_data.color); }, "", { color: i == 0? -1 : _clrs[i] } + ]; + } + + array_push(_item, [ [ THEME.timeline_color, 2 ], function() /*=>*/ { colorSelectorCall(PANEL_GRAPH.__junction_hovering? PANEL_GRAPH.__junction_hovering.color : c_white, PANEL_GRAPH.setSelectingJuncColor); } ]); + + MENU_ITEMS.graph_group_junction_color = menuItemGroup(__txt("Connection Color"), _item, ["Graph", "Set Junction Color"]).setSpacing(ui(24)); + registerFunction("Graph", "Set Junction Color", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.graph_group_junction_color ]); }); + } #endregion @@ -640,19 +694,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { menu_node_delete_merge = MENU_ITEMS.graph_delete_merge; menu_node_duplicate = MENU_ITEMS.graph_duplicate; menu_node_copy = MENU_ITEMS.graph_copy; - - menu_nodes_align = menuItemGroup(__txtx("panel_graph_align_nodes", "Align"), [ - [ [THEME.inspector_surface_halign, 0], function() { node_halign(nodes_selecting, fa_left); } ], - [ [THEME.inspector_surface_halign, 1], function() { node_halign(nodes_selecting, fa_center); } ], - [ [THEME.inspector_surface_halign, 2], function() { node_halign(nodes_selecting, fa_right); } ], - - [ [THEME.inspector_surface_valign, 0], function() { node_valign(nodes_selecting, fa_top); } ], - [ [THEME.inspector_surface_valign, 1], function() { node_valign(nodes_selecting, fa_middle); } ], - [ [THEME.inspector_surface_valign, 2], function() { node_valign(nodes_selecting, fa_bottom); } ], - - [ [THEME.obj_distribute_h, 0], function() { node_hdistribute(nodes_selecting); } ], - [ [THEME.obj_distribute_v, 0], function() { node_vdistribute(nodes_selecting); } ], - ]); + + menu_nodes_align = MENU_ITEMS.graph_group_align; menu_node_transform = MENU_ITEMS.graph_transform_node; menu_nodes_blend = MENU_ITEMS.graph_blend; @@ -675,27 +718,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { array_foreach(nodes_selecting, function(node) { node.attributes.color = __temp_color; }); } - var _clrs = COLORS.labels; - var _item = array_create(array_length(_clrs)); - - for( var i = 0, n = array_length(_clrs); i < n; i++ ) { - _item[i] = [ - [ THEME.timeline_color, i > 0, _clrs[i] ], - function(_data) { - setSelectingNodeColor(_data.color); - }, "", { color: i == 0? -1 : _clrs[i] } - ]; - } - - array_push(_item, [ - [ THEME.timeline_color, 2 ], - function(_data) { - colorSelectorCall(node_hover? node_hover.attributes.color : c_white, setSelectingNodeColor); - } - ]); - - menu_node_color = menuItemGroup(__txt("Node Color"), _item); - menu_node_color.spacing = ui(24); + menu_node_color = MENU_ITEMS.graph_group_node_color; // junction color @@ -715,28 +738,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { } } } - - var _clrs = COLORS.labels; - var _item = array_create(array_length(_clrs)); - - for( var i = 0, n = array_length(_clrs); i < n; i++ ) { - _item[i] = [ - [ THEME.timeline_color, i > 0, _clrs[i] ], - function(_data) { - setSelectingJuncColor(_data.color); - }, "", { color: i == 0? -1 : _clrs[i] } - ]; - } - - array_push(_item, [ - [ THEME.timeline_color, 2 ], - function(_data) { - colorSelectorCall(__junction_hovering? __junction_hovering.color : c_white, setSelectingJuncColor); - } - ]); - - menu_junc_color = menuItemGroup(__txt("Connection Color"), _item); - menu_junc_color.spacing = ui(24); + + menu_junc_color = MENU_ITEMS.graph_group_junction_color; //// ============ Project ============ diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 328a3336b..8fcac5f9b 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -1,23 +1,4 @@ #region funtion calls - function __fnInit_Inspector() { - registerFunction("", "Color picker", "", MOD_KEY.alt, panel_inspector_color_pick ).setMenu("color_picker") - - registerFunction("Inspector", "Copy property", "C", MOD_KEY.ctrl, panel_inspector_copy_prop ).setMenu("inspector_copy_property", THEME.copy) - registerFunction("Inspector", "Paste property", "V", MOD_KEY.ctrl, panel_inspector_paste_prop ).setMenu("inspector_paste_property", THEME.paste) - registerFunction("Inspector", "Toggle animation", "I", MOD_KEY.none, panel_inspector_toggle_animation ).setMenu("inspector_toggle_animation") - - registerFunction("Inspector", "Expand All Sections", "", MOD_KEY.none, panel_inspector_section_expand_all ).setMenu("inspector_expand_all_sections") - registerFunction("Inspector", "Collapse All Sections", "", MOD_KEY.none, panel_inspector_section_collapse_all ).setMenu("inspector_collapse_all_sections") - - registerFunction("Inspector", "Reset", "", MOD_KEY.none, panel_inspector_reset ).setMenu("inspector_reset") - registerFunction("Inspector", "Add", "", MOD_KEY.none, panel_inspector_add ).setMenu("inspector_add") - registerFunction("Inspector", "Remove", "", MOD_KEY.none, panel_inspector_remove ).setMenu("inspector_remove") - registerFunction("Inspector", "Combine Axis", "", MOD_KEY.none, panel_inspector_axis_combine ).setMenu("inspector_combine_axis") - registerFunction("Inspector", "Separate Axis", "", MOD_KEY.none, panel_inspector_axis_separate ).setMenu("inspector_separate_axis") - registerFunction("Inspector", "Use Expression", "", MOD_KEY.none, panel_inspector_use_expression ).setMenu("inspector_use_expression") - registerFunction("Inspector", "Disable Expression", "", MOD_KEY.none, panel_inspector_disable_expression ).setMenu("inspector_disable_expression") - registerFunction("Inspector", "Extract Value", "", MOD_KEY.none, panel_inspector_extract_single ).setMenu("inspector_extract_value") - } function panel_inspector_copy_prop() { CALL("inspector_copy_property"); PANEL_INSPECTOR.propSelectCopy(); } function panel_inspector_paste_prop() { CALL("inspector_paste_property"); PANEL_INSPECTOR.propSelectPaste(); } @@ -37,6 +18,50 @@ function panel_inspector_disable_expression() { CALL("inspector_disable_expression"); PANEL_INSPECTOR.junction_disable_expression(); } function panel_inspector_extract_single() { CALL("inspector_extract_single"); PANEL_INSPECTOR.junction_extract_single(); } + function __fnInit_Inspector() { + registerFunction("", "Color picker", "", MOD_KEY.alt, panel_inspector_color_pick ).setMenu("color_picker") + + registerFunction("Inspector", "Copy property", "C", MOD_KEY.ctrl, panel_inspector_copy_prop ).setMenu("inspector_copy_property", THEME.copy) + registerFunction("Inspector", "Paste property", "V", MOD_KEY.ctrl, panel_inspector_paste_prop ).setMenu("inspector_paste_property", THEME.paste) + registerFunction("Inspector", "Toggle animation", "I", MOD_KEY.none, panel_inspector_toggle_animation ).setMenu("inspector_toggle_animation") + + registerFunction("Inspector", "Expand All Sections", "", MOD_KEY.none, panel_inspector_section_expand_all ).setMenu("inspector_expand_all_sections") + registerFunction("Inspector", "Collapse All Sections", "", MOD_KEY.none, panel_inspector_section_collapse_all ).setMenu("inspector_collapse_all_sections") + + registerFunction("Inspector", "Reset", "", MOD_KEY.none, panel_inspector_reset ).setMenu("inspector_reset") + registerFunction("Inspector", "Add", "", MOD_KEY.none, panel_inspector_add ).setMenu("inspector_add") + registerFunction("Inspector", "Remove", "", MOD_KEY.none, panel_inspector_remove ).setMenu("inspector_remove") + registerFunction("Inspector", "Combine Axis", "", MOD_KEY.none, panel_inspector_axis_combine ).setMenu("inspector_combine_axis") + registerFunction("Inspector", "Separate Axis", "", MOD_KEY.none, panel_inspector_axis_separate ).setMenu("inspector_separate_axis") + registerFunction("Inspector", "Use Expression", "", MOD_KEY.none, panel_inspector_use_expression ).setMenu("inspector_use_expression") + registerFunction("Inspector", "Disable Expression", "", MOD_KEY.none, panel_inspector_disable_expression ).setMenu("inspector_disable_expression") + registerFunction("Inspector", "Extract Value", "", MOD_KEY.none, panel_inspector_extract_single ).setMenu("inspector_extract_value") + + __fnGroupInit_Inspector(); + } + + function __fnGroupInit_Inspector() { + var _clrs = COLORS.labels; + var _item = array_create(array_length(_clrs)); + + for( var i = 0, n = array_length(_clrs); i < n; i++ ) { + _item[i] = [ + [ THEME.timeline_color, i > 0, _clrs[i] ], + function(_data) { PANEL_INSPECTOR.setSelectingItemColor(_data.color); }, "", { color: i == 0? -1 : _clrs[i] } + ]; + } + + array_push(_item, [ + [ THEME.timeline_color, 2 ], + function(_data) { colorSelectorCall(PANEL_INSPECTOR.__dialog_junction? PANEL_INSPECTOR.__dialog_junction.color : c_white, PANEL_INSPECTOR.setSelectingItemColor); } + ]); + + MENU_ITEMS.inspector_group_set_color = menuItemGroup(__txt("Color"), _item, ["Inspector", "Set Color"]).setSpacing(ui(24)); + registerFunction("Inspector", "Set Color", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.inspector_group_set_color ]); }); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + } #endregion function Inspector_Custom_Renderer(drawFn, registerFn = noone) : widget() constructor { @@ -57,27 +82,27 @@ function Inspector_Custom_Renderer(drawFn, registerFn = noone) : widget() constr static toString = function() { return $"Custon renderer"; } } -function Inspector_Sprite(spr) constructor { self.spr = spr; } +function Inspector_Sprite(spr) constructor { self.spr = spr; } function Inspector_Spacer(height, line = false) constructor { self.h = height; self.line = line; } function Inspector_Label( text, font = f_p3) constructor { self.text = text; self.font = font; } function Panel_Inspector() : PanelContent() constructor { #region ---- main ---- context_str = "Inspector"; - title = __txt("Inspector"); - icon = THEME.panel_inspector_icon; + title = __txt("Inspector"); + icon = THEME.panel_inspector_icon; w = ui(400); h = ui(640); min_w = ui(160); - locked = false; + locked = false; focusable = true; - inspecting = noone; + inspecting = noone; inspectings = []; inspectGroup = false; - top_bar_h = ui(100); + top_bar_h = ui(100); static initSize = function() { content_w = w - ui(32); @@ -89,18 +114,17 @@ function Panel_Inspector() : PanelContent() constructor { #endregion #region ---- properties ---- - prop_hover = noone; + prop_hover = noone; prop_selecting = noone; prop_highlight = noone; prop_highlight_time = 0; - prop_dragging = noone; - prop_sel_drag_x = 0; - prop_sel_drag_y = 0; + prop_dragging = noone; + prop_sel_drag_x = 0; + prop_sel_drag_y = 0; - color_picking = false; - + color_picking = false; picker_index = 0; picker_change = false; @@ -111,21 +135,21 @@ function Panel_Inspector() : PanelContent() constructor { drawWidgetInit(); #region ---- header labels ---- - tb_node_name = new textBox(TEXTBOX_INPUT.text, function(txt) /*=>*/ { if(inspecting) inspecting.setDisplayName(txt); }); - - tb_prop_filter = new textBox(TEXTBOX_INPUT.text, function(txt) /*=>*/ { filter_text = txt; }); - tb_prop_filter.no_empty = false; - tb_prop_filter.auto_update = true; - tb_prop_filter.font = f_p0; - tb_prop_filter.color = COLORS._main_text_sub; - tb_prop_filter.align = fa_center; - tb_prop_filter.hide = true; + tb_node_name = new textBox(TEXTBOX_INPUT.text, function(txt) /*=>*/ { if(inspecting) inspecting.setDisplayName(txt); }); + + tb_prop_filter = new textBox(TEXTBOX_INPUT.text, function(txt) /*=>*/ { filter_text = txt; }); + tb_prop_filter.no_empty = false; + tb_prop_filter.auto_update = true; + tb_prop_filter.font = f_p0; + tb_prop_filter.color = COLORS._main_text_sub; + tb_prop_filter.align = fa_center; + tb_prop_filter.hide = true; filter_text = ""; - prop_page_button = new buttonGroup([ "Properties", "Settings", THEME.message_16 ], function(val) /*=>*/ { prop_page = val; }); - prop_page_button.buttonSpr = [ THEME.button_hide_left, THEME.button_hide_middle, THEME.button_hide_right ]; + prop_page_button = new buttonGroup([ "Properties", "Settings", THEME.message_16 ], function(val) /*=>*/ { prop_page = val; }); + prop_page_button.buttonSpr = [ THEME.button_hide_left, THEME.button_hide_middle, THEME.button_hide_right ]; prop_page_button.font = f_p2; - prop_page_button.fColor = COLORS._main_text_sub; + prop_page_button.fColor = COLORS._main_text_sub; prop_page = 0; #endregion @@ -186,13 +210,13 @@ function Panel_Inspector() : PanelContent() constructor { nodeCollapseAll(inspectings[i]); } - function junction_reset() { if(__dialog_junction == noone) return; __dialog_junction.resetValue(); } + function junction_reset() { if(__dialog_junction == noone) return; __dialog_junction.resetValue(); } function junction_add() { if(__dialog_junction == noone) return; __dialog_junction.setAnim(true); } - function junction_remove() { if(__dialog_junction == noone) return; __dialog_junction.setAnim(false); } + function junction_remove() { if(__dialog_junction == noone) return; __dialog_junction.setAnim(false); } function junction_axis_combine() { if(__dialog_junction == noone) return; __dialog_junction.sep_axis = false; } - function junction_axis_separate() { if(__dialog_junction == noone) return; __dialog_junction.sep_axis = true; } + function junction_axis_separate() { if(__dialog_junction == noone) return; __dialog_junction.sep_axis = true; } function junction_use_expression() { if(__dialog_junction == noone) return; __dialog_junction.expUse = true; } - function junction_disable_expression() { if(__dialog_junction == noone) return; __dialog_junction.expUse = false; } + function junction_disable_expression() { if(__dialog_junction == noone) return; __dialog_junction.expUse = false; } function junction_extract_single() { if(__dialog_junction == noone) return; __dialog_junction.extractNode(); } group_menu = [ @@ -223,27 +247,7 @@ function Panel_Inspector() : PanelContent() constructor { _val_to[i].setColor(color); } - var _clrs = COLORS.labels; - var _item = array_create(array_length(_clrs)); - - for( var i = 0, n = array_length(_clrs); i < n; i++ ) { - _item[i] = [ - [ THEME.timeline_color, i > 0, _clrs[i] ], - function(_data) { - setSelectingItemColor(_data.color); - }, "", { color: i == 0? -1 : _clrs[i] } - ]; - } - - array_push(_item, [ - [ THEME.timeline_color, 2 ], - function(_data) { - colorSelectorCall(__dialog_junction? __dialog_junction.color : c_white, setSelectingItemColor); - } - ]); - - menu_junc_color = menuItemGroup(__txt("Color"), _item); - menu_junc_color.spacing = ui(24); + menu_junc_color = MENU_ITEMS.inspector_group_set_color; #endregion function setInspecting(inspecting, _lock = false, _focus = true) { diff --git a/scripts/panel_menu/panel_menu.gml b/scripts/panel_menu/panel_menu.gml index 6d581fdf2..3e7e64b76 100644 --- a/scripts/panel_menu/panel_menu.gml +++ b/scripts/panel_menu/panel_menu.gml @@ -67,6 +67,7 @@ registerFunction("", "Reload theme", vk_f10, MOD_KEY.ctrl | MOD_KEY.shift, global_theme_reload ).setMenu("reload_theme", ) } + #endregion function Panel_Menu() : PanelContent() constructor { @@ -165,11 +166,7 @@ function Panel_Menu() : PanelContent() constructor { [ __txt("Preview"), [ MENU_ITEMS.preview_focus_content, MENU_ITEMS.preview_save_current_frame, - menuItemGroup(__txtx("panel_menu_preview_background", "Preview background"), [ - [ s_preview_transparent, function() { PANEL_PREVIEW.canvas_bg = -1; } ], - [ s_preview_white, function() { PANEL_PREVIEW.canvas_bg = c_white; } ], - [ s_preview_black, function() { PANEL_PREVIEW.canvas_bg = c_black; } ], - ]), + MENU_ITEMS.preview_group_preview_bg, ]], [ __txt("Animation"), [ diff --git a/scripts/panel_preview/panel_preview.gml b/scripts/panel_preview/panel_preview.gml index 04d4f8be5..915b2f746 100644 --- a/scripts/panel_preview/panel_preview.gml +++ b/scripts/panel_preview/panel_preview.gml @@ -1,4 +1,37 @@ #region funtion calls + + function panel_preview_focus_content() { CALL("preview_focus_content"); PANEL_PREVIEW.fullView(); } + function panel_preview_save_current_frame() { CALL("preview_save_current_frame"); PANEL_PREVIEW.saveCurrentFrame(); } + function panel_preview_saveCurrentFrameToFocus() { CALL("preview_save_to_focused_file"); PANEL_PREVIEW.saveCurrentFrameToFocus(); } + function panel_preview_save_all_current_frame() { CALL("preview_save_all_current_frame"); PANEL_PREVIEW.saveAllCurrentFrames(); } + function panel_preview_preview_window() { CALL("preview_preview_window"); PANEL_PREVIEW.create_preview_window(PANEL_PREVIEW.getNodePreview()); } + function panel_preview_toggle_grid() { CALL("preview_toggle_grid"); PROJECT.previewGrid.show = !PROJECT.previewGrid.show; } + + function panel_preview_pan() { CALL("preview_pan"); PANEL_PREVIEW.canvas_dragging_key = true; } + function panel_preview_zoom() { CALL("preview_zoom"); PANEL_PREVIEW.canvas_zooming_key = true; } + + function panel_preview_3d_view_front() { CALL("preview_3d_front_view"); PANEL_PREVIEW.d3_view_action_front(); } + function panel_preview_3d_view_back() { CALL("preview_3d_back_view"); PANEL_PREVIEW.d3_view_action_back(); } + function panel_preview_3d_view_right() { CALL("preview_3d_right_view"); PANEL_PREVIEW.d3_view_action_right(); } + function panel_preview_3d_view_left() { CALL("preview_3d_left_view"); PANEL_PREVIEW.d3_view_action_left(); } + function panel_preview_3d_view_top() { CALL("preview_3d_top_view"); PANEL_PREVIEW.d3_view_action_top(); } + function panel_preview_3d_view_bottom() { CALL("preview_3d_bottom_view"); PANEL_PREVIEW.d3_view_action_bottom(); } + + function panel_preview_set_zoom(zoom) { CALL("preview_preview_set_zoom"); PANEL_PREVIEW.fullView(zoom); } + + function panel_preview_set_tile_off() { CALL("preview_set_tile_off"); PANEL_PREVIEW.set_tile_off(); } + function panel_preview_set_tile_horizontal() { CALL("preview_set_tile_horizontal"); PANEL_PREVIEW.set_tile_horizontal(); } + function panel_preview_set_tile_vertical() { CALL("preview_set_tile_vertical"); PANEL_PREVIEW.set_tile_vertical(); } + function panel_preview_set_tile_both() { CALL("preview_set_tile_both"); PANEL_PREVIEW.set_tile_both(); } + function panel_preview_set_tile_toggle() { CALL("preview_set_tile_toggle"); PANEL_PREVIEW.set_tile_toggle(); } + + function panel_preview_new_preview_window() { CALL("preview_new_preview_window"); PANEL_PREVIEW.new_preview_window(); } + function panel_preview_saveCurrentFrame() { CALL("preview_saveCurrentFrame"); PANEL_PREVIEW.saveCurrentFrame(); } + function panel_preview_saveAllCurrentFrames() { CALL("preview_saveAllCurrentFrames"); PANEL_PREVIEW.saveAllCurrentFrames(); } + function panel_preview_copyCurrentFrame() { CALL("preview_copyCurrentFrame"); PANEL_PREVIEW.copyCurrentFrame(); } + 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 __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") @@ -34,40 +67,19 @@ registerFunction("Preview", "Copy Current Frame", "", MOD_KEY.none, panel_preview_copyCurrentFrame ).setMenu("preview_copy_current_frame", THEME.copy) 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") + + __fnGroupInit_Preview(); } - function panel_preview_focus_content() { CALL("preview_focus_content"); PANEL_PREVIEW.fullView(); } - function panel_preview_save_current_frame() { CALL("preview_save_current_frame"); PANEL_PREVIEW.saveCurrentFrame(); } - function panel_preview_saveCurrentFrameToFocus() { CALL("preview_save_to_focused_file"); PANEL_PREVIEW.saveCurrentFrameToFocus(); } - function panel_preview_save_all_current_frame() { CALL("preview_save_all_current_frame"); PANEL_PREVIEW.saveAllCurrentFrames(); } - function panel_preview_preview_window() { CALL("preview_preview_window"); PANEL_PREVIEW.create_preview_window(PANEL_PREVIEW.getNodePreview()); } - function panel_preview_toggle_grid() { CALL("preview_toggle_grid"); PROJECT.previewGrid.show = !PROJECT.previewGrid.show; } - - function panel_preview_pan() { CALL("preview_pan"); PANEL_PREVIEW.canvas_dragging_key = true; } - function panel_preview_zoom() { CALL("preview_zoom"); PANEL_PREVIEW.canvas_zooming_key = true; } - - function panel_preview_3d_view_front() { CALL("preview_3d_front_view"); PANEL_PREVIEW.d3_view_action_front(); } - function panel_preview_3d_view_back() { CALL("preview_3d_back_view"); PANEL_PREVIEW.d3_view_action_back(); } - function panel_preview_3d_view_right() { CALL("preview_3d_right_view"); PANEL_PREVIEW.d3_view_action_right(); } - function panel_preview_3d_view_left() { CALL("preview_3d_left_view"); PANEL_PREVIEW.d3_view_action_left(); } - function panel_preview_3d_view_top() { CALL("preview_3d_top_view"); PANEL_PREVIEW.d3_view_action_top(); } - function panel_preview_3d_view_bottom() { CALL("preview_3d_bottom_view"); PANEL_PREVIEW.d3_view_action_bottom(); } - - function panel_preview_set_zoom(zoom) { CALL("preview_preview_set_zoom"); PANEL_PREVIEW.fullView(zoom); } - - function panel_preview_set_tile_off() { CALL("preview_set_tile_off"); PANEL_PREVIEW.set_tile_off(); } - function panel_preview_set_tile_horizontal() { CALL("preview_set_tile_horizontal"); PANEL_PREVIEW.set_tile_horizontal(); } - function panel_preview_set_tile_vertical() { CALL("preview_set_tile_vertical"); PANEL_PREVIEW.set_tile_vertical(); } - function panel_preview_set_tile_both() { CALL("preview_set_tile_both"); PANEL_PREVIEW.set_tile_both(); } - function panel_preview_set_tile_toggle() { CALL("preview_set_tile_toggle"); PANEL_PREVIEW.set_tile_toggle(); } - - function panel_preview_new_preview_window() { CALL("preview_new_preview_window"); PANEL_PREVIEW.new_preview_window(); } - function panel_preview_saveCurrentFrame() { CALL("preview_saveCurrentFrame"); PANEL_PREVIEW.saveCurrentFrame(); } - function panel_preview_saveAllCurrentFrames() { CALL("preview_saveAllCurrentFrames"); PANEL_PREVIEW.saveAllCurrentFrames(); } - function panel_preview_copyCurrentFrame() { CALL("preview_copyCurrentFrame"); PANEL_PREVIEW.copyCurrentFrame(); } - 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 __fnGroupInit_Preview() { + MENU_ITEMS.preview_group_preview_bg = menuItemGroup(__txtx("panel_menu_preview_background", "Preview background"), [ + [ s_preview_transparent, function() { PANEL_PREVIEW.canvas_bg = -1; } ], + [ s_preview_white, function() { PANEL_PREVIEW.canvas_bg = c_white; } ], + [ s_preview_black, function() { PANEL_PREVIEW.canvas_bg = c_black; } ], + ], ["Preview", "Background"]); + registerFunction("Preview", "Background", "", MOD_KEY.none, function() /*=>*/ { menuCall("", [ MENU_ITEMS.menu_group_preview_bg ]); }); + + } #endregion function Panel_Preview() : PanelContent() constructor { @@ -2130,6 +2142,8 @@ function Panel_Preview() : PanelContent() constructor { MENU_ITEMS.preview_copy_current_frame, MENU_ITEMS.preview_copy_color, MENU_ITEMS.preview_copy_color_hex, + -1, + MENU_ITEMS.preview_group_preview_bg, ], 0, 0, fa_left, getNodePreview()); }