diff --git a/datafiles/data/Theme.zip b/datafiles/data/Theme.zip index 9ab3e0c9a..6938c7fd4 100644 Binary files a/datafiles/data/Theme.zip and b/datafiles/data/Theme.zip differ diff --git a/scripts/buttonGroup/buttonGroup.gml b/scripts/buttonGroup/buttonGroup.gml index de0255d4b..2796a9af4 100644 --- a/scripts/buttonGroup/buttonGroup.gml +++ b/scripts/buttonGroup/buttonGroup.gml @@ -62,44 +62,64 @@ function buttonGroup(_data, _onClick) : widget() constructor { current_selecting = array_safe_get_fast(current_selecting, 0); hovering = hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h); - var amo = array_length(data); - var ww = _w / amo; + var amo = array_length(data); + var _tw = _w; + var _mx = false, _t = 0; + var _sw = _h + ui(8); + var tamo = amo; var total_width = 0; draw_set_font(font); for(var i = 0; i < amo; i++) { - if(is_string(data[i])) - total_width += string_width(data[i]) + ui(32); + var _d = data[i]; + + if(is_string(_d)) { + _t = 1; + total_width += ui(32) + string_width(_d); + + } else if(sprite_exists(_d)) { + if(_t) _mx = true; + if(_mx) tamo--; + + total_width += _sw; + _tw -= _sw; + } } display_button = total_width < _w; + var ww = (_mx? _tw : _w) / tamo; if(display_button) { var bx = _x; var draw_sel = noone; for(var i = 0; i < amo; i++) { + var _d = data[i]; + buttons[i].setFocusHover(active, hover); buttons[i].tooltip = array_safe_get(tooltips, i, ""); + var bww = !is_string(_d) && sprite_exists(_d) && _mx? _sw : ww; var spr = i == 0 ? buttonSpr[0] : (i == amo - 1? buttonSpr[2] : buttonSpr[1]); if(_selecting == i) { - draw_sprite_stretched(spr, 2, floor(bx), _y, ceil(ww), _h); + draw_sprite_stretched(spr, 2, floor(bx), _y, ceil(bww), _h); draw_sel = [spr, bx]; } else { - buttons[i].draw(floor(bx), _y, ceil(ww), _h, _m, spr); + buttons[i].draw(floor(bx), _y, ceil(bww), _h, _m, spr); if(buttons[i].clicked) onClick(i); } if(is_string(data[i])) { draw_set_text(font, fa_center, fa_center, fColor); - draw_text(bx + ww / 2, _y + _h / 2, data[i]); + draw_text_add(bx + bww / 2, _y + _h / 2, data[i]); + } else if(sprite_exists(data[i])) { - draw_sprite_ui_uniform(data[i], i, bx + ww / 2, _y + _h / 2); + draw_sprite_ui_uniform(data[i], i, bx + bww / 2, _y + _h / 2, 1); + } - bx += ww; + bx += bww; } if(draw_sel != noone) diff --git a/scripts/node_3d_mesh_export/node_3d_mesh_export.gml b/scripts/node_3d_mesh_export/node_3d_mesh_export.gml index fb5bd3ecd..3537a6286 100644 --- a/scripts/node_3d_mesh_export/node_3d_mesh_export.gml +++ b/scripts/node_3d_mesh_export/node_3d_mesh_export.gml @@ -162,7 +162,10 @@ function Node_3D_Mesh_Export(_x, _y, _group = noone) : Node(_x, _y, _group) cons file_text_write_all( _path, _obj); if(_mat) file_text_write_all(_mtlPath, _mtl); - var noti = log_message("EXPORT", $"Export model complete.", THEME.noti_icon_tick, COLORS._main_value_positive, false); + var _txt = $"Export model complete."; + logNode(_txt); + + var noti = log_message("EXPORT", _txt, THEME.noti_icon_tick, COLORS._main_value_positive, false); noti.path = filename_dir(_path); noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); } diff --git a/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml b/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml index 33f2f7060..b82221c48 100644 --- a/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml +++ b/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml @@ -140,7 +140,10 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) // print(txt); var span = max(abs(obj_raw.model_size.x), abs(obj_raw.model_size.y), abs(obj_raw.model_size.z)); - if(span > 10) noti_warning($"The model is tool large to display properly ({span}u). Scale the model down to preview."); + if(span > 10) { + var _txt = $"The model is tool large to display properly ({span}u). Scale the model down to preview."; + logNode(_txt); noti_warning(_txt); + } if(object != noone) object.destroy(); @@ -171,8 +174,10 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) var _ord = array_find(materialNames, _mat); materialIndex[i] = _ord; } - } else - noti_warning("Load mtl error: Material amount defined in .mtl file not match the .obj file.") + } else { + var _txt = "Load mtl error: Material amount defined in .mtl file not match the .obj file."; + logNode(_txt); noti_warning(_txt); + } } array_resize(input_display_list, input_display_len); diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index c340e6399..ffb72fdcb 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -306,7 +306,14 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { #endregion #region ---- log ---- - messages = []; + messages = [ ]; + messages_bub = false; + + static logNode = function(text) { + var _time = $"{string_lead_zero(current_hour, 2)}:{string_lead_zero(current_minute, 2)}.{string_lead_zero(current_second, 2)}"; + messages_bub = true; + array_push(messages, [ _time, text ]); + } #endregion #region ---- serialization ---- @@ -2074,7 +2081,9 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { var _data_length = load_map.data_length; var _dynamic_inputs = (array_length(load_map.inputs) - _input_fix_len) / _data_length; if(frac(_dynamic_inputs) != 0) { - noti_warning("LOAD: Uneven dynamic input."); + var _txt = "LOAD: Uneven dynamic input."; + logNode(_txt); noti_warning(_txt); + _dynamic_inputs = ceil(_dynamic_inputs); } diff --git a/scripts/node_directory_search/node_directory_search.gml b/scripts/node_directory_search/node_directory_search.gml index 080dc36b6..2e47287be 100644 --- a/scripts/node_directory_search/node_directory_search.gml +++ b/scripts/node_directory_search/node_directory_search.gml @@ -71,7 +71,8 @@ function Node_Directory_Search(_x, _y, _group = noone) : Node(_x, _y, _group) co pathObj.spr = sprite_add(path, 1, false, false, 0, 0); if(pathObj.spr == -1) { - noti_warning($"Image node: File not a valid image."); + var _txt = $"Image node: File not a valid image."; + logNode(_txt); noti_warning(_txt); break; } @@ -105,7 +106,8 @@ function Node_Directory_Search(_x, _y, _group = noone) : Node(_x, _y, _group) co var _paths = path_dir_get_files(path, filter, recurs); if(array_empty(_paths)) { - noti_warning("Directory Search: Empty search results.") + var _txt = "Directory Search: Empty search results."; + logNode(_txt); noti_warning(_txt); return; } diff --git a/scripts/node_export/node_export.gml b/scripts/node_export/node_export.gml index 812a71e92..5c60aaa1a 100644 --- a/scripts/node_export/node_export.gml +++ b/scripts/node_export/node_export.gml @@ -590,7 +590,10 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor } if(exportLog && form != NODE_EXPORT_FORMAT.animation && !IS_CMD) { - var noti = log_message("EXPORT", $"Export {array_length(surf)} images complete.", THEME.noti_icon_tick, COLORS._main_value_positive, false); + var _txt = $"Export {array_length(surf)} images complete."; + logNode(_txt); + + var noti = log_message("EXPORT", _txt, THEME.noti_icon_tick, COLORS._main_value_positive, false); noti.path = filename_dir(p); noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); @@ -611,7 +614,10 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor p = save_surface(surf, p); if(exportLog && form != NODE_EXPORT_FORMAT.animation && !IS_CMD) { - var noti = log_message("EXPORT", $"Export image as {p}", THEME.noti_icon_tick, COLORS._main_value_positive, false); + var _txt = $"Export image as {p}"; + logNode(_txt); + + var noti = log_message("EXPORT", _txt, THEME.noti_icon_tick, COLORS._main_value_positive, false); noti.path = filename_dir(p); noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); diff --git a/scripts/node_image/node_image.gml b/scripts/node_image/node_image.gml index 425940af4..36f2ecf97 100644 --- a/scripts/node_image/node_image.gml +++ b/scripts/node_image/node_image.gml @@ -73,7 +73,8 @@ function Node_Image(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { var _spr = sprite_add(path, 1, false, false, 0, 0); if(_spr == -1) { - noti_warning($"Image node: File not a valid image."); + var _txt = $"Image node: File not a valid image."; + logNode(_txt); noti_warning(_txt); break; } diff --git a/scripts/node_image_animated/node_image_animated.gml b/scripts/node_image_animated/node_image_animated.gml index 9de59b3a9..a1e002951 100644 --- a/scripts/node_image_animated/node_image_animated.gml +++ b/scripts/node_image_animated/node_image_animated.gml @@ -133,7 +133,8 @@ function Node_Image_Animated(_x, _y, _group = noone) : Node(_x, _y, _group) cons var _spr = sprite_add(_path, 1, false, false, 0, 0); if(_spr == -1) { - noti_warning($"Image node: File not a valid image."); + var _txt = $"Image node: File not a valid image."; + logNode(_txt); noti_warning(_txt); return false; } diff --git a/scripts/node_image_sequence/node_image_sequence.gml b/scripts/node_image_sequence/node_image_sequence.gml index 620fb93fb..aa6eba8f6 100644 --- a/scripts/node_image_sequence/node_image_sequence.gml +++ b/scripts/node_image_sequence/node_image_sequence.gml @@ -123,7 +123,8 @@ function Node_Image_Sequence(_x, _y, _group = noone) : Node(_x, _y, _group) cons var _spr = sprite_add_map(path); if(_spr == -1) { - noti_warning($"Image node: File not a valid image."); + var _txt = $"Image node: File not a valid image."; + logNode(_txt); noti_warning(_txt); return false; } diff --git a/scripts/node_iterate_filter/node_iterate_filter.gml b/scripts/node_iterate_filter/node_iterate_filter.gml index 6357c1e43..0a696e189 100644 --- a/scripts/node_iterate_filter/node_iterate_filter.gml +++ b/scripts/node_iterate_filter/node_iterate_filter.gml @@ -38,12 +38,14 @@ function Node_Iterate_Filter(_x, _y, _group = noone) : Node_Iterator(_x, _y, _gr } if(_int == noone) { - noti_warning("Filter Array: Input node not found."); + var _txt = "Filter Array: Input node not found."; + logNode(_txt); noti_warning(_txt); return; } if(_oup == noone) { - noti_warning("Filter Array: Output node not found."); + var _txt = "Filter Array: Output node not found."; + logNode(_txt); noti_warning(_txt); return; } diff --git a/scripts/node_iterate_sort/node_iterate_sort.gml b/scripts/node_iterate_sort/node_iterate_sort.gml index 496a25b03..2974b3429 100644 --- a/scripts/node_iterate_sort/node_iterate_sort.gml +++ b/scripts/node_iterate_sort/node_iterate_sort.gml @@ -91,7 +91,8 @@ function Node_Iterate_Sort(_x, _y, _group = noone) : Node_Collection(_x, _y, _gr nodeValid = inputReady == 0b111; if(!nodeValid) { - noti_warning($"Array sort: Missing inputs or output, need 2 inputs and 1 output for comparison [{inputReady}]."); + var _txt = $"Array sort: Missing inputs or output, need 2 inputs and 1 output for comparison [{inputReady}]."; + logNode(_txt); noti_warning(_txt); return; } } diff --git a/scripts/node_pack_sprites/node_pack_sprites.gml b/scripts/node_pack_sprites/node_pack_sprites.gml index 0d7f4a098..1352c3231 100644 --- a/scripts/node_pack_sprites/node_pack_sprites.gml +++ b/scripts/node_pack_sprites/node_pack_sprites.gml @@ -97,8 +97,10 @@ function Node_Pack_Sprites(_x, _y, _group = noone) : Node(_x, _y, _group) constr var rect = pack[1]; var atlas = []; - if(array_length(rect) < array_length(_rects)) - noti_warning($"Not enought space, packed {array_length(rect)} out of {array_length(_rects)} images."); + if(array_length(rect) < array_length(_rects)) { + var _txt = $"Not enought space, packed {array_length(rect)} out of {array_length(_rects)} images."; + logNode(_txt); noti_warning(_txt); + } var _surf = outputs[| 0].getValue(); _surf = surface_verify(_surf, area.w, area.h, surface_get_format(_inpt[0])); diff --git a/scripts/node_path_l_system/node_path_l_system.gml b/scripts/node_path_l_system/node_path_l_system.gml index 5b65d2a9e..367ab1e52 100644 --- a/scripts/node_path_l_system/node_path_l_system.gml +++ b/scripts/node_path_l_system/node_path_l_system.gml @@ -242,7 +242,8 @@ function Node_Path_L_System(_x, _y, _group = noone) : Node(_x, _y, _group) const cache_data.result = _temp_s; if(string_length(cache_data.result) > attributes.rule_length_limit) { - noti_warning($"L System: Rules length limit ({attributes.rule_length_limit}) reached."); + var _txt = $"L System: Rules length limit ({attributes.rule_length_limit}) reached."; + logNode(_txt); noti_warning(_txt); break; } } diff --git a/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml b/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml index 1af568d9a..a695eb172 100644 --- a/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml +++ b/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml @@ -229,7 +229,10 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group) var _sy = py; curr_w = curr_w == -1? _w : curr_w; curr_h = curr_h == -1? _h : curr_h; - if(curr_w != _w || curr_h != _h) noti_warning("Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."); + if(curr_w != _w || curr_h != _h) { + var _txt = "Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."; + logNode(_txt); noti_warning(_txt); + } switch(alig) { case 1 : _sy = py + (hh - _h) / 2; break; @@ -252,7 +255,10 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group) var _sy = py; curr_w = curr_w == -1? _w : curr_w; curr_h = curr_h == -1? _h : curr_h; - if(curr_w != _w || curr_h != _h) noti_warning("Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."); + if(curr_w != _w || curr_h != _h) { + var _txt = "Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."; + logNode(_txt); noti_warning(_txt); + } switch(alig) { case 1 : _sx = px + (ww - _w) / 2; break; @@ -288,7 +294,10 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group) var _h = surface_get_height_safe(inpt[index]); curr_w = curr_w == -1? _w : curr_w; curr_h = curr_h == -1? _h : curr_h; - if(curr_w != _w || curr_h != _h) noti_warning("Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."); + if(curr_w != _w || curr_h != _h) { + var _txt = "Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."; + logNode(_txt); noti_warning(_txt); + } array_push(atlases, new SurfaceAtlas(inpt[index], px, py)); draw_surface_safe(inpt[index], px, py); @@ -485,7 +494,10 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group) var _w = surface_get_width_safe(_surfi); var _h = surface_get_height_safe(_surfi); - if(anim_curr_w != _w || anim_curr_h != _h) noti_warning("Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."); + if(anim_curr_w != _w || anim_curr_h != _h) { + var _txt = "Spritesheet node does not support different surfaces size. Use Stack, Image grid, or pack sprite."; + logNode(_txt); noti_warning(_txt); + } var px; var _sx = 0; diff --git a/scripts/node_spout_send/node_spout_send.gml b/scripts/node_spout_send/node_spout_send.gml index 64b9c116b..345339168 100644 --- a/scripts/node_spout_send/node_spout_send.gml +++ b/scripts/node_spout_send/node_spout_send.gml @@ -9,7 +9,10 @@ function Node_Spout_Send(_x, _y, _group = noone) : Node(_x, _y, _group) construc .setVisible(false); spoutIndex = spoutSenderInit(); - if(spoutIndex == noone) noti_warning("Spout initialize error"); + if(spoutIndex == noone) { + var _txt = "Spout initialize error"; + logNode(_txt); noti_warning(_txt); + } surf_buff = buffer_create(1, buffer_grow, 1); diff --git a/scripts/node_wav_file_write/node_wav_file_write.gml b/scripts/node_wav_file_write/node_wav_file_write.gml index 7a06fc782..65651239d 100644 --- a/scripts/node_wav_file_write/node_wav_file_write.gml +++ b/scripts/node_wav_file_write/node_wav_file_write.gml @@ -56,13 +56,15 @@ function Node_WAV_File_Write(_x, _y, _group = noone) : Node(_x, _y, _group) cons for( var i = 0; i < _chn; i++ ) { if(!is_array(data[i])) { - noti_warning("Audio Export: Malformed data. Expects 2D array [channel x number array]."); + var _txt = "Audio Export: Malformed data. Expects 2D array [channel x number array]."; + logNode(_txt); noti_warning(_txt); return; } var len = array_length(data[i]); if(_siz && _siz != len) { - noti_warning("Audio Export: Uneven sample per channel."); + var _txt = "Audio Export: Uneven sample per channel."; + logNode(_txt); noti_warning(_txt); return; } diff --git a/scripts/node_websocket_receiver/node_websocket_receiver.gml b/scripts/node_websocket_receiver/node_websocket_receiver.gml index 56034c86d..d9f856e7b 100644 --- a/scripts/node_websocket_receiver/node_websocket_receiver.gml +++ b/scripts/node_websocket_receiver/node_websocket_receiver.gml @@ -70,12 +70,16 @@ function Node_Websocket_Receiver(_x, _y, _group = noone) : Node(_x, _y, _group) switch(type) { case network_type_connect : - noti_status($"Websocket server: Client connected at port {port} on node {display_name}"); + var _txt = $"Websocket server: Client connected at port {port} on node {display_name}"; + logNode(_txt); noti_status(_txt); + connected_device++; break; case network_type_disconnect : - noti_status($"Websocket server: Client disconnected at port {port} on node {display_name}"); + var _txt = $"Websocket server: Client disconnected at port {port} on node {display_name}"; + logNode(_txt); noti_status(_txt); + connected_device--; break; diff --git a/scripts/node_websocket_sender/node_websocket_sender.gml b/scripts/node_websocket_sender/node_websocket_sender.gml index 98e70610d..52cfeadbe 100644 --- a/scripts/node_websocket_sender/node_websocket_sender.gml +++ b/scripts/node_websocket_sender/node_websocket_sender.gml @@ -35,7 +35,7 @@ function Node_Websocket_Sender(_x, _y, _group = noone) : Node(_x, _y, _group) co }) ]); static connectTo = function(newPort, newUrl, params) { #region - //print($"Connecting to {newUrl}:{newPort}"); + logNode($"Connecting to {newUrl}:{newPort}"); if(ds_map_exists(PORT_MAP, port)) array_remove(PORT_MAP[? port], self); @@ -48,7 +48,8 @@ function Node_Websocket_Sender(_x, _y, _group = noone) : Node(_x, _y, _group) co var socket = network_create_socket(network_socket_ws); if(socket < 0) { - noti_warning("Websocket sender: Fail to create new socket."); + var _txt = "Websocket sender: Fail to create new socket."; + logNode(_txt); noti_warning(_txt); return; } @@ -57,7 +58,7 @@ function Node_Websocket_Sender(_x, _y, _group = noone) : Node(_x, _y, _group) co callbackMap[$ _conId] = params; NETWORK_CLIENTS[? _conId] = socket; - //print($"Connecting to {newUrl}:{newPort} complete"); + logNode($"Connected to {newUrl}:{newPort}"); } #endregion setInspector(1, __txt("Resend"), [ THEME.refresh_icon, 1, COLORS._main_value_positive ], function() { triggerRender(); }); @@ -65,13 +66,17 @@ function Node_Websocket_Sender(_x, _y, _group = noone) : Node(_x, _y, _group) co static sendCall = function(ID, params) { var network = ds_map_try_get(NETWORK_CLIENTS, ID, noone); if(network < 0) { - noti_warning("Websocket sender: No client."); + var _txt = "Websocket sender: No client."; + logNode(_txt); noti_warning(_txt); return; } var content = params.content; - var res = network_send_raw(network, content, buffer_get_size(content), network_send_text); - if(res < 0) noti_warning("Websocket sender: Send error."); + var res = network_send_raw(network, content, buffer_get_size(content)); + if(res < 0) { + var _txt = "Websocket sender: Send error."; + logNode(_txt); noti_warning(_txt); + } } static asyncPackets = function(_async_load) { #region @@ -81,7 +86,9 @@ function Node_Websocket_Sender(_x, _y, _group = noone) : Node(_x, _y, _group) co var type = async_load[? "type"]; if(type == network_type_non_blocking_connect) { - noti_status($"Websocket sender: Connected at port {port} on node {display_name}"); + var _txt = $"Websocket sender: Connected at port {port} on node {display_name}"; + logNode(_txt); noti_status(_txt); + connected = true; var callBack = callbackMap[$ aid]; sendCall(aid, callBack); @@ -136,7 +143,6 @@ function Node_Websocket_Sender(_x, _y, _group = noone) : Node(_x, _y, _group) co var network = ds_map_try_get(NETWORK_CLIENTS, port, noone); var cc = CDEF.lime, aa = 1; - //if(network >= 0) cc = CDEF.lime; var _y0 = bbox.y0 + ui(16); var _y1 = bbox.y1 - ui(16); diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 4cb1363c6..6f3ff57e3 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -94,9 +94,9 @@ function Panel_Inspector() : PanelContent() constructor { tb_prop_filter.hide = true; filter_text = ""; - prop_page_button = new buttonGroup([ "Properties", "Settings" ], function(val) { prop_page = val; }); + 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_p1; + prop_page_button.font = f_p2; prop_page_button.fColor = COLORS._main_text_sub; prop_page = 0; #endregion @@ -505,7 +505,7 @@ function Panel_Inspector() : PanelContent() constructor { var xc = con_w / 2; - if(prop_page == 1) { #region attribute/settings editor + if(prop_page == 1) { // attribute/settings editor hh += ui(8); var hg = ui(32); var yy = _y + hh; @@ -557,7 +557,41 @@ function Panel_Inspector() : PanelContent() constructor { hh += _hg + ui(8); } return hh; - } #endregion + + } else if(prop_page == 2) { + var _logs = _inspecting.messages; + _inspecting.messages_bub = false; + var _tmw = ui(64); + var yy = _y; + var hh = ui(64); + + var con_w = contentPane.surface_w; + var con_h = contentPane.surface_h - yy; + + draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, 0, yy, con_w, con_h, COLORS._main_icon); + yy += ui(8); + + for (var i = 0, n = array_length(_logs); i < n; i++) { + var _log = _logs[i]; + + var _time = _log[0]; + var _text = _log[1]; + + draw_set_text(f_p3, fa_left, fa_top, COLORS._main_text_sub); + var _hg = string_height_ext(_text, -1, con_w - _tmw - ui(10 + 8)) + ui(4); + if(i % 2) draw_sprite_stretched_ext(THEME.ui_panel_bg, 4, ui(4), yy, con_w - ui(8), _hg, CDEF.main_dkblack, 0.25); + + draw_text_add(ui(10), yy + ui(2), _time); + + draw_set_color(COLORS._main_text); + draw_text_ext_add(_tmw + ui(10), yy + ui(2), _text, -1, con_w - _tmw - ui(10 + 8)); + + yy += _hg; + hh += _hg; + } + + return hh; + } var color_picker_index = 0; var pickers = []; @@ -857,8 +891,9 @@ function Panel_Inspector() : PanelContent() constructor { if(inspecting == noone) return drawMeta(_y, _m); + prop_page_button.data[2] = inspecting.messages_bub? THEME.message_16_grey_bubble : THEME.message_16_grey; prop_page_button.setFocusHover(pFOCUS, pHOVER); - prop_page_button.draw(ui(32), _y + ui(4), contentPane.w - ui(76), ui(28), prop_page, _m, x + contentPane.x, y + contentPane.y); + prop_page_button.draw(ui(32), _y + ui(4), contentPane.w - ui(76), ui(24), prop_page, _m, x + contentPane.x, y + contentPane.y); var _hh = ui(40); _y += _hh; diff --git a/scripts/wav_file_read/wav_file_read.gml b/scripts/wav_file_read/wav_file_read.gml index e543349ab..5dce0f16a 100644 --- a/scripts/wav_file_read/wav_file_read.gml +++ b/scripts/wav_file_read/wav_file_read.gml @@ -89,6 +89,8 @@ function file_read_wav(path) { content.packet = bits; printIf(global.FLAG.wav_import, debug_str); + logNode(debug_str); + print($"Reading buffer {bits} pack from data length {l} with remaining data {_buffer_left}"); return content;